diff options
author | Chris Larson <clarson@kergoth.com> | 2004-12-09 09:47:41 +0000 |
---|---|---|
committer | Chris Larson <clarson@kergoth.com> | 2004-12-09 09:47:41 +0000 |
commit | 2c5b8ec6d95cf68650265941530e5ce38c8dd6d9 (patch) | |
tree | bf879bea7ef8517ba8c3d1286ef300401d3d484c /usbutils | |
parent | 101e2f1623def0a355d20aacb8bd93810703e834 (diff) |
Merge oe-devel@oe-devel.bkbits.net:openembedded
into hyperion.kergoth.com:/home/kergoth/code/openembedded
2004/12/09 03:39:39-06:00 kergoth.com!kergoth
Break people's builds again.. this time moving the packages into a packages/ subdir to clean things up a bit.
BKrev: 41b81f3dvlp3rU7_8MUXLcI8LDdDoA
Diffstat (limited to 'usbutils')
-rw-r--r-- | usbutils/usbutils-0.11+cvs20041108/usbutils-0.11+cvs20041108.patch | 7817 | ||||
-rw-r--r-- | usbutils/usbutils-0.11/configure.patch | 1121 | ||||
-rw-r--r-- | usbutils/usbutils_0.11+cvs20041108.bb | 0 | ||||
-rw-r--r-- | usbutils/usbutils_0.11.bb | 0 |
4 files changed, 0 insertions, 8938 deletions
diff --git a/usbutils/usbutils-0.11+cvs20041108/usbutils-0.11+cvs20041108.patch b/usbutils/usbutils-0.11+cvs20041108/usbutils-0.11+cvs20041108.patch deleted file mode 100644 index 1898eaef4b..0000000000 --- a/usbutils/usbutils-0.11+cvs20041108/usbutils-0.11+cvs20041108.patch +++ /dev/null @@ -1,7817 +0,0 @@ - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - ---- usbutils-0.11/ChangeLog~usbutils-0.11+cvs20041108 -+++ usbutils-0.11/ChangeLog -@@ -1,3 +1,30 @@ -+2004-10-20 David Brownell <dbrownell@users.sourceforge.net> -+ * lsusb.c: minor formatting updates; add a warning when those HID -+ descriptors aren't available. -+ -+2004-10-20 Aurelien Jarno <aurelien@aurel32.net> -+ * lsusb.c: bugfixes for reading HID descriptors -+ -+2004-10-15 David Brownell <dbrownell@users.sourceforge.net> -+ * lsusb.c: USB 2.0 updates for dual-speed and OTG devices, hubs. -+ Display all descriptors in the right sequence, and dump ones -+ we don't (yet) recognize. Minor cleanups. -+ * usb.ids: update to current version -+ -+2004-02-20 Thomas Sailer <sailer@eldrich.ee.ethz.ch> -+ Move to CVS at linux-usb.sf.net -+ Label as version 0.12. -+ -+2003-12-06 Aurelien Jarno <aurelien@aurel32.net> -+ Update Debian with libusb based version. -+ -+2003-08-31 David Brownell <dbrownell@users.sourceforge.net> -+ * lsusb.c: (against 0.11) recognize CDC descriptors, USB 2.0 updates, -+ string handling updates, -+ -+2003-??-?? Aurelien Jarno <aurelien@aurel32.net> -+ Convert to latest libusb, supporting BSD and Darwin. -+ - 2000-11-06 Thomas Sailer <sailer@eldrich.ee.ethz.ch> - - * names.c, lsusb.c: Fixup of Gunther Mayer's patch; do not export ---- usbutils-0.11/Makefile.am~usbutils-0.11+cvs20041108 -+++ usbutils-0.11/Makefile.am -@@ -1,19 +1,20 @@ --SUBDIRS = libusb -+SUBDIRS = - - INCLUDES = - - sbin_PROGRAMS = lsusb usbmodules -+sbin_SCRIPTS = update-usbids - --noinst_HEADERS = names.h usb.h usbdevice_fs.h devtree.h list.h usbmodules.h -+noinst_HEADERS = names.h usbdevice_fs.h devtree.h list.h usbmodules.h usbmisc.h - --lsusb_SOURCES = lsusb.c names.c devtree.c -+lsusb_SOURCES = lsusb.c names.c devtree.c usbmisc.c - lsusb_LDADD = @LIBOBJS@ - --usbmodules_SOURCES = usbmodules.c -+usbmodules_SOURCES = usbmodules.c usbmisc.c - usbmodules_LDADD = @LIBOBJS@ - - data_DATA = usb.ids - --man_MANS = lsusb.8 usbmodules.8 -+man_MANS = lsusb.8 usbmodules.8 update-usbids.8 - - EXTRA_DIST = $(man_MANS) $(data_DATA) usbutils.spec getopt.h getopt.c getopt1.c ---- usbutils-0.11/NEWS~usbutils-0.11+cvs20041108 -+++ usbutils-0.11/NEWS -@@ -1 +1,2 @@ --Created :) -+Thanks to a patch from Aurelien Jarno, usbutils now uses libusb to -+access USB devices ---- usbutils-0.11/configure.in~usbutils-0.11+cvs20041108 -+++ usbutils-0.11/configure.in -@@ -1,40 +1,75 @@ --AC_INIT(lsusb.c) --AC_CANONICAL_SYSTEM -+dnl Process this file with autoconf to produce a configure script. - --AM_INIT_AUTOMAKE(usbutils, 0.11) -+# Initialization -+AC_INIT(Makefile.am) - AM_CONFIG_HEADER(config.h) - --dnl AC_CHECK_TOOL() -+AM_INIT_AUTOMAKE(usbutils, 0.12) - --AC_PROG_MAKE_SET --AC_ISC_POSIX -+# determine the system type -+AC_CANONICAL_HOST -+ -+# build time sanity check... -+AM_SANITY_CHECK -+ -+# checks for programs - AC_PROG_CC --AM_PROG_CC_STDC --dnl AC_PROG_RANLIB -+AC_PROG_RANLIB -+AC_PROG_LN_S -+AC_PROG_INSTALL -+ -+# checks for header files -+AC_HEADER_STDC -+AC_CHECK_HEADERS(getopt.h sys/ioctl.h syslog.h errno.h) -+ -+# checks for typedefs, structures, and compiler characteristics - AC_C_CONST - AC_C_INLINE --AC_HEADER_STDC -+AC_STRUCT_TM - --AC_CHECK_PROG(RANLIB, ranlib, ranlib, :) --AC_CHECK_PROG(DLLTOOL, dlltool, dlltool, dlltool) --AC_CHECK_PROG(AS, as, as, as, as) --AC_CHECK_PROG(AR, ar, ar, ar, ar) -+# checks for library functions -+AC_CHECK_FUNCS([getopt_long],,[AC_LIBOBJ([getopt]) AC_LIBOBJ([getopt1])]) - --AC_CHECK_HEADERS(getopt.h sys/ioctl.h syslog.h errno.h linux/usb.h linux/usbdevice_fs.h) --AC_CHECK_FUNCS(getopt_long,,LIBOBJS="$LIBOBJS getopt.o getopt1.o") -+dnl checks for libusb-config -+AC_CHECK_PROG(LIBUSB_CONFIG, libusb-config, yes, no) -+if test "$LIBUSB_CONFIG" = "yes"; then -+ LIBUSB_LDFLAGS=`libusb-config --libs` -+ LIBUSB_CFLAGS=`libusb-config --cflags` -+ LIBUSB_VERSION=`libusb-config --version` -+else -+ AC_MSG_ERROR([libusb not found!]) -+fi -+ - - dnl set USBIDS_FILE in config.h. - if test "x${datadir}" = 'x${prefix}/share'; then - if test "x${prefix}" = "xNONE"; then -- AC_DEFINE_UNQUOTED(USBIDS_FILE, "${ac_default_prefix}/share/usb.ids") -+ AC_DEFINE_UNQUOTED(USBIDS_FILE, "${ac_default_prefix}/share/usb.ids", [location of usb.ids]) - else -- AC_DEFINE_UNQUOTED(USBIDS_FILE, "${prefix}/share/usb.ids") -+ AC_DEFINE_UNQUOTED(USBIDS_FILE, "${prefix}/share/usb.ids", [location of usb.ids]) - fi - else -- AC_DEFINE_UNQUOTED(USBIDS_FILE, "${datadir}/usb.ids") -+ AC_DEFINE_UNQUOTED(USBIDS_FILE, "${datadir}/usb.ids", [location of usb.ids]) - fi - --AC_CONFIG_SUBDIRS([libusb]) -+# some extra flags -+CFLAGS="$CFLAGS -Wall $LIBUSB_CFLAGS" -+LDFLAGS="$LDFLAGS $LIBUSB_LDFLAGS" -+ -+# pass flags -+AC_SUBST(CFLAGS) -+AC_SUBST(LDFLAGS) - --AC_SUBST(LIBOBJS) - AC_OUTPUT([Makefile]) -+ -+AC_MSG_RESULT([ -+ -+usbutils-$VERSION is now configured for $canonical_host_type -+ -+ Build: $build -+ Host: $host -+ Source directory: $srcdir -+ Installation prefix: $prefix -+ C compiler: $CC $CFLAGS -+ -+]) ---- usbutils-0.11/lsusb.8~usbutils-0.11+cvs20041108 -+++ usbutils-0.11/lsusb.8 -@@ -1,4 +1,4 @@ --.TH lsusb 8 "14 September 1999" "usbutils-0.9" "Linux USB Utilities" -+.TH lsusb 8 "19 November 2003" "usbutils-0.11" "Linux USB Utilities" - .IX lsusb - .SH NAME - lsusb \- list all USB devices -@@ -29,7 +29,7 @@ - Tells - .I lsusb - to be very verbose and display even more information (actually everything the --PCI device is able to tell). -+USB device is able to tell). - You must be root for this to work. - .TP - \fB\-s\fP [[\fIbus\fP]\fB:\fP][\fIdevnum\fP] -@@ -39,13 +39,9 @@ - .I devnum. - Both ID's are given in hexadecimal and may be omitted. - .TP --\fB\-d\fP \fIvendor\fP\fB:\fP[\fIproduct\fP] -+\fB\-d\fP [\fIvendor\fP]\fB:\fP[\fIproduct\fP] - Show only devices with the specified vendor and product ID. --Both ID's are given in hexadecimal; --the product ID may be omitted, but the vendor ID must be given. --.TP --.B \-p \fIprocpath\fP --Use another path instead of /proc/bus/usb. -+Both ID's are given in hexadecimal. - .TP - .B \-D \fIdevice\fP - Do not scan the /proc/bus/usb directory, -@@ -80,7 +76,7 @@ - - .SH FILES - .TP --.B /usr/share/usb.ids -+.B /usr/share/misc/usb.ids - A list of all known USB ID's (vendors, products, classes, subclasses and protocols). - .TP - .B /proc/bus/usb ---- usbutils-0.11/lsusb.c~usbutils-0.11+cvs20041108 -+++ usbutils-0.11/lsusb.c -@@ -3,7 +3,8 @@ - /* - * lsusb.c -- lspci like utility for the USB bus - * -- * Copyright (C) 1999, 2000, 2001 Thomas Sailer (sailer@ife.ee.ethz.ch) -+ * Copyright (C) 1999, 2000, 2001, 2003 -+ * Thomas Sailer (t.sailer@alumni.ethz.ch) - * - * 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 -@@ -24,57 +25,65 @@ - - /*****************************************************************************/ - -+#ifdef HAVE_CONFIG_H -+#include "config.h" -+#endif -+ - #include <sys/types.h> - #include <sys/stat.h> --#include <sys/ioctl.h> - #include <fcntl.h> --#include <dirent.h> - #include <string.h> - #include <errno.h> --#include <stdlib.h> --#include <unistd.h> - #include <stdio.h> - #include <stdarg.h> -- --#include <linux/types.h> --#ifdef HAVE_LINUX_USBDEVICE_FS_H --#include <linux/usbdevice_fs.h> --#else --#include "usbdevice_fs.h" --#endif --#ifdef HAVE_LINUX_USB_H --#include <linux/usb.h> --#else --#include "usb.h" --#endif -- --#ifdef HAVE_CONFIG_H --#include "config.h" --#endif -+#include <usb.h> - - #include "names.h" - #include "devtree.h" -+#include "usbmisc.h" - - #define _GNU_SOURCE - #include <getopt.h> - --#define CTRL_RETRIES 50 --#define CTRL_TIMEOUT 100 /* milliseconds */ - --#define USB_DT_CS_DEVICE 0x21 --#define USB_DT_CS_CONFIG 0x22 --#define USB_DT_CS_STRING 0x23 -+/* from USB 2.0 spec and updates */ -+#define USB_DT_DEVICE_QUALIFIER 0x06 -+#define USB_DT_OTHER_SPEED_CONFIG 0x07 -+#define USB_DT_OTG 0x09 -+#define USB_DT_DEBUG 0x0a -+#define USB_DT_INTERFACE_ASSOCIATION 0x0b -+ -+/* convention suggested by common class spec */ - #define USB_DT_CS_INTERFACE 0x24 - #define USB_DT_CS_ENDPOINT 0x25 - - #define VERBLEVEL_DEFAULT 0 /* 0 gives lspci behaviour; 1, lsusb-0.9 */ - -+#define CTRL_RETRIES 2 -+#define CTRL_TIMEOUT (5*1000) /* milliseconds */ -+ - static const char *procbususb = "/proc/bus/usb"; - static unsigned int verblevel = VERBLEVEL_DEFAULT; - static int do_report_desc = 1; --static int open_mode = O_RDONLY; - --static void dump_junk2(unsigned char *, unsigned int); -+static void dump_interface(struct usb_dev_handle *dev, struct usb_interface *interface); -+static void dump_endpoint(struct usb_dev_handle *dev, struct usb_interface_descriptor *interface, struct usb_endpoint_descriptor *endpoint); -+static void dump_audiocontrol_interface(struct usb_dev_handle *dev, unsigned char *buf); -+static void dump_audiostreaming_interface(struct usb_dev_handle *dev, unsigned char *buf); -+static void dump_midistreaming_interface(struct usb_dev_handle *dev, unsigned char *buf); -+static char *dump_comm_descriptor(struct usb_dev_handle *dev, unsigned char *buf, char *indent); -+static void dump_hid_device(struct usb_dev_handle *dev, struct usb_interface_descriptor *interface, unsigned char *buf); -+static void dump_audiostreaming_endpoint(struct usb_dev_handle *dev, unsigned char *buf); -+static void dump_midistreaming_endpoint(struct usb_dev_handle *dev, unsigned char *buf); -+static void dump_hub(char *prefix, unsigned char *p, int has_tt); -+static void dump_ccid_device(unsigned char *buf); -+ -+/* ---------------------------------------------------------------------- */ -+ -+static unsigned int convert_le_u32 (const unsigned char *buf) -+{ -+ return buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24); -+} - - /* ---------------------------------------------------------------------- */ - -@@ -95,66 +104,24 @@ - - /* ---------------------------------------------------------------------- */ - --static int usb_control_msg(int fd, u_int8_t requesttype, u_int8_t request, u_int16_t value, -- u_int16_t index, unsigned int size, void *data) --{ -- struct usbdevfs_ctrltransfer ctrl; -- int result, try; -- -- ctrl.requesttype = requesttype; -- ctrl.request = request; -- ctrl.value = value; -- ctrl.index = index; -- ctrl.length = size; -- ctrl.timeout = 1000; -- ctrl.data = data; -- ctrl.timeout = CTRL_TIMEOUT; -- try = 0; -- do { -- result = ioctl(fd, USBDEVFS_CONTROL, &ctrl); -- try++; -- } while (try < CTRL_RETRIES && result == -1 && errno == ETIMEDOUT); -- return result; --} -- --/* ---------------------------------------------------------------------- */ -- --static int get_string(int fd, char *buf, size_t size, u_int8_t id, u_int16_t lang) -+static int get_string(struct usb_dev_handle *dev, char* buf, size_t size, u_int8_t id) - { -- unsigned char b[256]; -- wchar_t w[128]; -- unsigned int i; - int ret; -- -- if (size < 1) -- return 0; -- *buf = 0; -- /* string ID 0 means no string */ -- if (!id || fd == -1) -- return 0; -- -- b[0] = b[1] = 0xbf; -- ret = usb_control_msg(fd, USB_DIR_IN, USB_REQ_GET_DESCRIPTOR, (USB_DT_STRING << 8) | id, 0, sizeof(b), b); -- if (ret < 0) { -- if (open_mode == O_RDWR) -- fprintf(stderr, "cannot get string descriptor %d, error = %s(%d)\n", id, strerror(errno), errno); -- return 0; -- } -- if (ret < 2 || b[0] < 2 || b[1] != USB_DT_STRING) { -- fprintf(stderr, "string descriptor %d invalid (%02x %02x; len=%d)\n", id, b[0], b[1], ret); -+ -+ if (id) { -+ ret = usb_get_string_simple(dev, id, buf, size); -+ if (ret <= 0) { -+ buf[0] = 0; -+ return 0; -+ } -+ else -+ return ret; -+ -+ } -+ else { -+ buf[0] = 0; - return 0; - } --#if 0 -- for (i = 0; i < ((b[0] - 2) / 2); i++) -- w[i] = b[2+2*i] | (b[3+2*i] << 8); -- w[i] = 0; -- return wcstombs(buf, w, size); --#else -- for (i = 0; i < ((b[0] - 2) / 2); i++) -- buf[i] = b[2+2*i]; -- buf[i] = 0; -- return i; --#endif - } - - static int get_vendor_string(char *buf, size_t size, u_int16_t vid) -@@ -231,7 +198,7 @@ - - /* ---------------------------------------------------------------------- */ - --static void dump_junk2(unsigned char *buf, unsigned int len) -+static void dump_bytes(unsigned char *buf, unsigned int len) - { - unsigned int i; - -@@ -256,27 +223,20 @@ - * General config descriptor dump - */ - --static void dump_device(int fd, unsigned char *buf, u_int16_t lang) -+static void dump_device(struct usb_dev_handle *dev, struct usb_device_descriptor *descriptor, unsigned int flags) - { -- unsigned int vid, pid; - char vendor[128], product[128]; - char cls[128], subcls[128], proto[128]; - char mfg[128], prod[128], serial[128]; - -- if (buf[1] != USB_DT_DEVICE) -- printf(" Warning: Invalid descriptor\n"); -- else if (buf[0] < 18) -- printf(" Warning: Descriptor too short\n"); -- vid = buf[8] | (buf[9] << 8); -- pid = buf[10] | (buf[11] << 8); -- get_vendor_string(vendor, sizeof(vendor), vid); -- get_product_string(product, sizeof(product), vid, pid); -- get_class_string(cls, sizeof(cls), buf[4]); -- get_subclass_string(subcls, sizeof(subcls), buf[4], buf[5]); -- get_protocol_string(proto, sizeof(proto), buf[4], buf[5], buf[6]); -- get_string(fd, mfg, sizeof(mfg), buf[14], lang); -- get_string(fd, prod, sizeof(prod), buf[15], lang); -- get_string(fd, serial, sizeof(serial), buf[16], lang); -+ get_vendor_string(vendor, sizeof(vendor), descriptor->idVendor); -+ get_product_string(product, sizeof(product), descriptor->idVendor, descriptor->idProduct); -+ get_class_string(cls, sizeof(cls), descriptor->bDeviceClass); -+ get_subclass_string(subcls, sizeof(subcls), descriptor->bDeviceClass, descriptor->bDeviceSubClass); -+ get_protocol_string(proto, sizeof(proto), descriptor->bDeviceClass, descriptor->bDeviceSubClass, descriptor->bDeviceProtocol); -+ get_string(dev, mfg, sizeof(mfg), descriptor->iManufacturer); -+ get_string(dev, prod, sizeof(prod), descriptor->iProduct); -+ get_string(dev, serial, sizeof(serial), descriptor->iSerialNumber); - printf("Device Descriptor:\n" - " bLength %5u\n" - " bDescriptorType %5u\n" -@@ -292,47 +252,76 @@ - " iProduct %5u %s\n" - " iSerial %5u %s\n" - " bNumConfigurations %5u\n", -- buf[0], buf[1], buf[3], buf[2], buf[4], cls, buf[5], subcls, buf[6], proto, buf[7], -- vid, vendor, pid, product, buf[13], buf[12], buf[14], mfg, buf[15], prod, buf[16], serial, buf[17]); -- dump_junk(buf, " ", 18); -+ descriptor->bLength, descriptor->bDescriptorType, descriptor->bcdUSB >> 8, descriptor->bcdUSB & 0xff, -+ descriptor->bDeviceClass, cls, descriptor->bDeviceSubClass, subcls, descriptor->bDeviceProtocol, proto, -+ descriptor->bMaxPacketSize0, descriptor->idVendor, vendor, descriptor->idProduct, product, -+ descriptor->bcdDevice >> 8, descriptor->bcdDevice & 0xff, descriptor->iManufacturer, mfg, -+ descriptor->iProduct, prod, descriptor->iSerialNumber, serial, descriptor->bNumConfigurations); - } - --static void dump_config(int fd, unsigned char *buf) -+static void dump_config(struct usb_dev_handle *dev, struct usb_config_descriptor *config) - { -- if (buf[1] != USB_DT_CONFIG) -- printf(" Warning: Invalid descriptor\n"); -- else if (buf[0] < 9) -- printf(" Warning: Descriptor too short\n"); -+ char cfg[128]; -+ int i; -+ -+ get_string(dev, cfg, sizeof(cfg), config->iConfiguration); - printf(" Configuration Descriptor:\n" - " bLength %5u\n" - " bDescriptorType %5u\n" - " wTotalLength %5u\n" - " bNumInterfaces %5u\n" - " bConfigurationValue %5u\n" -- " iConfiguration %5u\n" -+ " iConfiguration %5u %s\n" - " bmAttributes 0x%02x\n", -- buf[0], buf[1], buf[2] | (buf[3] << 8), buf[4], buf[5], buf[6], buf[7]); -- if (buf[7] & 0x40) -+ config->bLength, config->bDescriptorType, config->wTotalLength, -+ config->bNumInterfaces, config->bConfigurationValue, config->iConfiguration, -+ cfg, config->bmAttributes); -+ if (config->bmAttributes & 0x40) - printf(" Self Powered\n"); -- if (buf[7] & 0x20) -+ if (config->bmAttributes & 0x20) - printf(" Remote Wakeup\n"); -- printf(" MaxPower %5umA\n", buf[8] * 2); -- dump_junk(buf, " ", 9); -+ printf(" MaxPower %5umA\n", config->MaxPower * 2); -+ -+ /* avoid re-ordering or hiding descriptors for display */ -+ if (config->extralen) { -+ int size = config->extralen; -+ unsigned char *buf = config->extra; -+ -+ while (size >= 2) { -+ if (buf[0] < 2) { -+ dump_junk(" ", buf, size); -+ break; -+ } -+ switch (buf[1]) { -+ case USB_DT_OTG: -+ /* handled separately */ -+ break; -+ default: -+ /* often a misplaced class descriptor */ -+ printf(" UNRECOGNIZED: "); -+ dump_bytes(buf, size); -+ break; -+ } -+ size -= buf[0]; -+ buf += buf[0]; -+ } -+ } -+ for (i = 0 ; i < config->bNumInterfaces ; i++) -+ dump_interface(dev, &config->interface[i]); - } - --static void dump_interface(int fd, unsigned char *buf, u_int16_t lang) -+static void dump_altsetting(struct usb_dev_handle *dev, struct usb_interface_descriptor *interface) - { - char cls[128], subcls[128], proto[128]; - char ifstr[128]; -+ -+ char *buf; -+ int size, i; - -- if (buf[1] != USB_DT_INTERFACE) -- printf(" Warning: Invalid descriptor\n"); -- else if (buf[0] < 9) -- printf(" Warning: Descriptor too short\n"); -- get_class_string(cls, sizeof(cls), buf[5]); -- get_subclass_string(subcls, sizeof(subcls), buf[5], buf[6]); -- get_protocol_string(proto, sizeof(proto), buf[5], buf[6], buf[7]); -- get_string(fd, ifstr, sizeof(ifstr), buf[8], lang); -+ get_class_string(cls, sizeof(cls), interface->bInterfaceClass); -+ get_subclass_string(subcls, sizeof(subcls), interface->bInterfaceClass, interface->bInterfaceSubClass); -+ get_protocol_string(proto, sizeof(proto), interface->bInterfaceClass, interface->bInterfaceSubClass, interface->bInterfaceProtocol); -+ get_string(dev, ifstr, sizeof(ifstr), interface->iInterface); - printf(" Interface Descriptor:\n" - " bLength %5u\n" - " bDescriptorType %5u\n" -@@ -343,20 +332,84 @@ - " bInterfaceSubClass %5u %s\n" - " bInterfaceProtocol %5u %s\n" - " iInterface %5u %s\n", -- buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], cls, -- buf[6], subcls, buf[7], proto, buf[8], ifstr); -- dump_junk(buf, " ", 9); -+ interface->bLength, interface->bDescriptorType, interface->bInterfaceNumber, -+ interface->bAlternateSetting, interface->bNumEndpoints, interface->bInterfaceClass, cls, -+ interface->bInterfaceSubClass, subcls, interface->bInterfaceProtocol, proto, -+ interface->iInterface, ifstr); -+ -+ /* avoid re-ordering or hiding descriptors for display */ -+ if (interface->extralen) -+ { -+ size = interface->extralen; -+ buf = interface->extra; -+ while (size >= 2 * sizeof(u_int8_t)) -+ { -+ if (buf[0] < 2) { -+ dump_junk(" ", buf, size); -+ break; -+ } -+ switch (buf[1]) { -+ case USB_DT_CS_INTERFACE: -+ switch(interface->bInterfaceClass) { -+ case USB_CLASS_AUDIO: -+ switch(interface->bInterfaceSubClass) { -+ case 1: -+ dump_audiocontrol_interface(dev, buf); -+ break; -+ case 2: -+ dump_audiostreaming_interface(dev, buf); -+ break; -+ case 3: -+ dump_midistreaming_interface(dev, buf); -+ break; -+ } -+ break; -+ case USB_CLASS_COMM: -+ dump_comm_descriptor(dev, buf, -+ " "); -+ break; -+ } -+ break; -+ case USB_DT_HID: -+ if (interface->bInterfaceClass == USB_CLASS_HID) -+ dump_hid_device(dev, interface, buf); -+ if (interface->bInterfaceClass == 0x0b) -+ dump_ccid_device(buf); -+ break; -+ case USB_DT_OTG: -+ /* handled separately */ -+ break; -+ default: -+ /* often a misplaced class descriptor */ -+ printf(" UNRECOGNIZED: "); -+ dump_bytes(buf, size); -+ break; -+ } -+ size -= buf[0]; -+ buf += buf[0]; -+ } -+ } -+ for (i = 0 ; i < interface->bNumEndpoints ; i++) -+ dump_endpoint(dev, interface, &interface->endpoint[i]); - } - --static void dump_endpoint(int fd, unsigned char *buf) -+static void dump_interface(struct usb_dev_handle *dev, struct usb_interface *interface) -+{ -+ int i; -+ -+ for (i = 0; i < interface->num_altsetting; i++) -+ dump_altsetting(dev, &interface->altsetting[i]); -+} -+ -+static void dump_endpoint(struct usb_dev_handle *dev, struct usb_interface_descriptor *interface, struct usb_endpoint_descriptor *endpoint) - { - static const char *typeattr[] = { "Control", "Isochronous", "Bulk", "Interrupt" }; -- static const char *syncattr[] = { "none", "Asynchronous", "Adaptive", "Synchronous" }; -+ static const char *syncattr[] = { "None", "Asynchronous", "Adaptive", "Synchronous" }; -+ static const char *usage[] = { "Data", "Feedback", "Implicit feedback Data", "(reserved)" }; -+ static const char *hb[] = { "1x", "2x", "3x", "(?\?)" }; -+ char *buf; -+ int size; - -- if (buf[1] != USB_DT_ENDPOINT) -- printf(" Warning: Invalid descriptor\n"); -- else if (buf[0] < 7) -- printf(" Warning: Descriptor too short\n"); - printf(" Endpoint Descriptor:\n" - " bLength %5u\n" - " bDescriptorType %5u\n" -@@ -364,19 +417,53 @@ - " bmAttributes %5u\n" - " Transfer Type %s\n" - " Synch Type %s\n" -- " wMaxPacketSize %5u\n" -+ " Usage Type %s\n" -+ " wMaxPacketSize 0x%04x %s %d bytes\n" - " bInterval %5u\n", -- buf[0], buf[1], buf[2], buf[2] & 15, (buf[2] & 0x80) ? "IN" : "OUT", -- buf[3], typeattr[buf[3] & 3], syncattr[(buf[3] >> 2) & 3], -- buf[4] | (buf[5] << 8), buf[6]); -- if (buf[0] < 9) { -- dump_junk(buf, " ", 7); -- return; -- } -+ endpoint->bLength, endpoint->bDescriptorType, endpoint->bEndpointAddress, endpoint->bEndpointAddress & 0x0f, -+ (endpoint->bEndpointAddress & 0x80) ? "IN" : "OUT", endpoint->bmAttributes, -+ typeattr[endpoint->bmAttributes & 3], syncattr[(endpoint->bmAttributes >> 2) & 3], -+ usage[(endpoint->bmAttributes >> 4) & 3], endpoint->wMaxPacketSize, -+ hb[(endpoint->wMaxPacketSize >> 11) & 3], -+ endpoint->wMaxPacketSize & 0x3ff, -+ endpoint->bInterval); -+ /* only for audio endpoints */ -+ if (endpoint->bLength == 9) - printf(" bRefresh %5u\n" - " bSynchAddress %5u\n", -- buf[7], buf[8]); -- dump_junk(buf, " ", 9); -+ endpoint->bRefresh, endpoint->bSynchAddress); -+ -+ /* avoid re-ordering or hiding descriptors for display */ -+ if (endpoint->extralen) -+ { -+ size = endpoint->extralen; -+ buf = endpoint->extra; -+ while (size >= 2 * sizeof(u_int8_t)) -+ { -+ if (buf[0] < 2) { -+ dump_junk(" ", buf, size); -+ break; -+ } -+ switch (buf[1]) { -+ case USB_DT_CS_ENDPOINT: -+ if (interface->bInterfaceClass == 1 && interface->bInterfaceSubClass == 2) -+ dump_audiostreaming_endpoint(dev, buf); -+ else if (interface->bInterfaceClass == 1 && interface->bInterfaceSubClass == 3) -+ dump_midistreaming_endpoint(dev, buf); -+ break; -+ case USB_DT_OTG: -+ /* handled separately */ -+ break; -+ default: -+ /* often a misplaced class descriptor */ -+ printf(" UNRECOGNIZED: "); -+ dump_bytes(buf, size); -+ break; -+ } -+ size -= buf[0]; -+ buf += buf[0]; -+ } -+ } - } - - /* ---------------------------------------------------------------------- */ -@@ -385,7 +472,7 @@ - * Audio Class descriptor dump - */ - --static void dump_audiocontrol_interface(int fd, unsigned char *buf, u_int16_t lang) -+static void dump_audiocontrol_interface(struct usb_dev_handle *dev, unsigned char *buf) - { - static const char *chconfig[] = { - "Left Front (L)", "Right Front (R)", "Center Front (C)", "Low Freqency Enhancement (LFE)", -@@ -423,8 +510,8 @@ - - case 0x02: /* INPUT_TERMINAL */ - printf("(INPUT_TERMINAL)\n"); -- get_string(fd, chnames, sizeof(chnames), buf[10], lang); -- get_string(fd, term, sizeof(term), buf[11], lang); -+ get_string(dev, chnames, sizeof(chnames), buf[10]); -+ get_string(dev, term, sizeof(term), buf[11]); - termt = buf[4] | (buf[5] << 8); - get_audioterminal_string(termts, sizeof(termts), termt); - if (buf[0] < 12) -@@ -447,7 +534,7 @@ - - case 0x03: /* OUTPUT_TERMINAL */ - printf("(OUTPUT_TERMINAL)\n"); -- get_string(fd, term, sizeof(term), buf[8], lang); -+ get_string(dev, term, sizeof(term), buf[8]); - termt = buf[4] | (buf[5] << 8); - get_audioterminal_string(termts, sizeof(termts), termt); - if (buf[0] < 9) -@@ -471,8 +558,8 @@ - } else { - N = 1+(j*k-1)/8; - } -- get_string(fd, chnames, sizeof(chnames), buf[8+j], lang); -- get_string(fd, term, sizeof(term), buf[9+j+N], lang); -+ get_string(dev, chnames, sizeof(chnames), buf[8+j]); -+ get_string(dev, term, sizeof(term), buf[9+j+N]); - if (buf[0] < 10+j+N) - printf(" Warning: Descriptor too short\n"); - chcfg = buf[6+j] | (buf[7+j] << 8); -@@ -499,7 +586,7 @@ - printf("(SELECTOR_UNIT)\n"); - if (buf[0] < 6+buf[4]) - printf(" Warning: Descriptor too short\n"); -- get_string(fd, term, sizeof(term), buf[5+buf[4]], lang); -+ get_string(dev, term, sizeof(term), buf[5+buf[4]]); - - printf(" bUnitID %5u\n" - " bNrInPins %5u\n", -@@ -519,7 +606,7 @@ - k = (buf[0] - 7) / j; - if (buf[0] < 7+buf[5]*k) - printf(" Warning: Descriptor too short\n"); -- get_string(fd, term, sizeof(term), buf[6+buf[5]*k], lang); -+ get_string(dev, term, sizeof(term), buf[6+buf[5]*k]); - printf(" bUnitID %5u\n" - " bSourceID %5u\n" - " bControlSize %5u\n", -@@ -529,7 +616,7 @@ - if (buf[5] > 1) - chcfg |= (buf[7+buf[5]*i] << 8); - for (j = 0; j < buf[5]; j++) -- printf(" bmaControls(%2u) 0x%02x\n", j, buf[6+buf[5]*i+j]); -+ printf(" bmaControls(%2u) 0x%02x\n", i, buf[6+buf[5]*i+j]); - for (j = 0; j < 10; j++) - if ((chcfg >> j) & 1) - printf(" %s\n", chftrcontrols[j]); -@@ -542,8 +629,8 @@ - printf("(PROCESSING_UNIT)\n"); - j = buf[6]; - k = buf[11+j]; -- get_string(fd, chnames, sizeof(chnames), buf[10+j], lang); -- get_string(fd, term, sizeof(term), buf[12+j+k], lang); -+ get_string(dev, chnames, sizeof(chnames), buf[10+j]); -+ get_string(dev, term, sizeof(term), buf[12+j+k]); - chcfg = buf[8+j] | (buf[9+j] << 8); - if (buf[0] < 13+j+k) - printf(" Warning: Descriptor too short\n"); -@@ -566,15 +653,15 @@ - printf(" Enable Processing\n"); - printf(" iProcessing %5u %s\n" - " Process-Specific ", buf[12+j+k], term); -- dump_junk2(buf+(13+j+k), buf[0]-(13+j+k)); -+ dump_bytes(buf+(13+j+k), buf[0]-(13+j+k)); - break; - - case 0x08: /* EXTENSION_UNIT */ - printf("(EXTENSION_UNIT)\n"); - j = buf[6]; - k = buf[11+j]; -- get_string(fd, chnames, sizeof(chnames), buf[10+j], lang); -- get_string(fd, term, sizeof(term), buf[12+j+k], lang); -+ get_string(dev, chnames, sizeof(chnames), buf[10+j]); -+ get_string(dev, term, sizeof(term), buf[12+j+k]); - chcfg = buf[8+j] | (buf[9+j] << 8); - if (buf[0] < 13+j+k) - printf(" Warning: Descriptor too short\n"); -@@ -603,12 +690,12 @@ - default: - printf("(unknown)\n" - " Invalid desc subtype:"); -- dump_junk2(buf+3, buf[0]-3); -+ dump_bytes(buf+3, buf[0]-3); - break; - } - } - --static void dump_audiostreaming_interface(int fd, unsigned char *buf) -+static void dump_audiostreaming_interface(struct usb_dev_handle *dev, unsigned char *buf) - { - static const char *fmtItag[] = { "TYPE_I_UNDEFINED", "PCM", "PCM8", "IEEE_FLOAT", "ALAW", "MULAW" }; - static const char *fmtIItag[] = { "TYPE_II_UNDEFINED", "MPEG", "AC-3" }; -@@ -622,7 +709,7 @@ - printf(" Warning: Invalid descriptor\n"); - else if (buf[0] < 3) - printf(" Warning: Descriptor too short\n"); -- printf(" AudioControl Interface Descriptor:\n" -+ printf(" AudioStreaming Interface Descriptor:\n" - " bLength %5u\n" - " bDescriptorType %5u\n" - " bDescriptorSubtype %5u ", -@@ -717,7 +804,7 @@ - default: - printf("(unknown)\n" - " Invalid desc format type:"); -- dump_junk2(buf+4, buf[0]-4); -+ dump_bytes(buf+4, buf[0]-4); - } - break; - -@@ -833,18 +920,18 @@ - default: - printf("(unknown)\n" - " Invalid desc format type:"); -- dump_junk2(buf+4, buf[0]-4); -+ dump_bytes(buf+4, buf[0]-4); - } - break; - - default: - printf(" Invalid desc subtype:"); -- dump_junk2(buf+3, buf[0]-3); -+ dump_bytes(buf+3, buf[0]-3); - break; - } - } - --static void dump_audiostreaming_endpoint(int fd, unsigned char *buf) -+static void dump_audiostreaming_endpoint(struct usb_dev_handle *dev, unsigned char *buf) - { - static const char *lockdelunits[] = { "Undefined", "Milliseconds", "Decoded PCM samples", "Reserved" }; - unsigned int lckdelidx; -@@ -874,7 +961,7 @@ - dump_junk(buf, " ", 7); - } - --static void dump_midistreaming_interface(int fd, unsigned char *buf, u_int16_t lang) -+static void dump_midistreaming_interface(struct usb_dev_handle *dev, unsigned char *buf) - { - static const char *jacktypes[] = {"Undefined", "Embedded", "External"}; - char jackstr[128]; -@@ -906,7 +993,7 @@ - printf("(MIDI_IN_JACK)\n"); - if (buf[0] < 6) - printf(" Warning: Descriptor too short\n"); -- get_string(fd, jackstr, sizeof(jackstr), buf[5], lang); -+ get_string(dev, jackstr, sizeof(jackstr), buf[5]); - printf( " bJackType %5u %s\n" - " bJackID %5u\n" - " iJack %5u %s\n", -@@ -930,7 +1017,7 @@ - j, buf[2*j+6], j, buf[2*j+7]); - } - j = 6+buf[5]*2; /* midi10.pdf says, incorrectly: 5+2*p */ -- get_string(fd, jackstr, sizeof(jackstr), buf[j], lang); -+ get_string(dev, jackstr, sizeof(jackstr), buf[j]); - printf( " iJack %5u %s\n", - buf[j], jackstr); - dump_junk(buf, " ", j+1); -@@ -985,19 +1072,19 @@ - if (caps & 0x800) - printf( " DLS2 (Downloadable Sounds Level 2)\n"); - j = 9+2*buf[4]+capssize; -- get_string(fd, jackstr, sizeof(jackstr), buf[j], lang); -+ get_string(dev, jackstr, sizeof(jackstr), buf[j]); - printf( " iElement %5u %s\n", buf[j], jackstr); - dump_junk(buf, " ", j+1); - break; - - default: - printf("\n Invalid desc subtype: "); -- dump_junk2(buf+3, buf[0]-3); -+ dump_bytes(buf+3, buf[0]-3); - break; - } - } - --static void dump_midistreaming_endpoint(int fd, unsigned char *buf) -+static void dump_midistreaming_endpoint(struct usb_dev_handle *dev, unsigned char *buf) - { - unsigned int j; - -@@ -1017,26 +1104,196 @@ - dump_junk(buf, " ", 4+buf[3]); - } - -- --static void dump_hub(char *p) -+static void dump_hub(char *prefix, unsigned char *p, int has_tt) - { - unsigned int l, i, j; -+ unsigned int wHubChar = (p[4] << 8) | p[3]; - -- printf(" Hub Descriptor:\n"); -- printf(" bLength %3u\n",p[0]); -- printf(" bDesriptorType %3u\n",p[1]); -- printf(" nNbrPorts %3u\n",p[2]); -- printf(" wHubCharacteristic 0x%02x 0x%02x\n", p[3],p[4]); -- printf(" bPwrOn2PwrGood %3u * 2 milli seconds\n",p[5]); -- printf(" bHubContrCurrent %3u milli Ampere\n",p[6]); -+ printf("%sHub Descriptor:\n", prefix); -+ printf("%s bLength %3u\n", prefix, p[0]); -+ printf("%s bDescriptorType %3u\n", prefix, p[1]); -+ printf("%s nNbrPorts %3u\n", prefix, p[2]); -+ printf("%s wHubCharacteristic 0x%04x\n", prefix, wHubChar); -+ switch (wHubChar & 0x03) { -+ case 0: -+ printf("%s Ganged power switching\n", prefix); -+ break; -+ case 1: -+ printf("%s Per-port power switching\n", prefix); -+ break; -+ default: -+ printf("%s No power switching (usb 1.0)\n", prefix); -+ break; -+ } -+ if (wHubChar & 0x04) -+ printf("%s Compound device\n", prefix); -+ switch ((wHubChar >> 3) & 0x03) { -+ case 0: -+ printf("%s Ganged overcurrent protection\n", prefix); -+ break; -+ case 1: -+ printf("%s Per-port overcurrent protection\n", prefix); -+ break; -+ default: -+ printf("%s No overcurrent protection\n", prefix); -+ break; -+ } -+ if (has_tt) { -+ l = (wHubChar >> 5) & 0x03; -+ printf("%s TT think time %d FS bits\n", prefix, (l + 1) * 8); -+ } -+ if (wHubChar & (1<<7)) -+ printf("%s Port indicators\n", prefix); -+ printf("%s bPwrOn2PwrGood %3u * 2 milli seconds\n", prefix, p[5]); -+ printf("%s bHubContrCurrent %3u milli Ampere\n", prefix, p[6]); - l= (p[2] >> 3) + 1; /* this determines the variable number of bytes following */ -- printf(" DeviceRemovable "); -+ printf("%s DeviceRemovable ", prefix); - for(i = 0; i < l; i++) - printf(" 0x%02x", p[7+i]); -- printf("\n PortPwrCtrlMask "); -- for(j = 0; j < l; j++) -- printf(" 0x%02x ", p[7+i+j]); -- printf("\n"); -+ printf("\n%s PortPwrCtrlMask ", prefix); -+ for(j = 0; j < l; j++) -+ printf(" 0x%02x ", p[7+i+j]); -+ printf("\n"); -+} -+ -+static void dump_ccid_device(unsigned char *buf) -+{ -+ unsigned int us; -+ -+ if (buf[0] < 54) { -+ printf(" Warning: Descriptor too short\n"); -+ return; -+ } -+ printf(" ChipCard Interface Descriptor:\n" -+ " bLength %5u\n" -+ " bDescriptorType %5u\n" -+ " bcdCCID %2x.%02x", -+ buf[0], buf[1], buf[3], buf[2]); -+ if (buf[3] != 1 || buf[2] != 0) -+ fputs(" (Warning: Only accurate for version 1.0)", stdout); -+ putchar('\n'); -+ -+ printf(" nMaxSlotIndex %5u\n" -+ " bVoltageSupport %5u %s\n", -+ buf[4], -+ buf[5], (buf[5] == 1? "5.0V" : buf[5] == 2? "3.0V" -+ : buf[5] == 3? "1.8V":"?")); -+ -+ us = convert_le_u32 (buf+6); -+ printf(" dwProtocols %5u ", us); -+ if ((us & 1)) -+ fputs(" T=0", stdout); -+ if ((us & 2)) -+ fputs(" T=1", stdout); -+ if ((us & ~3)) -+ fputs(" (Invalid values detected)", stdout); -+ putchar('\n'); -+ -+ us = convert_le_u32(buf+10); -+ printf(" dwDefaultClock %5u\n", us); -+ us = convert_le_u32(buf+14); -+ printf(" dwMaxiumumClock %5u\n", us); -+ printf(" bNumClockSupported %5u\n", buf[18]); -+ us = convert_le_u32(buf+19); -+ printf(" dwDataRate %7u bps\n", us); -+ us = convert_le_u32(buf+23); -+ printf(" dwMaxDataRate %7u bps\n", us); -+ printf(" bNumDataRatesSupp. %5u\n", buf[27]); -+ -+ us = convert_le_u32(buf+28); -+ printf(" dwMaxIFSD %5u\n", us); -+ -+ us = convert_le_u32(buf+32); -+ printf(" dwSyncProtocols %08X ", us); -+ if ((us&1)) -+ fputs(" 2-wire", stdout); -+ if ((us&2)) -+ fputs(" 3-wire", stdout); -+ if ((us&4)) -+ fputs(" I2C", stdout); -+ putchar('\n'); -+ -+ us = convert_le_u32(buf+36); -+ printf(" dwMechanical %08X ", us); -+ if ((us & 1)) -+ fputs(" accept", stdout); -+ if ((us & 2)) -+ fputs(" eject", stdout); -+ if ((us & 4)) -+ fputs(" capture", stdout); -+ if ((us & 8)) -+ fputs(" lock", stdout); -+ putchar('\n'); -+ -+ us = convert_le_u32(buf+40); -+ printf(" dwFeatures %08X\n", us); -+ if ((us & 0x0002)) -+ fputs(" Auto configuration based on ATR\n",stdout); -+ if ((us & 0x0004)) -+ fputs(" Auto activation on insert\n",stdout); -+ if ((us & 0x0008)) -+ fputs(" Auto voltage selection\n",stdout); -+ if ((us & 0x0010)) -+ fputs(" Auto clock change\n",stdout); -+ if ((us & 0x0020)) -+ fputs(" Auto baud rate change\n",stdout); -+ if ((us & 0x0040)) -+ fputs(" Auto parameter negotation made by CCID\n",stdout); -+ else if ((us & 0x0080)) -+ fputs(" Auto PPS made by CCID\n",stdout); -+ else if ((us & (0x0040 | 0x0080))) -+ fputs(" WARNING: conflicting negotation features\n",stdout); -+ -+ if ((us & 0x0100)) -+ fputs(" CCID can set ICC in clock stop mode\n",stdout); -+ if ((us & 0x0200)) -+ fputs(" NAD value other than 0x00 accpeted\n",stdout); -+ if ((us & 0x0400)) -+ fputs(" Auto IFSD exchange\n",stdout); -+ -+ if ((us & 0x00010000)) -+ fputs(" TPDU level exchange\n",stdout); -+ else if ((us & 0x00020000)) -+ fputs(" Short APDU level exchange\n",stdout); -+ else if ((us & 0x00040000)) -+ fputs(" Short and extended APDU level exchange\n",stdout); -+ else if ((us & 0x00070000)) -+ fputs(" WARNING: conflicting exchange levels\n",stdout); -+ -+ us = convert_le_u32(buf+44); -+ printf(" dwMaxCCIDMsgLen %5u\n", us); -+ -+ printf(" bClassGetResponse "); -+ if (buf[48] == 0xff) -+ fputs("echo\n", stdout); -+ else -+ printf(" %02X\n", buf[48]); -+ -+ printf(" bClassEnvelope "); -+ if (buf[49] == 0xff) -+ fputs("echo\n", stdout); -+ else -+ printf(" %02X\n", buf[48]); -+ -+ printf(" wlcdLayout "); -+ if (!buf[50] && !buf[51]) -+ fputs("none\n", stdout); -+ else -+ printf("%u cols %u lines\n", buf[50], buf[51]); -+ -+ printf(" bPINSupport %5u ", buf[52]); -+ if ((buf[52] & 1)) -+ fputs(" verification", stdout); -+ if ((buf[52] & 2)) -+ fputs(" modification", stdout); -+ putchar('\n'); -+ -+ printf(" bMaxCCIDBusySlots %5u\n", buf[53]); -+ -+ if (buf[0] > 54) { -+ fputs(" junk ", stdout); -+ dump_bytes(buf+54, buf[0]-54); -+ } - } - - /* ---------------------------------------------------------------------- */ -@@ -1047,21 +1304,21 @@ - - static void dump_report_desc(unsigned char *b, int l) - { -- unsigned int t, j, bsize, btag, btype, data, hut; -+ unsigned int t, j, bsize, btag, btype, data = 0xffff, hut = 0xffff; - int i; - char *types[4] = { "Main", "Global", "Local", "reserved" }; - char indent[] = " "; - -- printf(" Report Descriptor: (length is %d)\n", l); -+ printf(" Report Descriptor: (length is %d)\n", l); - for(i = 0; i < l; ) { - t = b[i]; -- bsize= b[i] & 0x03; -+ bsize = b[i] & 0x03; - if (bsize == 3) -- bsize=4; -+ bsize = 4; - btype = b[i] & (0x03 << 2); - btag = b[i] & ~0x03; /* 2 LSB bits encode length */ - printf(" Item(%-6s): %s, data=", types[btype>>2], names_reporttag(btag)); -- if(bsize > 0) { -+ if (bsize > 0) { - printf(" [ "); - data = 0; - for(j = 0; j < bsize; j++) { -@@ -1101,9 +1358,9 @@ - - default: - if(data & 0x80) -- printf("Vendor definened\n"); -+ printf("Vendor defined\n"); - else -- printf("Reserved for future use.\n"); -+ printf("Reserved for future use.\n"); - } - break; - case 0x80: /* Input */ -@@ -1121,19 +1378,19 @@ - data & 0x40 ? "Null_State": "No_Null_Position", - data & 0x80 ? "Volatile": "Non_Volatile", - data &0x100 ? "Buffered Bytes": "Bitfield" -- ); -+ ); - } - i += 1 + bsize; - } - } - --static void dump_hid_device(int fd, unsigned char *buf,int interface_number) -+static void dump_hid_device(struct usb_dev_handle *dev, struct usb_interface_descriptor *interface, unsigned char *buf) - { - unsigned int i, len; - int n; - unsigned char dbuf[8192]; - -- if (buf[1] != USB_DT_CS_DEVICE) -+ if (buf[1] != USB_DT_HID) - printf(" Warning: Invalid descriptor\n"); - else if (buf[0] < 6+3*buf[5]) - printf(" Warning: Descriptor too short\n"); -@@ -1141,306 +1398,340 @@ - " bLength %5u\n" - " bDescriptorType %5u\n" - " bcdHID %2x.%02x\n" -- " bCountryCode %5u\n" -+ " bCountryCode %5u %s\n" - " bNumDescriptors %5u\n", -- buf[0], buf[1], buf[3], buf[2], buf[4], buf[5]); -+ buf[0], buf[1], buf[3], buf[2], buf[4], -+ names_countrycode(buf[4]) ? : "Unknown", buf[5]); - for (i = 0; i < buf[5]; i++) - printf(" bDescriptorType %5u %s\n" - " wDescriptorLength %5u\n", -- buf[6+3*i], names_hid(buf[6+3*i]), buf[7+3*i] | (buf[8+3*i] << 8)); -+ buf[6+3*i], names_hid(buf[6+3*i]), -+ buf[7+3*i] | (buf[8+3*i] << 8)); - dump_junk(buf, " ", 6+3*buf[5]); - if (!do_report_desc) - return; -+ - for (i = 0; i < buf[5]; i++) { -- if (buf[6+3*i] != 0x22) /* we are just interested in report descriptors*/ -+ /* we are just interested in report descriptors*/ -+ if (buf[6+3*i] != USB_DT_REPORT) - continue; - len = buf[7+3*i] | (buf[8+3*i] << 8); - if (len > sizeof(dbuf)) { - printf("report descriptor too long\n"); - continue; - } -- if ((n = usb_control_msg(fd, 0x81 , 0x06, 0x22<<8, interface_number, len, dbuf)) < 0) { -- if (open_mode == O_RDWR) -- printf("cannot get report descriptor\n"); -- continue; -+ if (usb_claim_interface(dev, interface->bInterfaceNumber) == 0) { -+ if ((n = usb_control_msg(dev, -+ USB_ENDPOINT_IN | USB_TYPE_STANDARD -+ | USB_RECIP_INTERFACE, -+ USB_REQ_GET_DESCRIPTOR, -+ (USB_DT_REPORT << 8), -+ interface->bInterfaceNumber, -+ dbuf, -+ len, -+ CTRL_TIMEOUT)) > 0) -+ dump_report_desc(dbuf, n); -+ usb_release_interface(dev, interface->bInterfaceNumber); -+ } else { -+ /* recent Linuxes require claim() for RECIP_INTERFACE, -+ * so "rmmod hid" will often make these available. -+ */ -+ printf( " Report Descriptors: \n" -+ " ** UNAVAILABLE **\n"); - } -- dump_report_desc(dbuf, n); - } - } - --/* ---------------------------------------------------------------------- */ -- --static void do_config(int fd, unsigned int nr, u_int16_t lang) -+static char * -+dump_comm_descriptor(struct usb_dev_handle *dev, unsigned char *buf, char *indent) - { -- unsigned char buf[1024],*p; -- unsigned int sz,curinterface; -- int l; -- u_int8_t curclass = 0xff, cursubclass = 0xff; -+ int tmp; -+ char str [128]; - -- if (usb_control_msg(fd, USB_DIR_IN, USB_REQ_GET_DESCRIPTOR, (USB_DT_CONFIG << 8) | nr, -- 0, USB_DT_CONFIG_SIZE, buf) < 0) { -- if (open_mode == O_RDWR) -- fprintf(stdout, "cannot get config descriptor %d, %s (%d)\n", nr, strerror(errno), errno); -- return; -- } -- if (buf[0] < USB_DT_CONFIG_SIZE || buf[1] != USB_DT_CONFIG) -- fprintf(stderr, "Warning: invalid config descriptor\n"); -- sz = buf[2] | buf[3] << 8; -- if (sz > sizeof(buf)) { -- fprintf(stderr, "Config %d descriptor too long, truncating\n", nr); -- sz = sizeof(buf); -- } -- if (usb_control_msg(fd, USB_DIR_IN, USB_REQ_GET_DESCRIPTOR, (USB_DT_CONFIG << 8) | nr, -- 0, sz, buf) < 0) { -- if (open_mode == O_RDWR) -- fprintf(stdout, "cannot get config descriptor %d, %s (%d)\n", nr, strerror(errno), errno); -- return; -+ switch (buf[2]) { -+ case 0: -+ if (buf[0] != 5) -+ goto bad; -+ printf("%sCDC Header:\n" -+ "%s bcdCDC %x.%02x\n", -+ indent, -+ indent, buf[4], buf[3]); -+ break; -+ case 0x01: /* call management functional desc */ -+ if (buf [0] != 5) -+ goto bad; -+ printf("%sCDC Call Management:\n" -+ "%s bmCapabilities 0x%02x\n", -+ indent, -+ indent, buf[3]); -+ if (buf[3] & 0x01) -+ printf("%s call management\n", indent); -+ if (buf[3] & 0x02) -+ printf("%s use DataInterface\n", indent); -+ printf("%s bDataInterface %d\n", indent, buf[4]); -+ break; -+ case 0x02: /* acm functional desc */ -+ if (buf [0] != 4) -+ goto bad; -+ printf("%sCDC ACM:\n" -+ "%s bmCapabilities 0x%02x\n", -+ indent, -+ indent, buf[3]); -+ if (buf[3] & 0x08) -+ printf("%s connection notifications\n", indent); -+ if (buf[3] & 0x04) -+ printf("%s sends break\n", indent); -+ if (buf[3] & 0x02) -+ printf("%s line coding and serial state\n", indent); -+ if (buf[3] & 0x01) -+ printf("%s get/set/clear comm features\n", indent); -+ break; -+ case 0x06: /* union desc */ -+ if (buf [0] < 5) -+ goto bad; -+ printf("%sCDC Union:\n" -+ "%s bMasterInterface %d\n" -+ "%s bSlaveInterface ", -+ indent, -+ indent, buf [3], -+ indent); -+ for (tmp = 4; tmp < buf [0]; tmp++) -+ printf("%d ", buf [tmp]); -+ printf("\n"); -+ break; -+ case 0x0f: /* ethernet functional desc */ -+ if (buf [0] != 13) -+ goto bad; -+ get_string(dev, str, sizeof str, buf[3]); -+ tmp = buf [7] << 8; -+ tmp |= buf [6]; tmp <<= 8; -+ tmp |= buf [5]; tmp <<= 8; -+ tmp |= buf [4]; -+ printf("%sCDC Ethernet:\n" -+ "%s iMacAddress %10d %s\n" -+ "%s bmEthernetStatistics 0x%08x\n", -+ indent, -+ indent, buf[3], (buf[3] && *str) ? str : "(?\?)", -+ indent, tmp); -+ /* FIXME dissect ALL 28 bits */ -+ printf("%s wMaxSegmentSize %10d\n" -+ "%s wNumberMCFilters 0x%04x\n" -+ "%s bNumberPowerFilters %10d\n", -+ indent, (buf[9]<<8)|buf[8], -+ indent, (buf[11]<<8)|buf[10], -+ indent, buf[12]); -+ break; -+ default: -+ /* FIXME there are about a dozen more descriptor types */ -+ printf("%sUNRECOGNIZED: ", indent); -+ dump_bytes(buf, buf[0]); -+ return "unrecognized comm descriptor"; - } -- p = buf; -- while (sz >= 2) { -- if (p[0] < 2) -- break; -- if (p[0] > sz) { -- printf(" descriptor length past end:"); -- dump_junk2(p, sz); -- sz = 0; -- break; -- } -- switch (p[1]) { -- case USB_DT_DEVICE: -- dump_device(fd, p, lang); -- curclass = p[4]; -- cursubclass = p[5]; -- break; -- -- case USB_DT_CONFIG: -- dump_config(fd, p); -- break; -- -- case USB_DT_INTERFACE: -- dump_interface(fd, p, lang); -- curclass = p[5]; -- cursubclass = p[6]; -- curinterface = p[2]; -- break; -- -- case USB_DT_ENDPOINT: -- dump_endpoint(fd, p); -- break; -+ return 0; - -- case USB_DT_CS_DEVICE: -- if (curclass == 3) { -- dump_hid_device(fd, p, curinterface); -- break; -- } -- printf(" unknown descriptor type:"); -- dump_junk2(p, p[0]); -- break; -+ bad: -+ printf("%sinvalid: ", indent); -+ dump_bytes(buf, buf[0]); -+ return "corrupt comm descriptor"; -+} - -- case USB_DT_CS_CONFIG: -- printf(" unknown descriptor type:"); -- dump_junk2(p, p[0]); -- break; -+/* ---------------------------------------------------------------------- */ - -- case USB_DT_CS_STRING: -- printf(" unknown descriptor type:"); -- dump_junk2(p, p[0]); -- break; -+static void do_hub(struct usb_dev_handle *fd, unsigned has_tt) -+{ -+ unsigned char buf [7]; -+ int ret; -+ -+ ret = usb_control_msg(fd, -+ USB_ENDPOINT_IN | USB_TYPE_CLASS | USB_RECIP_DEVICE, -+ USB_REQ_GET_DESCRIPTOR, -+ 0x29 << 8, 0, -+ buf, sizeof buf, CTRL_TIMEOUT); -+ if (ret != sizeof buf) { -+ /* Linux returns this for suspended devices */ -+ if (errno != EHOSTUNREACH) -+ perror ("can't get hub descriptor"); -+ return; -+ } -+ dump_hub("", buf, has_tt); -+} - -- case USB_DT_CS_INTERFACE: -- if (curclass == 1 && cursubclass == 1) { -- dump_audiocontrol_interface(fd, p, lang); -- break; -- } -- if (curclass == 1 && cursubclass == 2) { -- dump_audiostreaming_interface(fd, p); -- break; -- } -- if (curclass == 1 && cursubclass == 3) { -- dump_midistreaming_interface(fd, p, lang); -- break; -- } -- printf(" unknown descriptor type:"); -- dump_junk2(p, p[0]); -- break; -+static void do_dualspeed(struct usb_dev_handle *fd) -+{ -+ unsigned char buf [10]; -+ char cls[128], subcls[128], proto[128]; -+ int ret; -+ -+ ret = usb_control_msg(fd, -+ USB_ENDPOINT_IN | USB_TYPE_STANDARD | USB_RECIP_DEVICE, -+ USB_REQ_GET_DESCRIPTOR, -+ USB_DT_DEVICE_QUALIFIER << 8, 0, -+ buf, sizeof buf, CTRL_TIMEOUT); - -- case USB_DT_CS_ENDPOINT: -- if (curclass == 1 && cursubclass == 2) { -- dump_audiostreaming_endpoint(fd, p); -- break; -- } -- if (curclass == 1 && cursubclass == 3) { -- dump_midistreaming_endpoint(fd, p); -- break; -- } -- printf(" unknown descriptor type:"); -- dump_junk2(p, p[0]); -- break; -+ /* all dual-speed devices have a qualifier */ -+ if (ret != sizeof buf -+ || buf[0] != ret -+ || buf[1] != USB_DT_DEVICE_QUALIFIER) -+ return; - -- case USB_DT_HUB: -- dump_hub(p); -- break; -+ get_class_string(cls, sizeof(cls), -+ buf[4]); -+ get_subclass_string(subcls, sizeof(subcls), -+ buf[4], buf[5]); -+ get_protocol_string(proto, sizeof(proto), -+ buf[4], buf[5], buf[6]); -+ printf("Device Qualifier (for other device speed):\n" -+ " bLength %5u\n" -+ " bDescriptorType %5u\n" -+ " bcdUSB %2x.%02x\n" -+ " bDeviceClass %5u %s\n" -+ " bDeviceSubClass %5u %s\n" -+ " bDeviceProtocol %5u %s\n" -+ " bMaxPacketSize0 %5u\n" -+ " bNumConfigurations %5u\n", -+ buf[0], buf[1], -+ buf[3], buf[2], -+ buf[4], cls, -+ buf[5], subcls, -+ buf[6], proto, -+ buf[7], buf[8]); - -- default: -- printf(" unknown descriptor type:"); -- dump_junk2(p, p[0]); -- } -- sz -= p[0]; -- p += p[0]; -- } -- if (sz > 0) { -- printf(" junk at config descriptor end:"); -- dump_junk2(p, sz); -- } -+ /* FIXME also show the OTHER_SPEED_CONFIG descriptors */ - } - --/* ---------------------------------------------------------------------- */ -+static unsigned char *find_otg(unsigned char *buf, int buflen) -+{ -+ if (!buf) -+ return 0; -+ while (buflen >= 3) { -+ if (buf[0] == 3 && buf[1] == USB_DT_OTG) -+ return buf; -+ if (buf[0] > buflen) -+ return 0; -+ buflen -= buf[0]; -+ buf += buf[0]; -+ } -+ return 0; -+} - --/* returns first lang ID */ --static u_int16_t dump_langids(int fd, int quiet) -+static void do_otg(struct usb_config_descriptor *config) - { -- unsigned char b[256]; -- int i, l; -- u_int16_t lang; -+ unsigned i, j, k; -+ unsigned char *desc; - -- b[0] = b[1] = 0xbf; -- l = usb_control_msg(fd, USB_DIR_IN, USB_REQ_GET_DESCRIPTOR, USB_DT_STRING << 8, 0, sizeof(b), b); -+ /* each config of an otg device has an OTG descriptor */ -+ desc = find_otg(config->extra, config->extralen); -+ for (i = 0; !desc && i < config->bNumInterfaces; i++) { -+ struct usb_interface *intf; - -- if (l < 0) { -- if (open_mode == O_RDWR) -- printf(" Language IDs: none (cannot get min. string descriptor; got len=%d, error=%d:%s)\n", -- l, errno, strerror(errno)); -- return 0; -- } -- if (l < 4 || b[0] != l) { -- printf(" Language IDs: none (invalid length string descriptor %02x; len=%d)\n", b[0], l); -- return 0; -- } -- /* save first language ID for further get_string_descriptors */ -- lang = b[2] | (b[3] << 8); --#if 0 -- printf ("dump_langids: ret=%d:%d, lang=0x%x, length=%d\n", l, errno, lang, b[0]); -- dump_junk2 (b, 32); --#endif -- if(quiet) -- return lang; -- printf(" Language IDs: (length=%d)\n", b[0]); -- for (i = 0; i < ((b[0] - 2) / 2); i++) { -- l = b[2+2*i] | (b[3+2*i] << 8); -- printf(" %04x %s(%s)\n", l, names_langid(l & 0x3ff), names_langid(l)); -+ intf = &config->interface [i]; -+ for (j = 0; !desc && j < intf->num_altsetting; j++) { -+ struct usb_interface_descriptor *alt; -+ -+ alt = &intf->altsetting[j]; -+ desc = find_otg(alt->extra, alt->extralen); -+ for (k = 0; !desc && k < alt->bNumEndpoints; k++) { -+ struct usb_endpoint_descriptor *ep; -+ -+ ep = &alt->endpoint[k]; -+ desc = find_otg(ep->extra, ep->extralen); -+ } -+ } - } -- return lang; --} -+ if (!desc) -+ return; - --/* ---------------------------------------------------------------------- */ -+ printf("OTG Descriptor:\n" -+ " bLength %3u\n" -+ " bDescriptorType %3u\n" -+ " bmAttributes 0x%02x\n" -+ "%s%s", -+ desc[0], desc[1], desc[2], -+ (desc[2] & 0x01) -+ ? " SRP (Session Request Protocol)\n" : "", -+ (desc[2] & 0x02) -+ ? " HNP (Host Negotiation Protocol)\n" : ""); -+} - --static void dumpdev(unsigned char *devdesc, int fd, unsigned int flags) -+static void dumpdev(struct usb_device *dev, unsigned int flags) - { -- unsigned int i, maxcfg; -- u_int16_t lang; -+ struct usb_dev_handle *udev; -+ int i; - -- maxcfg = devdesc[17]; -- if (devdesc[0] < 18 || devdesc[1] != USB_DT_DEVICE) -- maxcfg = 1; -- lang = dump_langids(fd, 1); -- dump_device(fd, devdesc, lang); -- for (i = 0; i < maxcfg; i++) -- do_config(fd, i, lang); -- lang = dump_langids(fd, 0); -+ udev = usb_open(dev); -+ if (udev) { -+ dump_device(udev, &dev->descriptor, flags); -+ if (dev->config) { -+ for (i = 0; i < dev->descriptor.bNumConfigurations; -+ i++) { -+ dump_config(udev, &dev->config[i]); -+ } -+ do_otg(&dev->config[0]); -+ } -+ if (dev->descriptor.bDeviceClass == USB_CLASS_HUB) -+ do_hub(udev, dev->descriptor.bDeviceProtocol); -+ if (dev->descriptor.bcdUSB >= 0x0200) -+ do_dualspeed(udev); -+ usb_close(udev); -+ } -+ else -+ fprintf(stderr, "Couldn't open device\n"); - } - - /* ---------------------------------------------------------------------- */ - - static int dump_one_device(const char *path, unsigned int flags) - { -- unsigned char buf[USB_DT_DEVICE_SIZE]; -- unsigned int vid, pid; -+ struct usb_device *dev; - char vendor[128], product[128]; -- int fd; -- int status; -- -- status=1; - -- if ((fd = open(path, O_RDWR)) == -1) { -- fprintf(stderr, "cannot open %s, %s (%d)\n", path, strerror(errno), errno); -- return(1); -- } -- if (usb_control_msg(fd, USB_DIR_IN, USB_REQ_GET_DESCRIPTOR, (USB_DT_DEVICE << 8), 0, USB_DT_DEVICE_SIZE, buf) < 0) { -- if (open_mode == O_RDWR) -- fprintf(stderr, "cannot get config descriptor, %s (%d)\n", strerror(errno), errno); -- goto err; -+ dev = get_usb_device(path); -+ if (!dev) { -+ fprintf(stderr, "Cannot open %s\n", path); -+ return 1; - } -- vid = buf[8] | (buf[9] << 8); -- pid = buf[10] | (buf[11] << 8); -- get_vendor_string(vendor, sizeof(vendor), vid); -- get_product_string(product, sizeof(product), vid, pid); -- printf("Device: ID %04x:%04x %s %s\n", vid, pid, vendor, product); -- dumpdev(buf, fd, flags); -- status=0; -- err: -- close(fd); -- return(status); -+ get_vendor_string(vendor, sizeof(vendor), dev->descriptor.idVendor); -+ get_product_string(product, sizeof(product), dev->descriptor.idVendor, dev->descriptor.idProduct); -+ printf("Device: ID %04x:%04x %s %s\n", dev->descriptor.idVendor, -+ dev->descriptor.idProduct, -+ vendor, -+ product); -+ dumpdev(dev, flags); -+ return 0; - } - --/* ---------------------------------------------------------------------- */ -- --static int list_devices(int bus, int devnum, int vendorid, int productid, unsigned int flags) -+static int list_devices(int busnum, int devnum, int vendorid, int productid, unsigned int flags) - { -- DIR *d, *d2; -- struct dirent *de, *de2; -- unsigned char buf[256]; -- unsigned int vid, pid; -+ struct usb_bus *bus; -+ struct usb_device *dev; - char vendor[128], product[128]; -- int fd; - int status; - - status=1; /* 1 device not found, 0 device found */ -- -- d = opendir(procbususb); -- if (!d) { -- fprintf(stderr, "cannot open %s, %s (%d)\n", procbususb, strerror(errno), errno); -- return(1); -- } -- while ((de = readdir(d))) { -- if (de->d_name[0] < '0' || de->d_name[0] > '9') -- continue; -- if (bus != -1 && strtoul(de->d_name, NULL, 0) != bus) -+ -+ for (bus = usb_busses; bus; bus = bus->next) { -+ if (busnum != -1 && strtoul(bus->dirname, NULL, 0) != busnum) - continue; -- snprintf(buf, sizeof(buf), "%s/%s/", procbususb, de->d_name); -- if (!(d2 = opendir(buf))) -- continue; -- while ((de2 = readdir(d2))) { -- if (de2->d_name[0] == '.') -- continue; -- if (devnum != -1 && strtoul(de2->d_name, NULL, 0) != devnum) -+ for (dev = bus->devices; dev; dev = dev->next) { -+ if (devnum != -1 && strtoul(dev->filename, NULL, 0) != devnum) - continue; -- snprintf(buf, sizeof(buf), "%s/%s/%s", procbususb, de->d_name, de2->d_name); -- if ((fd = open(buf, open_mode)) == -1) { -- fprintf(stderr, "cannot open %s, %s (%d)\n", buf, strerror(errno), errno); -+ if ((vendorid != -1 && vendorid != dev->descriptor.idVendor) || (productid != -1 && productid != dev->descriptor.idProduct)) - continue; -- } -- if (read(fd, buf, USB_DT_DEVICE_SIZE) != USB_DT_DEVICE_SIZE) { -- fprintf(stderr, "cannot read device descriptor %s (%d)\n", strerror(errno), errno); -- goto err; -- } -- vid = buf[8] | (buf[9] << 8); -- pid = buf[10] | (buf[11] << 8); -- if (buf[0] >= USB_DT_DEVICE_SIZE && ((vendorid != -1 && vendorid != vid) || (productid != -1 && productid != pid))) -- goto err; -- status=0; -- get_vendor_string(vendor, sizeof(vendor), vid); -- get_product_string(product, sizeof(product), vid, pid); -+ status = 0; -+ get_vendor_string(vendor, sizeof(vendor), dev->descriptor.idVendor); -+ get_product_string(product, sizeof(product), dev->descriptor.idVendor, dev->descriptor.idProduct); - if (verblevel > 0) - printf("\n"); -- printf("Bus %s Device %s: ID %04x:%04x %s %s\n", de->d_name, de2->d_name, vid, pid, vendor, product); -+ printf("Bus %s Device %s: ID %04x:%04x %s %s\n", bus->dirname, -+ dev->filename, -+ dev->descriptor.idVendor, -+ dev->descriptor.idProduct, -+ vendor, -+ product); - if (verblevel > 0) -- dumpdev(buf, fd, flags); -- err: -- close(fd); -- } -- closedir(d2); -- } -- closedir(d); -+ dumpdev(dev, flags); -+ } -+ } - return(status); - } - -@@ -1487,7 +1778,6 @@ - { "verbose", 0, 0, 'v' }, - { 0, 0, 0, 0 } - }; -- static const char usage[] = "usage: lsusb [-v] [-x] [-p <procpath>] [-s [<bus>:][<devnum>]] [-d [<vendor>]:[<device>]]\n"; - int c, err = 0; - unsigned int allowctrlmsg = 0, treemode = 0; - int bus = -1, devnum = -1, vendor = -1, product = -1; -@@ -1495,7 +1785,8 @@ - char *cp; - int status; - -- while ((c = getopt_long(argc, argv, "D:vxtP:p:s:d:V", long_options, NULL)) != EOF) { -+ while ((c = getopt_long(argc, argv, "D:vxtP:p:s:d:V", -+ long_options, NULL)) != EOF) { - switch(c) { - case 'V': - printf("lsusb (" PACKAGE ") " VERSION "\n"); -@@ -1503,7 +1794,6 @@ - - case 'v': - verblevel++; -- open_mode = O_RDWR; - break; - - case 'x': -@@ -1514,11 +1804,6 @@ - treemode = 1; - break; - -- case 'P': /* lspci uses -P; but lsusb 0.9, -p */ -- case 'p': -- procbususb = optarg; -- break; -- - case 's': - cp = strchr(optarg, ':'); - if (cp) { -@@ -1556,15 +1841,43 @@ - } - } - if (err || argc > optind) { -- fprintf(stderr, usage); -+ fprintf(stderr, "Usage: lsusb [options]...\n" -+ "List all USB devices\n" -+ "\n" -+ "OPTIONS\n" -+ " -v\n" -+ " Increase verbosity\n" -+ " -s [[bus]:][devnum]\n" -+ " Show only devices in specified bus and/or devnum\n" -+ " -d vendor:[product]\n" -+ " Show only devices with the specified vendor and product ID\n" -+ " -D device\n" -+ " Selects which device lsusb will examine\n" -+ " -t\n" -+ " Dump the physical USB device hierarchy as a tree\n" -+ " -V, --version\n" -+ " Show version of program\n" -+ "\n"); - exit(1); - } -- if ((err = names_init("./usb.ids")) != 0) -- if(err = names_init(USBIDS_FILE)) { -- printf("Error, cannot open USBIDS File \"%s\", %s\n", USBIDS_FILE, strerror(err)); -- exit(1); -+ -+ /* by default, print names as well as numbers */ -+ if ((err = names_init("./usb.ids")) != 0) { -+ if ((err = names_init(USBIDS_FILE)) != 0) { -+ fprintf(stderr, "%s: cannot open \"%s\", %s\n", -+ argv[0], -+ USBIDS_FILE, -+ strerror(err)); -+ } - } - status = 0; -+ -+ usb_init(); -+ -+ usb_find_busses(); -+ usb_find_devices(); -+ -+ - if (treemode) { - /* treemode requires at least verblevel 1 */ - verblevel += 1 - VERBLEVEL_DEFAULT; ---- usbutils-0.11/names.c~usbutils-0.11+cvs20041108 -+++ usbutils-0.11/names.c -@@ -116,6 +116,7 @@ - static struct genericstrtable *physdess[HASHSZ] = { NULL, }; - static struct genericstrtable *hutus[HASHSZ] = { NULL, }; - static struct genericstrtable *langids[HASHSZ] = { NULL, }; -+static struct genericstrtable *countrycodes[HASHSZ] = { NULL, }; - - /* ---------------------------------------------------------------------- */ - -@@ -164,6 +165,11 @@ - return names_genericstrtable(biass, b); - } - -+const char *names_countrycode(unsigned int countrycode) -+{ -+ return names_genericstrtable(countrycodes, countrycode); -+} -+ - const char *names_vendor(u_int16_t vendorid) - { - struct vendor *v; -@@ -402,6 +408,11 @@ - return new_genericstrtable(biass, name, b); - } - -+static int new_countrycode(const char *name, unsigned int countrycode) -+{ -+ return new_genericstrtable(countrycodes, name, countrycode); -+} -+ - /* ---------------------------------------------------------------------- */ - - #define DBG(x) -@@ -553,6 +564,27 @@ - DBG(printf("line %5u audio terminal type %02x %s\n", linectr, u, cp)); - continue; - } -+ if (buf[0] == 'H' && buf[1] == 'C' && buf[2] == 'C' && isspace(buf[3])) { -+ /* HID Descriptor bCountryCode */ -+ cp = buf+3; -+ while (isspace(*cp)) -+ cp++; -+ if (!isxdigit(*cp)) { -+ fprintf(stderr, "Invalid HID country code at line %u\n", linectr); -+ continue; -+ } -+ u = strtoul(cp, &cp, 10); -+ while (isspace(*cp)) -+ cp++; -+ if (!*cp) { -+ fprintf(stderr, "Invalid HID country code at line %u\n", linectr); -+ continue; -+ } -+ if (new_countrycode(cp, u)) -+ fprintf(stderr, "Duplicate HID country code at line %u country %02u %s\n", linectr, u, cp); -+ DBG(printf("line %5u keyboard country code %02u %s\n", linectr, u, cp)); -+ continue; -+ } - if (isxdigit(*cp)) { - /* vendor */ - u = strtoul(cp, &cp, 16); ---- usbutils-0.11/names.h~usbutils-0.11+cvs20041108 -+++ usbutils-0.11/names.h -@@ -44,6 +44,7 @@ - extern const char *names_langid(u_int16_t langid); - extern const char *names_physdes(u_int8_t ph); - extern const char *names_bias(u_int8_t b); -+extern const char *names_countrycode(unsigned int countrycode); - extern int names_init(char *n); - - /* ---------------------------------------------------------------------- */ ---- usbutils-0.11/usb.h -+++ /dev/null -@@ -1,768 +0,0 @@ --#ifndef __LINUX_USB_H --#define __LINUX_USB_H -- --/* USB constants */ -- --/* -- * Device and/or Interface Class codes -- */ --#define USB_CLASS_PER_INTERFACE 0 /* for DeviceClass */ --#define USB_CLASS_AUDIO 1 --#define USB_CLASS_COMM 2 --#define USB_CLASS_HID 3 --#define USB_CLASS_PRINTER 7 --#define USB_CLASS_MASS_STORAGE 8 --#define USB_CLASS_HUB 9 --#define USB_CLASS_DATA 10 --#define USB_CLASS_VENDOR_SPEC 0xff -- --/* -- * USB types -- */ --#define USB_TYPE_STANDARD (0x00 << 5) --#define USB_TYPE_CLASS (0x01 << 5) --#define USB_TYPE_VENDOR (0x02 << 5) --#define USB_TYPE_RESERVED (0x03 << 5) -- --/* -- * USB recipients -- */ --#define USB_RECIP_DEVICE 0x00 --#define USB_RECIP_INTERFACE 0x01 --#define USB_RECIP_ENDPOINT 0x02 --#define USB_RECIP_OTHER 0x03 -- --/* -- * USB directions -- */ --#define USB_DIR_OUT 0 --#define USB_DIR_IN 0x80 -- --/* -- * Descriptor types -- */ --#define USB_DT_DEVICE 0x01 --#define USB_DT_CONFIG 0x02 --#define USB_DT_STRING 0x03 --#define USB_DT_INTERFACE 0x04 --#define USB_DT_ENDPOINT 0x05 -- --#define USB_DT_HID (USB_TYPE_CLASS | 0x01) --#define USB_DT_REPORT (USB_TYPE_CLASS | 0x02) --#define USB_DT_PHYSICAL (USB_TYPE_CLASS | 0x03) --#define USB_DT_HUB (USB_TYPE_CLASS | 0x09) -- --/* -- * Descriptor sizes per descriptor type -- */ --#define USB_DT_DEVICE_SIZE 18 --#define USB_DT_CONFIG_SIZE 9 --#define USB_DT_INTERFACE_SIZE 9 --#define USB_DT_ENDPOINT_SIZE 7 --#define USB_DT_ENDPOINT_AUDIO_SIZE 9 /* Audio extension */ --#define USB_DT_HUB_NONVAR_SIZE 7 --#define USB_DT_HID_SIZE 9 -- --/* -- * Endpoints -- */ --#define USB_ENDPOINT_NUMBER_MASK 0x0f /* in bEndpointAddress */ --#define USB_ENDPOINT_DIR_MASK 0x80 -- --#define USB_ENDPOINT_XFERTYPE_MASK 0x03 /* in bmAttributes */ --#define USB_ENDPOINT_XFER_CONTROL 0 --#define USB_ENDPOINT_XFER_ISOC 1 --#define USB_ENDPOINT_XFER_BULK 2 --#define USB_ENDPOINT_XFER_INT 3 -- --/* -- * USB Packet IDs (PIDs) -- */ --#define USB_PID_UNDEF_0 0xf0 --#define USB_PID_OUT 0xe1 --#define USB_PID_ACK 0xd2 --#define USB_PID_DATA0 0xc3 --#define USB_PID_PING 0xb4 /* USB 2.0 */ --#define USB_PID_SOF 0xa5 --#define USB_PID_NYET 0x96 /* USB 2.0 */ --#define USB_PID_DATA2 0x87 /* USB 2.0 */ --#define USB_PID_SPLIT 0x78 /* USB 2.0 */ --#define USB_PID_IN 0x69 --#define USB_PID_NAK 0x5a --#define USB_PID_DATA1 0x4b --#define USB_PID_PREAMBLE 0x3c /* Token mode */ --#define USB_PID_ERR 0x3c /* USB 2.0: handshake mode */ --#define USB_PID_SETUP 0x2d --#define USB_PID_STALL 0x1e --#define USB_PID_MDATA 0x0f /* USB 2.0 */ -- --/* -- * Standard requests -- */ --#define USB_REQ_GET_STATUS 0x00 --#define USB_REQ_CLEAR_FEATURE 0x01 --#define USB_REQ_SET_FEATURE 0x03 --#define USB_REQ_SET_ADDRESS 0x05 --#define USB_REQ_GET_DESCRIPTOR 0x06 --#define USB_REQ_SET_DESCRIPTOR 0x07 --#define USB_REQ_GET_CONFIGURATION 0x08 --#define USB_REQ_SET_CONFIGURATION 0x09 --#define USB_REQ_GET_INTERFACE 0x0A --#define USB_REQ_SET_INTERFACE 0x0B --#define USB_REQ_SYNCH_FRAME 0x0C -- --/* -- * HID requests -- */ --#define USB_REQ_GET_REPORT 0x01 --#define USB_REQ_GET_IDLE 0x02 --#define USB_REQ_GET_PROTOCOL 0x03 --#define USB_REQ_SET_REPORT 0x09 --#define USB_REQ_SET_IDLE 0x0A --#define USB_REQ_SET_PROTOCOL 0x0B -- -- --#ifdef __KERNEL__ -- --#include <linux/types.h> --#include <linux/ioctl.h> --#include <linux/version.h> --#include <linux/sched.h> --#include <linux/delay.h> --#include <linux/interrupt.h> /* for in_interrupt() */ --#include <linux/config.h> --#include <linux/list.h> -- --#define USB_MAJOR 180 -- --static __inline__ void wait_ms(unsigned int ms) --{ -- if(!in_interrupt()) { -- current->state = TASK_UNINTERRUPTIBLE; -- schedule_timeout(1 + ms * HZ / 1000); -- } -- else -- mdelay(ms); --} -- --typedef struct { -- __u8 requesttype; -- __u8 request; -- __u16 value; -- __u16 index; -- __u16 length; --} devrequest __attribute__ ((packed)); -- --/* -- * USB-status codes: -- * USB_ST* maps to -E* and should go away in the future -- */ -- --#define USB_ST_NOERROR 0 --#define USB_ST_CRC (-EILSEQ) --#define USB_ST_BITSTUFF (-EPROTO) --#define USB_ST_NORESPONSE (-ETIMEDOUT) /* device not responding/handshaking */ --#define USB_ST_DATAOVERRUN (-EOVERFLOW) --#define USB_ST_DATAUNDERRUN (-EREMOTEIO) --#define USB_ST_BUFFEROVERRUN (-ECOMM) --#define USB_ST_BUFFERUNDERRUN (-ENOSR) --#define USB_ST_INTERNALERROR (-EPROTO) /* unknown error */ --#define USB_ST_SHORT_PACKET (-EREMOTEIO) --#define USB_ST_PARTIAL_ERROR (-EXDEV) /* ISO transfer only partially completed */ --#define USB_ST_URB_KILLED (-ENOENT) /* URB canceled by user */ --#define USB_ST_URB_PENDING (-EINPROGRESS) --#define USB_ST_REMOVED (-ENODEV) /* device not existing or removed */ --#define USB_ST_TIMEOUT (-ETIMEDOUT) /* communication timed out, also in urb->status**/ --#define USB_ST_NOTSUPPORTED (-ENOSYS) --#define USB_ST_BANDWIDTH_ERROR (-ENOSPC) /* too much bandwidth used */ --#define USB_ST_URB_INVALID_ERROR (-EINVAL) /* invalid value/transfer type */ --#define USB_ST_URB_REQUEST_ERROR (-ENXIO) /* invalid endpoint */ --#define USB_ST_STALL (-EPIPE) /* pipe stalled, also in urb->status*/ -- --/* -- * USB device number allocation bitmap. There's one bitmap -- * per USB tree. -- */ --struct usb_devmap { -- unsigned long devicemap[128 / (8*sizeof(unsigned long))]; --}; -- --#define USB_MAXBUS 64 -- --struct usb_busmap { -- unsigned long busmap[USB_MAXBUS / (8*sizeof(unsigned long))]; --}; -- --/* -- * This is a USB device descriptor. -- * -- * USB device information -- */ -- --/* Everything but the endpoint maximums are aribtrary */ --#define USB_MAXCONFIG 8 --#define USB_ALTSETTINGALLOC 4 --#define USB_MAXALTSETTING 128 /* Hard limit */ --#define USB_MAXINTERFACES 32 --#define USB_MAXENDPOINTS 32 -- --/* All standard descriptors have these 2 fields in common */ --struct usb_descriptor_header { -- __u8 bLength; -- __u8 bDescriptorType; --} __attribute__ ((packed)); -- --/* Device descriptor */ --struct usb_device_descriptor { -- __u8 bLength; -- __u8 bDescriptorType; -- __u16 bcdUSB; -- __u8 bDeviceClass; -- __u8 bDeviceSubClass; -- __u8 bDeviceProtocol; -- __u8 bMaxPacketSize0; -- __u16 idVendor; -- __u16 idProduct; -- __u16 bcdDevice; -- __u8 iManufacturer; -- __u8 iProduct; -- __u8 iSerialNumber; -- __u8 bNumConfigurations; --} __attribute__ ((packed)); -- --/* Endpoint descriptor */ --struct usb_endpoint_descriptor { -- __u8 bLength; -- __u8 bDescriptorType; -- __u8 bEndpointAddress; -- __u8 bmAttributes; -- __u16 wMaxPacketSize; -- __u8 bInterval; -- __u8 bRefresh; -- __u8 bSynchAddress; -- -- unsigned char *extra; /* Extra descriptors */ -- int extralen; --} __attribute__ ((packed)); -- --/* Interface descriptor */ --struct usb_interface_descriptor { -- __u8 bLength; -- __u8 bDescriptorType; -- __u8 bInterfaceNumber; -- __u8 bAlternateSetting; -- __u8 bNumEndpoints; -- __u8 bInterfaceClass; -- __u8 bInterfaceSubClass; -- __u8 bInterfaceProtocol; -- __u8 iInterface; -- -- struct usb_endpoint_descriptor *endpoint; -- -- unsigned char *extra; -- int extralen; --} __attribute__ ((packed)); -- --struct usb_interface { -- struct usb_interface_descriptor *altsetting; -- -- int act_altsetting; /* active alternate setting */ -- int num_altsetting; /* number of alternate settings */ -- int max_altsetting; /* total memory allocated */ -- -- struct usb_driver *driver; /* driver */ -- void *private_data; --}; -- --/* Configuration descriptor information.. */ --struct usb_config_descriptor { -- __u8 bLength; -- __u8 bDescriptorType; -- __u16 wTotalLength; -- __u8 bNumInterfaces; -- __u8 bConfigurationValue; -- __u8 iConfiguration; -- __u8 bmAttributes; -- __u8 MaxPower; -- -- struct usb_interface *interface; --} __attribute__ ((packed)); -- --/* String descriptor */ --struct usb_string_descriptor { -- __u8 bLength; -- __u8 bDescriptorType; -- __u16 wData[1]; --} __attribute__ ((packed)); -- --struct usb_device; -- --struct usb_driver { -- const char *name; -- -- void * (*probe)(struct usb_device *, unsigned int); -- void (*disconnect)(struct usb_device *, void *); -- -- struct list_head driver_list; -- -- struct file_operations *fops; -- int minor; --}; -- --/* -- * Pointer to a device endpoint interrupt function -greg -- * Parameters: -- * int status - This needs to be defined. Right now each HCD -- * passes different transfer status bits back. Don't use it -- * until we come up with a common meaning. -- * void *buffer - This is a pointer to the data used in this -- * USB transfer. -- * int length - This is the number of bytes transferred in or out -- * of the buffer by this transfer. (-1 = unknown/unsupported) -- * void *dev_id - This is a user defined pointer set when the IRQ -- * is requested that is passed back. -- * -- * Special Cases: -- * if (status == USB_ST_REMOVED), don't trust buffer or len. -- */ --typedef int (*usb_device_irq)(int, void *, int, void *); -- --/*----------------------------------------------------------------------------* -- * New USB Structures * -- *----------------------------------------------------------------------------*/ -- --#define USB_DISABLE_SPD 0x0001 --#define USB_ISO_ASAP 0x0002 --#define USB_URB_EARLY_COMPLETE 0x0004 --#define USB_ASYNC_UNLINK 0x0008 --#define USB_QUEUE_BULK 0x0010 --#define USB_TIMEOUT_KILLED 0x1000 // only set by HCD! -- --typedef struct --{ -- unsigned int offset; -- unsigned int length; // expected length -- unsigned int actual_length; -- unsigned int status; --} iso_packet_descriptor_t, *piso_packet_descriptor_t; -- --struct urb; --typedef void (*usb_complete_t)(struct urb *); -- --typedef struct urb --{ -- spinlock_t lock; // lock for the URB -- void *hcpriv; // private data for host controller -- struct list_head urb_list; // list pointer to all active urbs -- struct urb *next; // pointer to next URB -- struct usb_device *dev; // pointer to associated USB device -- unsigned int pipe; // pipe information -- int status; // returned status -- unsigned int transfer_flags; // USB_DISABLE_SPD | USB_ISO_ASAP | USB_URB_EARLY_COMPLETE -- void *transfer_buffer; // associated data buffer -- int transfer_buffer_length; // data buffer length -- int actual_length; // actual data buffer length -- unsigned char *setup_packet; // setup packet (control only) -- // -- int start_frame; // start frame (iso/irq only) -- int number_of_packets; // number of packets in this request (iso/irq only) -- int interval; // polling interval (irq only) -- int error_count; // number of errors in this transfer (iso only) -- int timeout; // timeout (in jiffies) -- // -- void *context; // context for completion routine -- usb_complete_t complete; // pointer to completion routine -- // -- iso_packet_descriptor_t iso_frame_desc[0]; --} urb_t, *purb_t; -- --#define FILL_CONTROL_URB(a,aa,b,c,d,e,f,g) \ -- do {\ -- spin_lock_init(&(a)->lock);\ -- (a)->dev=aa;\ -- (a)->pipe=b;\ -- (a)->setup_packet=c;\ -- (a)->transfer_buffer=d;\ -- (a)->transfer_buffer_length=e;\ -- (a)->complete=f;\ -- (a)->context=g;\ -- } while (0) -- --#define FILL_BULK_URB(a,aa,b,c,d,e,f) \ -- do {\ -- spin_lock_init(&(a)->lock);\ -- (a)->dev=aa;\ -- (a)->pipe=b;\ -- (a)->transfer_buffer=c;\ -- (a)->transfer_buffer_length=d;\ -- (a)->complete=e;\ -- (a)->context=f;\ -- } while (0) -- --#define FILL_INT_URB(a,aa,b,c,d,e,f,g) \ -- do {\ -- spin_lock_init(&(a)->lock);\ -- (a)->dev=aa;\ -- (a)->pipe=b;\ -- (a)->transfer_buffer=c;\ -- (a)->transfer_buffer_length=d;\ -- (a)->complete=e;\ -- (a)->context=f;\ -- (a)->interval=g;\ -- (a)->start_frame=-1;\ -- } while (0) -- --#define FILL_CONTROL_URB_TO(a,aa,b,c,d,e,f,g,h) \ -- do {\ -- spin_lock_init(&(a)->lock);\ -- (a)->dev=aa;\ -- (a)->pipe=b;\ -- (a)->setup_packet=c;\ -- (a)->transfer_buffer=d;\ -- (a)->transfer_buffer_length=e;\ -- (a)->complete=f;\ -- (a)->context=g;\ -- (a)->timeout=h;\ -- } while (0) -- --#define FILL_BULK_URB_TO(a,aa,b,c,d,e,f,g) \ -- do {\ -- spin_lock_init(&(a)->lock);\ -- (a)->dev=aa;\ -- (a)->pipe=b;\ -- (a)->transfer_buffer=c;\ -- (a)->transfer_buffer_length=d;\ -- (a)->complete=e;\ -- (a)->context=f;\ -- (a)->timeout=g;\ -- } while (0) -- --purb_t usb_alloc_urb(int iso_packets); --void usb_free_urb (purb_t purb); --int usb_submit_urb(purb_t purb); --int usb_unlink_urb(purb_t purb); --int usb_internal_control_msg(struct usb_device *usb_dev, unsigned int pipe, devrequest *cmd, void *data, int len, int timeout); --int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe, void *data, int len, int *actual_length, int timeout); -- --/*-------------------------------------------------------------------* -- * COMPATIBILITY STUFF * -- *-------------------------------------------------------------------*/ --typedef struct --{ -- wait_queue_head_t *wakeup; -- -- usb_device_irq handler; -- void* stuff; -- /* more to follow */ --} api_wrapper_data; -- --struct irq_wrapper_data { -- void *context; -- usb_device_irq handler; --}; -- --/* -------------------------------------------------------------------------- */ -- --struct usb_operations { -- int (*allocate)(struct usb_device *); -- int (*deallocate)(struct usb_device *); -- int (*get_frame_number) (struct usb_device *usb_dev); -- int (*submit_urb) (struct urb* purb); -- int (*unlink_urb) (struct urb* purb); --}; -- --/* -- * Allocated per bus we have -- */ --struct usb_bus { -- int busnum; /* Bus number (in order of reg) */ -- -- struct usb_devmap devmap; /* Device map */ -- struct usb_operations *op; /* Operations (specific to the HC) */ -- struct usb_device *root_hub; /* Root hub */ -- struct list_head bus_list; -- void *hcpriv; /* Host Controller private data */ -- -- unsigned int bandwidth_allocated; /* on this Host Controller; */ -- /* applies to Int. and Isoc. pipes; */ -- /* measured in microseconds/frame; */ -- /* range is 0..900, where 900 = */ -- /* 90% of a 1-millisecond frame */ -- int bandwidth_int_reqs; /* number of Interrupt requesters */ -- int bandwidth_isoc_reqs; /* number of Isoc. requesters */ -- -- /* usbdevfs inode list */ -- struct list_head inodes; --}; -- --#define USB_MAXCHILDREN (8) /* This is arbitrary */ -- --struct usb_device { -- int devnum; /* Device number on USB bus */ -- int slow; /* Slow device? */ -- -- atomic_t refcnt; /* Reference count */ -- -- unsigned int toggle[2]; /* one bit for each endpoint ([0] = IN, [1] = OUT) */ -- unsigned int halted[2]; /* endpoint halts; one bit per endpoint # & direction; */ -- /* [0] = IN, [1] = OUT */ -- struct usb_config_descriptor *actconfig;/* the active configuration */ -- int epmaxpacketin[16]; /* INput endpoint specific maximums */ -- int epmaxpacketout[16]; /* OUTput endpoint specific maximums */ -- -- struct usb_device *parent; -- struct usb_bus *bus; /* Bus we're part of */ -- -- struct usb_device_descriptor descriptor;/* Descriptor */ -- struct usb_config_descriptor *config; /* All of the configs */ -- -- int have_langid; /* whether string_langid is valid yet */ -- int string_langid; /* language ID for strings */ -- -- void *hcpriv; /* Host Controller private data */ -- -- /* usbdevfs inode list */ -- struct list_head inodes; -- struct list_head filelist; -- -- /* -- * Child devices - these can be either new devices -- * (if this is a hub device), or different instances -- * of this same device. -- * -- * Each instance needs its own set of data structures. -- */ -- -- int maxchild; /* Number of ports if hub */ -- struct usb_device *children[USB_MAXCHILDREN]; --}; -- --extern int usb_register(struct usb_driver *); --extern void usb_deregister(struct usb_driver *); -- --/* used these for multi-interface device registration */ --extern void usb_driver_claim_interface(struct usb_driver *driver, struct usb_interface *iface, void* priv); --extern int usb_interface_claimed(struct usb_interface *iface); --extern void usb_driver_release_interface(struct usb_driver *driver, struct usb_interface *iface); -- --extern struct usb_bus *usb_alloc_bus(struct usb_operations *); --extern void usb_free_bus(struct usb_bus *); --extern void usb_register_bus(struct usb_bus *); --extern void usb_deregister_bus(struct usb_bus *); -- --extern struct usb_device *usb_alloc_dev(struct usb_device *parent, struct usb_bus *); --extern void usb_free_dev(struct usb_device *); --extern void usb_inc_dev_use(struct usb_device *); --#define usb_dec_dev_use usb_free_dev --extern void usb_release_bandwidth(struct usb_device *, int); -- --extern int usb_control_msg(struct usb_device *dev, unsigned int pipe, __u8 request, __u8 requesttype, __u16 value, __u16 index, void *data, __u16 size, int timeout); -- --extern void usb_init_root_hub(struct usb_device *dev); --extern int usb_root_hub_string(int id, int serial, char *type, __u8 *data, int len); --extern void usb_connect(struct usb_device *dev); --extern void usb_disconnect(struct usb_device **); -- --extern void usb_destroy_configuration(struct usb_device *dev); -- --int usb_get_current_frame_number (struct usb_device *usb_dev); -- --/* -- * Calling this entity a "pipe" is glorifying it. A USB pipe -- * is something embarrassingly simple: it basically consists -- * of the following information: -- * - device number (7 bits) -- * - endpoint number (4 bits) -- * - current Data0/1 state (1 bit) -- * - direction (1 bit) -- * - speed (1 bit) -- * - max packet size (2 bits: 8, 16, 32 or 64) [Historical; now gone.] -- * - pipe type (2 bits: control, interrupt, bulk, isochronous) -- * -- * That's 18 bits. Really. Nothing more. And the USB people have -- * documented these eighteen bits as some kind of glorious -- * virtual data structure. -- * -- * Let's not fall in that trap. We'll just encode it as a simple -- * unsigned int. The encoding is: -- * -- * - max size: bits 0-1 (00 = 8, 01 = 16, 10 = 32, 11 = 64) [Historical; now gone.] -- * - direction: bit 7 (0 = Host-to-Device [Out], 1 = Device-to-Host [In]) -- * - device: bits 8-14 -- * - endpoint: bits 15-18 -- * - Data0/1: bit 19 -- * - speed: bit 26 (0 = Full, 1 = Low Speed) -- * - pipe type: bits 30-31 (00 = isochronous, 01 = interrupt, 10 = control, 11 = bulk) -- * -- * Why? Because it's arbitrary, and whatever encoding we select is really -- * up to us. This one happens to share a lot of bit positions with the UHCI -- * specification, so that much of the uhci driver can just mask the bits -- * appropriately. -- */ -- --#define PIPE_ISOCHRONOUS 0 --#define PIPE_INTERRUPT 1 --#define PIPE_CONTROL 2 --#define PIPE_BULK 3 -- --#define usb_maxpacket(dev, pipe, out) (out \ -- ? (dev)->epmaxpacketout[usb_pipeendpoint(pipe)] \ -- : (dev)->epmaxpacketin [usb_pipeendpoint(pipe)] ) --#define usb_packetid(pipe) (((pipe) & USB_DIR_IN) ? USB_PID_IN : USB_PID_OUT) -- --#define usb_pipeout(pipe) ((((pipe) >> 7) & 1) ^ 1) --#define usb_pipein(pipe) (((pipe) >> 7) & 1) --#define usb_pipedevice(pipe) (((pipe) >> 8) & 0x7f) --#define usb_pipe_endpdev(pipe) (((pipe) >> 8) & 0x7ff) --#define usb_pipeendpoint(pipe) (((pipe) >> 15) & 0xf) --#define usb_pipedata(pipe) (((pipe) >> 19) & 1) --#define usb_pipeslow(pipe) (((pipe) >> 26) & 1) --#define usb_pipetype(pipe) (((pipe) >> 30) & 3) --#define usb_pipeisoc(pipe) (usb_pipetype((pipe)) == PIPE_ISOCHRONOUS) --#define usb_pipeint(pipe) (usb_pipetype((pipe)) == PIPE_INTERRUPT) --#define usb_pipecontrol(pipe) (usb_pipetype((pipe)) == PIPE_CONTROL) --#define usb_pipebulk(pipe) (usb_pipetype((pipe)) == PIPE_BULK) -- --#define PIPE_DEVEP_MASK 0x0007ff00 -- --/* The D0/D1 toggle bits */ --#define usb_gettoggle(dev, ep, out) (((dev)->toggle[out] >> ep) & 1) --#define usb_dotoggle(dev, ep, out) ((dev)->toggle[out] ^= (1 << ep)) --#define usb_settoggle(dev, ep, out, bit) ((dev)->toggle[out] = ((dev)->toggle[out] & ~(1 << ep)) | ((bit) << ep)) -- --/* Endpoint halt control/status */ --#define usb_endpoint_out(ep_dir) (((ep_dir >> 7) & 1) ^ 1) --#define usb_endpoint_halt(dev, ep, out) ((dev)->halted[out] |= (1 << (ep))) --#define usb_endpoint_running(dev, ep, out) ((dev)->halted[out] &= ~(1 << (ep))) --#define usb_endpoint_halted(dev, ep, out) ((dev)->halted[out] & (1 << (ep))) -- --static inline unsigned int __create_pipe(struct usb_device *dev, unsigned int endpoint) --{ -- return (dev->devnum << 8) | (endpoint << 15) | (dev->slow << 26); --} -- --static inline unsigned int __default_pipe(struct usb_device *dev) --{ -- return (dev->slow << 26); --} -- --/* Create various pipes... */ --#define usb_sndctrlpipe(dev,endpoint) ((PIPE_CONTROL << 30) | __create_pipe(dev,endpoint)) --#define usb_rcvctrlpipe(dev,endpoint) ((PIPE_CONTROL << 30) | __create_pipe(dev,endpoint) | USB_DIR_IN) --#define usb_sndisocpipe(dev,endpoint) ((PIPE_ISOCHRONOUS << 30) | __create_pipe(dev,endpoint)) --#define usb_rcvisocpipe(dev,endpoint) ((PIPE_ISOCHRONOUS << 30) | __create_pipe(dev,endpoint) | USB_DIR_IN) --#define usb_sndbulkpipe(dev,endpoint) ((PIPE_BULK << 30) | __create_pipe(dev,endpoint)) --#define usb_rcvbulkpipe(dev,endpoint) ((PIPE_BULK << 30) | __create_pipe(dev,endpoint) | USB_DIR_IN) --#define usb_sndintpipe(dev,endpoint) ((PIPE_INTERRUPT << 30) | __create_pipe(dev,endpoint)) --#define usb_rcvintpipe(dev,endpoint) ((PIPE_INTERRUPT << 30) | __create_pipe(dev,endpoint) | USB_DIR_IN) --#define usb_snddefctrl(dev) ((PIPE_CONTROL << 30) | __default_pipe(dev)) --#define usb_rcvdefctrl(dev) ((PIPE_CONTROL << 30) | __default_pipe(dev) | USB_DIR_IN) -- --/* -- * Send and receive control messages.. -- */ --int usb_new_device(struct usb_device *dev); --int usb_reset_device(struct usb_device *dev); --int usb_set_address(struct usb_device *dev); --int usb_get_descriptor(struct usb_device *dev, unsigned char desctype, -- unsigned char descindex, void *buf, int size); --int usb_get_class_descriptor(struct usb_device *dev, int ifnum, unsigned char desctype, -- unsigned char descindex, void *buf, int size); --int usb_get_device_descriptor(struct usb_device *dev); --int __usb_get_extra_descriptor(char *buffer, unsigned size, unsigned char type, void **ptr); --int usb_get_status(struct usb_device *dev, int type, int target, void *data); --int usb_get_protocol(struct usb_device *dev, int ifnum); --int usb_set_protocol(struct usb_device *dev, int ifnum, int protocol); --int usb_set_interface(struct usb_device *dev, int ifnum, int alternate); --int usb_set_idle(struct usb_device *dev, int ifnum, int duration, int report_id); --int usb_set_configuration(struct usb_device *dev, int configuration); --int usb_get_report(struct usb_device *dev, int ifnum, unsigned char type, -- unsigned char id, void *buf, int size); --int usb_set_report(struct usb_device *dev, int ifnum, unsigned char type, -- unsigned char id, void *buf, int size); --int usb_string(struct usb_device *dev, int index, char *buf, size_t size); --int usb_clear_halt(struct usb_device *dev, int pipe); -- --#define usb_get_extra_descriptor(ifpoint,type,ptr)\ -- __usb_get_extra_descriptor((ifpoint)->extra,(ifpoint)->extralen,type,(void**)ptr) -- --/* -- * Some USB bandwidth allocation constants. -- */ --#define BW_HOST_DELAY 1000L /* nanoseconds */ --#define BW_HUB_LS_SETUP 333L /* nanoseconds */ -- /* 4 full-speed bit times (est.) */ -- --#define FRAME_TIME_BITS 12000L /* frame = 1 millisecond */ --#define FRAME_TIME_MAX_BITS_ALLOC (90L * FRAME_TIME_BITS / 100L) --#define FRAME_TIME_USECS 1000L --#define FRAME_TIME_MAX_USECS_ALLOC (90L * FRAME_TIME_USECS / 100L) -- --#define BitTime(bytecount) (7 * 8 * bytecount / 6) /* with integer truncation */ -- /* Trying not to use worst-case bit-stuffing -- of (7/6 * 8 * bytecount) = 9.33 * bytecount */ -- /* bytecount = data payload byte count */ -- --#define NS_TO_US(ns) ((ns + 500L) / 1000L) -- /* convert & round nanoseconds to microseconds */ -- --/* -- * Debugging helpers.. -- */ --void usb_show_device_descriptor(struct usb_device_descriptor *); --void usb_show_config_descriptor(struct usb_config_descriptor *); --void usb_show_interface_descriptor(struct usb_interface_descriptor *); --void usb_show_endpoint_descriptor(struct usb_endpoint_descriptor *); --void usb_show_device(struct usb_device *); --void usb_show_string(struct usb_device *dev, char *id, int index); -- --#ifdef DEBUG --#define dbg(format, arg...) printk(KERN_DEBUG __FILE__ ": " format "\n" , ## arg) --#else --#define dbg(format, arg...) do {} while (0) --#endif --#define err(format, arg...) printk(KERN_ERR __FILE__ ": " format "\n" , ## arg) --#define info(format, arg...) printk(KERN_INFO __FILE__ ": " format "\n" , ## arg) --#define warn(format, arg...) printk(KERN_WARNING __FILE__ ": " format "\n" , ## arg) -- -- --/* -- * bus and driver list -- */ -- --extern struct list_head usb_driver_list; --extern struct list_head usb_bus_list; -- --/* -- * USB device fs stuff -- */ -- --#ifdef CONFIG_USB_DEVICEFS -- --/* -- * these are expected to be called from the USB core/hub thread -- * with the kernel lock held -- */ --extern void usbdevfs_add_bus(struct usb_bus *bus); --extern void usbdevfs_remove_bus(struct usb_bus *bus); --extern void usbdevfs_add_device(struct usb_device *dev); --extern void usbdevfs_remove_device(struct usb_device *dev); -- --extern int usbdevfs_init(void); --extern void usbdevfs_cleanup(void); -- --#else /* CONFIG_USB_DEVICEFS */ -- --extern inline void usbdevfs_add_bus(struct usb_bus *bus) {} --extern inline void usbdevfs_remove_bus(struct usb_bus *bus) {} --extern inline void usbdevfs_add_device(struct usb_device *dev) {} --extern inline void usbdevfs_remove_device(struct usb_device *dev) {} -- --extern inline int usbdevfs_init(void) { return 0; } --extern inline void usbdevfs_cleanup(void) { } -- --#endif /* CONFIG_USB_DEVICEFS */ -- --#endif /* __KERNEL__ */ -- --#endif ---- usbutils-0.11/usb.ids~usbutils-0.11+cvs20041108 -+++ usbutils-0.11/usb.ids -@@ -3,8 +3,10 @@ - # - # Maintained by Vojtech Pavlik <vojtech@suse.cz> - # If you have any new entries, send them to the maintainer. -+# The latest version can be obtained from -+# http://www.linux-usb.org/usb.ids - # --# $Id$ -+# $Id$ - # - - # Vendors, devices and interfaces. Please keep sorted. -@@ -14,22 +16,26 @@ - # device device_name <-- single tab - # interface interface_name <-- two tabs - --0000 Virtual -- 0000 Hub - 0386 LTS - 0001 PSX for USB Converter --03e8 AOX Inc. -+03e8 EndPoints, Inc. - 0004 SE401 WebCam - 0008 101 Ethernet [klsi] - 03e9 Thesys Microelectronics - 03ea Data Broadcasting Corp. - 03eb Atmel Corp. - 3301 4-port Hub -- 7603 AT76c503a D-Link DWL-120 --03ec Iwatsu America Inc. -+ 3312 4-port Hub -+ 7603 AT76c503a D-Link DWL-120 802.11b Adapter -+ 7605 AT76c503a 802.11b Adapter -+ 7606 AT76c505 802.11b dapter -+03ec Iwatsu America, Inc. - 03ed Mitel Corp. - 03ee Mitsumi - 0000 CD-R/RW Drive -+ 641f WIF-0402C Bluetooth Adapter -+ 6440 WML-C52APR Bluetooth Adapter -+ 6901 SmartDisk FDD - 03f0 Hewlett-Packard - 0004 DeskJet 895c - 0101 ScanJet 4100c -@@ -39,6 +45,8 @@ - 0107 CD-Writer Plus - 010c Multimedia Keyboard Hub - 0111 G55xi Printer/Scanner/Copier -+ 011c hn210w 802.11b Adapter -+ 0121 HP49g+ Calculator - 0201 ScanJet 6200c - 0202 PhotoSmart S20 - 0204 DeskJet 815c -@@ -46,30 +54,80 @@ - 0207 CD-Writer Plus 8200e - 020c Multimedia Keyboard - 0304 DeskJet 810c/812c -+ 0305 ScanJet 4300c - 0311 OfficeJet G85xi - 0317 LaserJet 1200 - 0401 ScanJet 5200c - 0404 DeskJet 830c/832c - 0405 ScanJet 3400cse - 0504 DeskJet 885c -+ 0505 ScanJet 2100c -+ 0517 LaserJet 1000 - 0601 ScanJet 6300c - 0604 DeskJet 840c - 0605 ScanJet 2200c - 0701 ScanJet 5300c/5370c -+ 0704 DeskJet 825c - 0705 ScanJet 4400c -+ 0712 DeskJet 1180c -+ 0801 ScanJet 7400c - 0804 DeskJet 816c -+ 0901 ScanJet 2300c -+ 0904 DeskJet 845c - 1004 DeskJet 970c/970cse -- 1104 Deskjet 959C -+ 1005 ScanJet 5400c -+ 1016 Jornada 548 Pocket PC -+ 1104 DeskJet 959c - 1105 ScanJet 5470c -+ 1116 Jornada 568 Pocket PC - 1151 750xi Printer/Scanner/Copier - 1204 DeskJet 930c -+ 1305 ScanJet 4570c -+ 1317 LaserJet 1005 -+ 1405 Scanjet 3670 -+ 1504 DeskJet 920c -+ 1604 DeskJet 940c -+ 1904 DeskJet 3820 -+ 1e11 PSC-950 - 2004 DeskJet 640c -+ 2005 ScanJet 3570c -+ 2104 DeskJet 630c -+ 2205 ScanJet 3500c -+ 2304 DeskJet 656c -+ 2305 ScanJet 3970c -+ 2811 PSC-2100 - 3102 PhotoSmart P1100 Printer w/ Card Reader -- 4102 PhotoSmart 618 Camera -- 6202 PhotoSmart 215 Camera -- 6302 PhotoSmart 318/612 Camera -- efbe NEC Picty900 -+ 3104 DeskJet 960c -+ 3304 DeskJet 990c -+ 3404 DeskJet 6122 -+ 3504 DeskJet 6127c -+ 3c02 PhotoSmart 7350 -+ 3f11 PSC-1315 -+ 4002 PhotoSmart 720 / PhotoSmart 935 (storage) -+ 4102 PhotoSmart 618 -+ 4202 PhotoSmart 812 -+ 4302 PhotoSmart 850 (ptp) -+ 4402 PhotoSmart 935 (ptp) -+ 5004 DeskJet 995c -+ 6004 DeskJet 5550 -+ 6104 DeskJet 5650c -+ 6202 PhotoSmart 215 -+ 6204 DeskJet 5150c -+ 6302 PhotoSmart 318/612 -+ 6402 PhotoSmart 715 (ptp) -+ 6502 PhotoSmart 120 (ptp) -+ 6602 PhotoSmart 320 -+ 6702 PhotoSmart 720 (ptp) -+ 6802 PhotoSmart 620 (ptp) -+ 6a02 PhotoSmart 735 (ptp) -+ 7004 DeskJet 3320c -+ 7104 DeskJet 3420c -+ 7202 PhotoSmart 43x (ptp) -+ 7204 DeskJet 36xx -+ 7304 DeskJet 35xx -+ a004 DeskJet 5850c - bef4 NEC Picty760 -+ efbe NEC Picty900 - f0be NEC Picty920 - f1be NEC Picty800 - 03f1 Genoa Technology -@@ -79,32 +137,35 @@ - 03f5 Siemens Electromechanical - 03f8 Epson Imaging Technology Center - 03f9 KeyTronic Corp. --03fb OPTi Inc. -+03fb OPTi, Inc. - 03fc Elitegroup Computer Systems --03fd Xilinx Inc. -+03fd Xilinx, Inc. - 03fe Farallon Comunications --0400 National Semiconductor -- 1000 BearPaw 1200 Scanner -- 1001 BearPaw 2400 Scanner --0401 National Registry Inc. --0402 Acer Labs Inc. --0403 Future Technology Devices -+0400 National Semiconductor Corp. -+ 1000 Mustek BearPaw 1200 Scanner -+ 1001 Mustek BearPaw 2400 Scanner -+0401 National Registry, Inc. -+0402 ALi Corp. -+0403 Future Technology Devices International, Ltd - 0000 H4SMK 7 Port Hub -- 8070 7 Port Hub -+ 6001 8-bit FIFO - 8040 4 Port Hub -+ 8070 7 Port Hub - 8370 7 Port Hub - 8371 PS/2 Keyboard And Mouse - 8372 FT8U100AX Serial Port -+ F208 Papenmeier Braille-Display - 0404 NCR Corp. --0405 inSilicon -+0405 Synopsys, Inc. - 0406 Fujitsu-ICL Computers - 0407 Fujitsu Personal Systems, Inc. --0408 Quanta Computer Inc. --0409 NEC Systems -+0408 Quanta Computer, Inc. -+0409 NEC Corp. - 0012 ATerm IT75DSU ISDN TA - 0014 Japanese Keyboard - 0027 MultiSync Monitor -- 0058 USB2.0 Hub Controller -+ 0058 HighSpeed Hub -+ 0059 HighSpeed Hub - 55aa Hub - 55ab Hub [iMac kbd] - efbe P!cty 900 [HP DJ] -@@ -122,21 +183,45 @@ - 0131 DC-5000 - 0132 DC-3400 - 0140 DC-4800 -+ 0160 DC4800 -+ 0170 DX3900 - 0300 EZ-200 - 0400 MC3 -+ 0500 DX3500 -+ 0510 DX3600 -+ 0525 DX3215 -+ 0530 DX3700 -+ 0535 EasyShare CX4230 Camera -+ 0540 LS420 -+ 0550 DX4900 -+ 0555 DX4330 -+ 0560 CX4200 -+ 0565 CX4210 -+ 0566 CX4300 -+ 0568 LS443 -+ 0569 LS663 -+ 0570 DX6340 -+ 0571 CX6330 -+ 0572 DX6440 -+ 0573 CX6230 -+ 0574 CX6200 -+ 0575 DX6490 -+ 0576 DX4530 - 040b Weltrend Semiconductor --040c VTech Computers Ltd. -+040c VTech Computers, Ltd - 040d VIA Technologies, Inc. - 040e MCCI - 040f Echo Speech Corp. --0411 Melco, Inc. -+0411 MelCo., Inc. - 0001 LUA-TX Ethernet [pegasus] -+ 0016 WLI-USB-S11 802.11b Adapter -+ 0027 WLI-USB-KS11G 802.11b Adapter - 0412 Award Software International --0413 Leadtek Research Inc. --0414 Giga-Byte Technology Co., Ltd. -+0413 Leadtek Research, Inc. -+0414 Giga-Byte Technology Co., Ltd - 0416 Winbond Electronics Corp. - 0961 AVL Flash Card Reader -- 5518 Hub -+ 5518 4-Port Hub - 551a PC Sync Keypad - 551b PC Async Keypad - 551c Sync Tenkey -@@ -144,36 +229,58 @@ - 551e Keyboard - 551f Keyboard w/ Sys and Media - 5521 Keyboard -+ 7723 SD Card Reader - 6481 16-bit Scanner - 0417 Symbios Logic - 0418 AST Research --0419 Samsung Info. Systems America Inc. --041a Phoenix Technologies, Ltd. -+0419 Samsung Info. Systems America, Inc. -+ 3001 Xerox P1202 Laser Printer -+ 8002 SyncMaster 757DFX HID Device -+041a Phoenix Technologies, Ltd - 041b d'TV - 041d S3, Inc. --041e Creative Labs -+041e Creative Technology, Ltd - 1002 Nomad II MP3 Player - 1003 Blaster GamePad Cobra - 1050 GamePad Cobra -+ 3020 SoundBlaster Audigy 2 NX - 4003 VideoBlaster WebCam Go Plus [W9967CF] - 4004 Nomad II MG MP3 Player - 400a PC-Cam 300 - 400b PC-Cam 600 - 400c WebCam 5 [pwc] -+ 400d WebCam PD1001 -+ 4011 WebCam PRO eX -+ 4013 PC-Cam 750 -+ 4015 CardCam Value -+ 4017 WebCam Mobile -+ 4018 WebCam Vista -+ 401c Creative WebCam NX [PD1110] -+ 4100 Nomad Jukebox 2 MP3 player -+ 4101 Nomad Jukebox 3 MP3 player -+ 4106 Nomad MuVo MP3 Player -+ 4108 Nomad Jukebox Zen MP3 player -+ 410b Nomad Jukebox Zen USB 2.0 MP3 player -+ 4109 Nomad Jukebox Zen NX MP3 player -+ 4110 Nomad Jukebox Zen Xtra MP3 player -+ 4111 Dell Digital Jukebox - 041f LCS Telegraphics - 0420 Chips and Technologies - 0421 Nokia Mobile Phones --0422 ADI Systems Inc. -+ 0401 6650 GSM Phone -+ 0800 Connectivity Cable DKU-5 -+0422 ADI Systems, Inc. - 0423 Computer Access Technology Corp. - 000a NetMate Ethernet - 000c NetMate2 Ethernet - 000d USB Chief Analyzer - 1237 Andromeda Hub - 0424 Standard Microsystems Corp. --0425 Motorola Semiconductors HK, Ltd. --0426 Integrated Device Technology --0427 Motorola Electronics Taiwan Ltd. --0428 Advanced Gravis Computer Tech. Ltd. -+ 223a 8-in-1 Card Reader -+0425 Motorola Semiconductors HK, Ltd -+0426 Integrated Device Technology, Inc. -+0427 Motorola Electronics Taiwan, Ltd -+0428 Advanced Gravis Computer Tech, Ltd - 4001 GamePad Pro - 0429 Cirrus Logic - 042a Ericsson Austrian, AG -@@ -182,29 +289,38 @@ - 042d Micronics - 042e Acer, Inc. - 042f Molex, Inc. --0430 Sun Microsystems -+0430 Sun Microsystems, Inc. - 0005 Type 6 Keyboard - 0100 3-button Mouse - 0431 Itac Systems, Inc. - 0432 Unisys Corp. --0433 Alps Electric Inc. -+0433 Alps Electric, Inc. - 1101 IBM Game Controller --0434 Samsung Info. Systems America Inc. -+0434 Samsung Info. Systems America, Inc. - 0435 Hyundai Electronics America - 0436 Taugagreining HF - 0437 Framatome Connectors USA --0438 Advanced Micro Devices -+0438 Advanced Micro Devices, Inc. - 0439 Voice Technologies Group --043d Lexmark International Inc. -+043d Lexmark International, Inc. - 0002 Optra E310 Printer - 0009 Optra S2450 Printer - 000c Optra E312 Printer - 0017 Z32 printer - 0018 Z52 Printer -+ 001c Kodak Personal Picture Maker 200 Printer -+ 001f Kodak Personal Picture Maker 200 Card Reader - 0020 Z51 Printer -+ 0021 Z33 Printer -+ 002d X70/X73 Scan/Print/Copy - 003d X83 Scan/Print/Copy --043e LG Electronics USA Inc. -+ 0057 Z35 Printer -+ 0060 X74/X75 Scanner -+ 0061 X74 Hub -+ 0069 X74 Printer -+043e LG Electronics USA, Inc. - 42bd Flatron 795FT Plus Monitor -+ 4a4d Flatron 915FT Plus Monitor - 7001 MF-PD100 Soul Digital MP3 Player - 8484 LPC-U30 Webcam II - 8585 LPC-UC35 Webcam -@@ -212,49 +328,69 @@ - 0440 Eizo Nanao Corp. - 0441 Winbond Systems Lab. - 1456 Hub --0442 Ericsson Inc. --0443 Gateway 2000 --0445 Lucent Technologies --0446 NMB Technologies, Inc. -+0442 Ericsson, Inc. -+0443 Gateway, Inc. -+0445 Lucent Technologies, Inc. -+0446 NMB Technologies Corp. - 0447 Momentum Microsystems --044a Shamrock Tech. Co., Ltd. -+044a Shamrock Tech. Co., Ltd - 044b WSI - 044c CCL/ITRI --044d Siemens Nixdorf --044e Alps Electric Co. -+044d Siemens Nixdorf AG -+044e Alps Electric Co., Ltd - 2002 MD-5500 Printer -+ 3001 UGTZ4 Bluetooth - 044f ThrustMaster, Inc. -+ 0400 HOTAS Cougar - a0a3 Fusion Digital GamePad -+ b203 360 Modena Pro Wheel - b300 Firestorm Dual Power --0450 DFI Inc. --0451 Texas Instruments -+ b304 Firestorm Dual Power -+0450 DFI, Inc. -+0451 Texas Instruments, Inc. - 1428 Hub - 1446 TUSB2040/2070 Hub - 2036 TUSB2036 Hub - 2046 TUSB2046 Hub - 2077 TUSB2077 Hub -+ 6000 AU5 ADSL Modem (pre-reenum) -+ 6001 AU5 ADSL Modem - e001 GraphLink -+ e004 TI-89 Titanium Calculator -+ e008 TI-84 Plus Silver Calculator - 0452 Mitsubishi Electronics America, Inc. -+ 0050 Diamond Pro 900u CRT Monitor -+ 0051 Integrated Hub - 0453 CMD Technology - 0454 Vobis Microcomputer AG - 0455 Telematics International, Inc. - 0456 Analog Devices, Inc. - 0457 Silicon Integrated Systems Corp. --0458 KYE Systems Corp.(Mouse Systems) -+0458 KYE Systems Corp. (Mouse Systems) - 0001 Mouse - 0002 Genius NetMouse Pro - 0003 Genius NetScroll+ -+ 000e VideoCAM Web -+ 001a Genius WebScroll+ - 0100 EasyPen Tablet - 0101 CueCat - 1003 Genius VideoCam - 1004 Flight2000 F-23 Joystick -+ 100a Aashima Technology Trust Sight Fighter Vibration Feedback Joystick - 2001 ColorPage-Vivid Pro Scanner -+ 2007 ColorPage-HR6 V2 Scanner -+ 2008 ColorPage-HR6 V2 Scanner -+ 2009 ColorPage-HR6A Scanner -+ 2011 ColorPage-Vivid3x Scanner -+ 2013 ColorPage-HR7 Scanner -+ 2015 ColorPage-HR7LE Scanner -+ 2016 ColorPage-HR6X Scanner - 0459 Adobe Systems, Inc. --045a Diamond Multimedia Systems -+045a SONICblue, Inc. - 0b4a SupraMax 2890 56K Modem [Lucent Atlas] - 0b68 SupraMax 56K Modem --045b Hitachi, Ltd. --045d Nortel Networks -+045b Hitachi, Ltd -+045d Nortel Networks, Ltd - 045e Microsoft Corp. - 0008 SideWinder Precision Pro - 0009 IntelliMouse -@@ -264,6 +400,7 @@ - 001b SideWinder Force Feedback 2 Joystick - 001d Natural Keyboard Pro - 001e IntelliMouse Explorer -+ 0023 Trackball Optical - 0024 Trackball Explorer - 0025 IntelliEye Mouse - 0026 SideWinder GamePad Pro -@@ -271,58 +408,81 @@ - 0028 SideWinder Dual Strike - 0029 IntelliMouse Optical - 002b Internet Keyboard Pro -- 0034 SideWinder Force Feedback Wheel - 0033 Sidewinder Strategic Commander -+ 0034 SideWinder Force Feedback Wheel - 0038 SideWinder Precision 2 - 0039 IntelliMouse Optical - 003b SideWinder Game Voice - 003c SideWinder Joystick --0460 Ace Cad Enterprise Co., Ltd. --0461 Primax Electronics -+ 0040 Wheel Mouse Optical -+ 0047 IntelliMouse Explorer 3.0 -+ 0059 Wireless IntelliMouse Explorer -+ 006e MN510 802.11b Adapter -+ 007d Notebook Optical Mouse -+ 007e Wireless Transceiver for Bluetooth -+ 008a Wireless Keyboard and Mouse -+ 0284 Xbox DVD Playback Kit -+0460 Ace Cad Enterprise Co., Ltd -+0461 Primax Electronics, Ltd - 0300 G2-300 Scanner - 0301 G2E-300 Scanner - 0302 G2-300 #2 Scanner - 0303 G2E-300 #2 Scanner - 0340 Colorado 9600 Scanner - 0341 Colorado 600u Scanner -+ 0345 Visioneer 6200 Scanner - 0346 Memorex Maxx 6136u Scanner -- 0347 Visioneer 4400 Scanner -+ 0347 Primascan Colorodao 2600u/Visioneer 4400 Scanner - 0360 Colorado 19200 Scanner - 0361 Colorado 1200u Scanner -+ 0364 LG Electronics Scanworks 600U Scanner -+ 0371 Visioneer Onetouch 8920 Scanner -+ 0377 Medion MD 5345 Scanner -+ 037b Medion MD 6190 Scanner - 0380 G2-600 Scanner - 0381 ReadyScan 636i Scanner - 0382 G2-600 #2 Scanner - 0383 G2E-600 Scanner - 0813 IBM UltraPort Camera -+ 0815 Micro Innovations WebCam - 081a Fujifilm IX-30 Camera -+ 081c Elitegroup ECS-C11 Camera -+ 081d Elitegroup ECS-C11 Storage - 4d01 Comfort Keyboard - 4d02 Mouse-in-a-Box - 4d03 Kensington Mouse-in-a-box - 4d04 Mouse - 0463 MGE UPS Systems -- ffff Ellipse UPS --0464 AMP Incorporated -+ 0001 UPS -+ ffff UPS -+0464 AMP/Tycoelectronics Corp. - 0467 AT&T Paradyne --0468 Wieson Electronic Co., Ltd. --046a Cherry Mikroschalter GmbH -+0468 Wieson Technologies Co., Ltd -+046a Cherry GmbH - 0001 My3000 Keyboard - 0003 My3000 Hub --046b American Megatrends -+046b American Megatrends, Inc. - 046c Toshiba Corp., Digital Media Equipment --046d Logitech Inc. -+046d Logitech, Inc. - 0203 M2452 Keyboard - 0301 M4848 Mouse - 0401 HP PageScan - 0402 NEC PageScan -- 040F Logitech/Storm PageScan -+ 040f Logitech/Storm PageScan - 0801 QuickCam Home - 0810 QuickCam Pro - 0840 QuickCam Express - 0850 QuickCam Web - 0870 QuickCam Express -+ 08a0 QuickCam IM - 08b0 QuickCam 3000 Pro [pwc] -+ 08b2 QuickCam Pro 4000 -+ 08b3 QuickCam Zoom -+ 08b4 QuickCam Zoom - 0900 ClickSmart 310 - 0901 ClickSmart 510 -+ 0921 Labtec WebCam -+ 0950 Pocket Camera - c000 N43 [Pilot Mouse] - c001 N48/M-BB48 [FirstMouse Plus] - c002 M-BA47 [MouseMan Plus] -@@ -331,6 +491,9 @@ - c00c Optical Wheel Mouse - c00e Optical Mouse - c012 Optical Mouse -+ c016 Optical Mouse -+ c01b MX310 Optical Mouse -+ c025 MX500 Optical Mouse - c030 iFeel Mouse - c032 MouseMan iFeel - c202 WingMan Formula -@@ -343,15 +506,22 @@ - c283 WingMan Force 3D - c285 WingMan Strike Force 3D - c291 WingMan Formula Force -+ c293 WingMan Formula Force GP - c295 Momo Force Steering Wheel - c2a0 Wingman Force Feedback Mouse -+ c303 iTouch Keyboard - c308 Internet Navigator Keyboard -+ c309 Internet Keyboard - c401 TrackMan Marble Wheel -+ c402 Marble Mouse (2-button) -+ c404 TrackMan Wheel -+ c408 Marble Mouse (4-button) - c501 Cordless Mouse Receiver - c503 Cordless Mouse+Keyboard Receiver - c504 Cordless Mouse+Keyboard Receiver -+ c505 Cordless Mouse+Keyboard Receiver - d001 QuickCam Pro --046e Behavior Tech. Computer -+046e Behavior Tech. Computer Corp. - 6782 BTC 7932 mouse+keyboard - 046f Crystal Semiconductor - 0471 Philips -@@ -364,26 +534,29 @@ - 0304 Askey VC010 WebCam [pwc] - 0307 PCVC675K WebCam [pwc] - 0308 PCVC680K WebCam [pwc] -- 030C PCVC690K WebCam [pwc] -+ 030c PCVC690K WebCam [pwc] - 0310 PCVC730K WebCam [pwc] - 0311 PCVC740K ToUcam Pro [pwc] - 0312 PCVC750K WebCam [pwc] - 0471 Digital Speaker System - 0601 OVU1020 IR Dongle (Kbd+Mouse) - 0701 150P1 TFT Display -+ 0811 JR24 CDRW -+ 1120 Creative Rhomba MP3 player - 1801 Diva MP3 player --0472 Chicony -+0472 Chicony Electronics Co., Ltd - 0065 PFU-65 Keyboard --0473 Sanyo Information Business Co., Ltd. --0474 Sanyo Electric Co. Ltd. -+0473 Sanyo Information Business Co., Ltd -+0474 Sanyo Electric Co., Ltd -+ 0701 SCP-4900 Cellphone - 0475 Relisys/Teco Information System - 0476 AESP --0477 Seagate Technology -+0477 Seagate Technology, Inc. - 0478 Connectix Corp. - 0001 QuickCam - 0002 QuickClip - 0479 Advanced Peripheral Laboratories --047a USAR Systems -+047a Semtech Corp. - 047b Silitek Corp. - 0002 Keyboard and Mouse - 0101 BlueTooth Keyboard and Mouse -@@ -392,43 +565,45 @@ - 047d Kensington - 1003 Orbit TrackBall - 1005 TurboBall -- 5002 VideoCam CABO II -- 5003 VideoCam -- 4006 Gravis Eliminator AfterShock - 4005 Gravis Eliminator GamePad Pro -+ 4006 Gravis Eliminator AfterShock - 4008 Gravis Destroyer TiltPad --047e Agere (Lucent) -+ 5002 VideoCam CABO II -+ 5003 VideoCam -+047e Agere Systems, Inc. (Lucent) - 1001 USS720 Parallel Port - f101 Atlas Modem - 047f Plantronics, Inc. - 0480 Toshiba America Info. Systems, Inc. - 0481 Zenith Data Systems --0482 Kyocera Electronics, Inc. -+0482 Kyocera Corp. - 0483 SGS Thomson Microelectronics -+ 1307 Cytronix 6in1 card reader -+ 163d Cool Icam Digi-MP3 - 7554 56k SoftModem - 0484 Specialix - 0485 Nokia Monitors --0486 ASUS Computers Inc. -+0486 ASUS Computers, Inc. - 0487 Stewart Connector - 0488 Cirque Corp. - 0489 Foxconn / Hon Hai - 0502 SmartMedia Card Reader Firmware Loader - 0503 SmartMedia Card Reader - 048a S-MOS Systems, Inc. --048c Alps Electric Ireland Ltd. --048d Integrated Technology Express -+048c Alps Electric Ireland, Ltd -+048d Integrated Technology Express, Inc. - 048f Eicon Tech. - 0490 United Microelectronics Corp. - 0491 Capetronic - 0492 Samsung SemiConductor, Inc. --0493 MAG Technology Co., Ltd. -+0493 MAG Technology Co., Ltd - 0495 ESS Technology, Inc. - 0496 Micron Electronics - 0497 Smile International - 0498 Capetronic (Kaohsiung) Corp. - 0499 Yamaha Corp. - 6001 CRW2200UX Lightspeed 2 External CD-RW Drive --049a Gandalf Technologies Ltd. -+049a Gandalf Technologies, Ltd - 049b Curtis Computer Products - 049c Acer Advanced Labs, Inc. - 0002 Keyboard (???) -@@ -436,15 +611,18 @@ - 049f Compaq Computer Corp. - 0003 iPAQ PocketPC - 000e Internet Keyboard -- 0033 Evo N600c Builtin Wireless Ethernet [orinoco] -+ 0018 PA-1/PA-2 MP3 Player -+ 001a S4 100 Scanner -+ 0021 S200 Scanner -+ 0033 801.11b Adapter [orinoco] - 505a SA-11x0 based Linux Device, or Itsy (experimental) - 8511 iPAQ Networking 10/100 Ethernet [pegasus2] - 04a0 Digital Equipment Corp. - 04a1 SystemSoft Corp. - 04a2 FirePower Systems --04a3 Trident Microsystems Inc. --04a4 Hitachi, Ltd. --04a5 Acer Peripherals Inc. -+04a3 Trident Microsystems, Inc. -+04a4 Hitachi, Ltd -+04a5 Acer Peripherals Inc. (now BenQ Corp.) - 0001 Keyboard - 12a6 AcerScan C310U - 1a20 Prisa 310U -@@ -457,41 +635,97 @@ - 20be Prisa 640BT - 20c0 Prisa 1240UT - 20de S2W 4300U+ -+ 20fc Benq 5000 -+ 20fe SW2 5300U -+ 3003 Benq WebCam - 9213 Kbd Hub - 04a6 Nokia Display Products - 04a7 Visioneer - 0211 OneTouch 7600 Scanner - 0221 OneTouch 5300 Scanner -- 0224 Microtek Scanport 3000 -+ 0224 OneTouch 4800 USB/Microtek Scanport 3000 -+ 0226 OneTouch 5300 USB - 0231 6100 Scanner - 0311 6200 EPP/USB Scanner - 0321 OneTouch 8100 EPP/USB Scanner - 0331 OneTouch 8600 EPP/USB Scanner - 04a8 Multivideo Labs, Inc. --04a9 Canon Inc. -+04a9 Canon, Inc. - 1051 BJC-3000 Color Printer - 1056 BJC-2110 Color Printer -+ 105b S600 Printer - 105d S450 Printer - 1062 S500 Printer - 1064 S300 Printer -+ 106b S520 Printer -+ 106d S750 Printer -+ 1074 S330 Printer -+ 2201 CanoScan FB320U -+ 2202 CanoScan FB620U - 2204 CanoScan FB630U - 2205 CanoScan FB1210U -- 2206 CanoScan N650U -+ 2206 CanoScan N650U/N656U - 2207 CanoScan 1220U - 2208 CanoScan D660U -- 220d CanoScan N670U -+ 220b CanoScan D646U -+ 220c CanoScan D1250U2 -+ 220d CanoScan N670U/N676U/LiDE 20 -+ 220e CanoScan N1240U/LiDE 30 -+ 2213 LiDE 50 - 3041 PowerShot S10 -+ 3042 CanoScan FS4000US Film Scanner - 3043 PowerShot S20 -+ 3044 EOS D30 - 3045 PowerShot S100 -+ 3046 IXY Digital - 3047 Digital IXUS - 3048 PowerShot G1 - 3049 PowerShot Pro90 IS - 304b IXY Digital 300 -+ 304c PowerShot S300 -+ 304d Digital IXUS 300 - 304e PowerShot A20 - 304f PowerShot A10 -+ 3051 PowerShot S110 -+ 3052 Digital IXUS V -+ 3055 PowerShot G2 - 3056 PowerShot S40 -+ 3057 PowerShot S30 - 3058 PowerShot A40 --04aa DaeWoo Telecom, Ltd. -+ 3059 PowerShot A30 -+ 305b ZR45MC Digital Camcorder -+ 3060 EOS D60 -+ 3061 PowerShot A100 -+ 3062 PowerShot A200 -+ 3065 PowerShot S200 -+ 3066 Digital IXUS 330 -+ 3067 MV550i Digital Video Camera -+ 3069 PowerShot G3 -+ 306b MVX2i Digital Video Camera -+ 306c PowerShot S45 -+ 306d PowerShot S45 PtP Mode -+ 306f PowerShot G3 (ptp) -+ 3070 PowerShot S230 -+ 3071 PowerShot S230 (ptp) -+ 3072 PowerShot SD100 / Digital IXUS 2 (ptp) -+ 3073 PowerShot A70 (ptp) -+ 3074 PowerShot A60 (ptp) -+ 3075 IXUS 400 Camera -+ 3076 PowerShot A300 -+ 3077 PowerShot S50 -+ 3078 ZR70MC Digital Camcorder -+ 307b MV630i Difital Video Camera -+ 307f Optura 20 -+ 3081 Optura 10 -+ 3083 EOS 10D -+ 3084 EOS 300D -+ 3085 PowerShot G5 -+ 3099 EOS 300D (ptp) -+ 309a PowerShot A80 -+ 309b Digital IXUS (ptp) -+ 309c PowerShot S1 IS -+ 30ba PowerShot S410 Digital Elph -+04aa DaeWoo Telecom, Ltd - 04ab Chromatic Research - 04ac Micro Audiometrics Corp. - 04ad Dooin Electronics -@@ -502,10 +736,31 @@ - 0104 Coolpix 995 - 0106 Coolpix 775 - 0107 Coolpix 5000 -+ 0108 Coolpix 2500 -+ 0109 Coolpix 2500 (ptp) -+ 010a Coolpix 4500 -+ 010b Coolpix 4500 (ptp) -+ 010d Coolpix 5700 (ptp) -+ 010e Coolpix 4300 (storage) -+ 010f Coolpix 4300 (ptp) -+ 0111 Coolpix 3500 (ptp) -+ 0112 Coolpix 885 (ptp) -+ 0113 Coolpix 5000 (ptp) -+ 0114 Coolpix 3100 (storage) -+ 0115 Coolpix 3100 (ptp) -+ 0117 Coolpix 2100 (ptp) -+ 0119 Coolpix 5400 (ptp) -+ 0202 Coolpix SQ (ptp) -+ 0301 Coolpix 2000 (storage) -+ 0302 Coolpix 2000 (ptp) -+ 0402 DSC D100 (ptp) -+ 4000 Coolscan LS 40 ED - 04b1 Pan International - 04b3 IBM Corp. - 3004 Media Access Pro Keyboard - 3100 NetVista Mouse -+ 3103 ScrollPoint Pro Mouse -+ 3109 Optical ScrollPoint Pro Mouse - 4427 Portable CD ROM - 4525 Double sided CRT - 4550 NVRAM (128 KB) -@@ -514,14 +769,18 @@ - 4581 4800-2xx Hub w/ Cash Drawer - 4604 Keyboard w/ Card Reader - 4671 4820 LCD w/ MSR/KB --04b4 Cypress Semiconductor -+04b4 Cypress Semiconductor Corp. - 0000 Dacal DC-101 CD Library - 0001 Mouse - 0002 CY7C63x0x Thermometer - 1002 CY7C63001 R100 FM Radio -+ 5500 HID->COM RS232 Adapter -+ 6560 CY7C65640 USB-2.0 "TetraHub" -+ 6830 USB-2.0 IDE Adapter - 8613 CY7C68013 EZ-USB FX2 USB 2.0 Development Kit - d5d5 CY7C63x0x Zoltrix Z-Boxer GamePad --04b5 ROHM LSI Systems, Inc. -+ f000 CY30700 Licorice evaluation board -+04b5 ROHM LSI Systems USA, LLC - 04b6 Hint Corp. - 04b7 Compal Electronics, Inc. - 04b8 Seiko Epson Corp. -@@ -530,28 +789,42 @@ - 0003 ISD Smart Cable - 0005 Stylus Printer - 0101 Perfection 636 -+ 0102 GT-2200 - 0103 Perfection 610 - 0104 Perfection 1200 -+ 0105 StylusScan 2000 - 0106 Stylus Scan 2500 - 0107 Expression 1600U -+ 0109 Expression 1640 XL - 010a Perfection 1640SU - 010b Perfection 1240 - 010c Perfection 640 -+ 010e Perfection 1680 - 010f Perfection 1250 - 0110 Perfection 1650 -+ 0112 Perfection 2450 -+ 0114 Perfection 660 -+ 011b Perfection 2400 Photo -+ 011c Perfection 3200 -+ 011d Perfection 1260 Photo -+ 011e Perfection 1660 Photo -+ 011f Perfection 1670 - 0202 Receipt Printer M129C - 0601 Stylus Photo 875DC Card Reader - 0602 Stylus Photo 895 Card Reader -+ 0801 Stylus CX5200 -+ 0802 Stylus CX3200 - 04b9 Rainbow Technologies, Inc. - 1000 iKey 1000 Token - 1001 iKey 1200 Token - 1200 iKey 2000 Token - 1202 iKey 2032 Token - 1300 iKey 3000 Token --04ba Toucan Systems Ltd. -+04ba Toucan Systems, Ltd - 04bb I-O Data Device, Inc. - 0904 ET/TX Ethernet [pegasus] - 0913 ET/TX-S Ethernet [pegasus2] -+ 0922 IOData AirPort WN-B11/USBS 802.11b - 04bd Toshiba Electronics Taiwan Corp. - 04be Telia Research AB - 04bf TDK Corp. -@@ -561,150 +834,202 @@ - 008f Pro ISDN TA - 009d HomeConnect WebCam [vicam] - 3021 56k Voice FaxModem Pro --04c2 Methode Electronics Far East PTE Ltd. -+04c2 Methode Electronics Far East PTE, Ltd - 04c3 Maxi Switch, Inc. - 04c4 Lockheed Martin Energy Research --04c5 Fujitsu Ltd. -+04c5 Fujitsu, Ltd -+ 1029 fi-4010c Scanner -+ 1041 fi-4120c Scanner -+ 1042 fi-4220c Scanner - 04c6 Toshiba America Electronic Components - 04c7 Micro Macro Technologies - 04c8 Konica Corp. - 0720 Digital Color Camera - 0721 e-miniD Camera - 0723 KD-200Z Camera -+ 0726 KD-310Z Camera - 04ca Lite-On Technology Corp. --04cb Fuji Photo Film Co., Ltd. -- 0100 FinePix 1300 / 1400 / 4700 Zoom digital camrea -+04cb Fuji Photo Film Co., Ltd -+ 0100 FinePix 1300 / 1400 / 4700 Zoom digital camera - 0103 FinePix NX-700 printer -+ 0104 FinePix A101/2600 Zoom (PC-Cam Mode) -+ 0108 FinePix F601 Zoom (Disk mode) -+ 0109 FinePix F601 Zoom (PC-Cam mode) -+ 010a FinePix S602 Zoom (Disk mode) -+ 010b FinePix S602 Zoom (PC-Cam mode) -+ 0114 FinePix F401 Zoom (Disk mode) -+ 0115 FinePix F401 Zoom (PC-Cam mode) -+ 0116 FinePix A203 (Disk mode) -+ 0117 FinePix A203 (PC-Cam mode) -+ 011a FinePix S304/3800 (Disk mode) -+ 011b FinePix S304/3800 (PC-Cam mode) -+ 011c FinePix 2650 (Disk mode) -+ 0130 Finepix S5000 Camera (Disk mode) -+ 0131 Finepix S5000 Camera (PC-Cam mode) - 04cc Philips Semiconductors - 1122 Hub -+ 1521 USB 2.0 Hub - 8116 Camera - 04cd Tatung Co. Of America - 04ce ScanLogic Corp. - 0002 SL11R-IDE IDE Bridge --04cf Myson Technology Inc. -+04cf Myson Century, Inc. - 04d0 Digi International - 04d1 ITT Canon - 04d2 Altec Lansing Technologies - 0311 ADA-310 Speakers - ff05 ADA-305 Speakers - 04d3 VidUS, Inc. --04d4 LSI Logic Corp. -+04d4 LSI Logic, Inc. - 04d5 Forte Technologies, Inc. - 04d6 Mentor Graphics - 04d7 Oki Semiconductor --04d8 Microchip Technology Inc. -+04d8 Microchip Technology, Inc. -+ 8000 In-Circuit Debugger - 04d9 Holtek Semiconductor, Inc. - 04da Panasonic (Matsushita) --04db Hypertec Pty Ltd. --04dc Huan Hsin Co. -+04db Hypertec Pty, Ltd -+04dc Huan Hsin Holdings, Ltd - 04dd Sharp Corp. -- 8004 Zaurus SL-5000D PDA -+ 7004 VE-CG40U Digital Still Camera -+ 8004 Zaurus SL-5000D/SL-5500 PDA -+ 8005 Zaurus A-300 -+ 8006 Zaurus SL-B500/SL-5600 PDA -+ 8007 Zaurus C-700 PDA -+ 9014 IM-DR80 Portable NetMD Player -+ 9031 Zaurus C-750/C-760 PDA -+ 9032 Zaurus SL-6000 -+ 9050 Zaurus C-860 PDA - 04de MindShare, Inc. - 04df Interlink Electronics --04e1 Iiyama North America Inc. -+04e1 Iiyama North America, Inc. - 0201 Monitor Hub - 04e2 Exar Corp. --04e3 Zilog -+04e3 Zilog, Inc. - 04e4 ACC Microelectronics - 04e5 Promise Technology --04e6 Shuttle Technology Inc. -+04e6 SCM Microsystems, Inc. - 0001 E-USB ATA Bridge - 0002 eUSCSI SCSI Bridge - 0003 eUSB SmartMedia Card Reader - 0005 eUSB SmartMedia/CompactFlash Card Reader - 0006 eUSB SmartMedia Card Reader - 0007 Hifd -- 0101 E-USB ATA Bridge -+ 0101 eUSB ATA Bridge -+ 0325 eUSB ORCA Quad Reader - 1010 USBAT-2 CompactFlash Card Reader - 04e7 Elo TouchSystems -- 0001 TouchScreen --04e8 Samsung Electronics Co., Ltd. -+ 0001 TouchScreen -+04e8 Samsung Electronics Co., Ltd -+ 1003 MP3 Player and Recorder -+ 300c ML-1210 Printer - 5a03 Yepp MP3 Player --04e9 PC-Tel Inc. -+ 6601 Z100 Mobile Phone -+04e9 PC-Tel, Inc. - 04ea Brooktree Corp. - 04eb Northstar Systems, Inc. --04ec Tokyo Electron Limited -+04ec Tokyo Electron Device, Ltd - 04ed Annabooks - 04ef Pacific Electronic International, Inc. --04f0 Daewoo Electronics Co., Ltd. --04f1 Victor Company of Japan (JVC) -+04f0 Daewoo Electronics Co., Ltd -+04f1 Victor Company of Japan, Ltd - 0001 GC-QX3 Digital Still Camera - 0004 GR-DVL815U Digital Video Camera --04f2 Chicony Electronics Co., Ltd. -+ 0009 GR-DX25EK Digital Video Camera -+04f2 Chicony Electronics Co., Ltd - 0001 KU-8933 Keyboard - 0002 NT68P81 Keyboard -+ 0110 KU-2971 Keyboard - 0112 KU-8933 Keyboard with PS/2 Mouse port --04f3 Elan Microelectronics Corportation --04f4 Harting Elektronik Inc. -+04f3 Elan Microelectronics Corp. -+04f4 Harting Elektronik, Inc. - 04f5 Fujitsu-ICL Systems, Inc. - 04f6 Norand Corp. - 04f7 Newnex Technology Corp. - 04f8 FuturePlus Systems --04f9 Brother Industries, Ltd. -+04f9 Brother Industries, Ltd - 0002 HL-1050 Laser Printer - 0007 HL-1250 Laser Printer -+ 0008 HL-1270 Laser Printer -+ 000d HL-1440 Laser Printer -+ 010f MFC 5100C -+ 0111 MFC 6800 -+ 2004 PT-2300/2310 p-Touch Laber Printer - 04fa Dallas Semiconductor - 2490 DS1490F 2-in-1 Fob, 1-Wire adapter - 4201 DS4201 Audio DAC --04fb Biostar Microtech Int'l Corp. --04fc Sunplus Technology Co. -+04fb Biostar Microtech International Corp. -+04fc Sunplus Technology Co., Ltd -+ 0003 CM1092 Optical Scroller Mouse -+ 504a SPCA504a Digital Camera -+ 504b Aiptek, 1.3 mega PockerCam - 04fd Soliton Systems, K.K. --04fe PFU Limited -+04fe PFU, Ltd - 04ff E-CMOS Corp. - 0500 Siam United Hi-Tech --0501 DDK Electronics, Inc. -+0501 Fujikura DDK, Ltd - 0502 Acer, Inc. - d001 Divio NW801/DVC-V6+ Digital Camera --0503 Hitachi America Ltd. -+0503 Hitachi America, Ltd - 0504 Hayes Microcomputer Products - 0506 3Com Corp. -+ 00a0 3CREB96 Bluetooth Adapter - 03e8 3C19250 Ethernet [klsi] -- 4601 3C460B USB 10/100 Ethernet Adaptor -+ 4601 3C460B 10/100 Ethernet Adapter - f002 3CP4218 ADSL Modem (pre-init) - f003 3CP4218 ADSL Modem - f100 3CP4218 ADSL Modem (pre-init) - 0507 Hosiden Corp. --0508 Clarion Co., Ltd. --0509 Aztech Systems Ltd. -+0508 Clarion Co., Ltd -+0509 Aztech Systems, Ltd - 050a Cinch Connectors - 050b Cable System International - 050c InnoMedia, Inc. - 050d Belkin Components - 0103 F5U103 Serial Adapter [etek] -- 0109 F5U109 PDA Adapter -+ 0109 F5U109/F5U409 PDA Adapter - 0115 SCSI Adapter - 0121 F5D5050 100Mbps Ethernet -- 0208 Video Adapter [nt1004] -+ 0208 USBView II Video Adapter [nt1004] -+ 0224 F5U224 USB 2.0 4-Port Hub -+ 0234 F5U234 USB 2.0 4-Port Hub - 0805 Nostromo N50 GamePad - 1203 F5U120-PC Serial Port - 050e Neon Technology, Inc. --050f KC Technology Inc. -+050f KC Technology, Inc. - 0003 KC82C160S Hub - 0180 KC-180 IrDA Dongle --0510 Sejin Electron Inc. -+0510 Sejin Electron, Inc. - 0511 N'Able (DataBook) Technologies, Inc. - 0512 Hualon Microelectronics Corp. - 0513 digital-X, Inc. --0514 FCI/Berg Electronics Group -+0514 FCI Electronics - 0515 ACTC - 0516 Longwell Electronics - 0517 Butterfly Communications - 0518 EzKEY Corp. --0519 Star Micronics Co., Ltd. -+0519 Star Micronics Co., Ltd - 051a WYSE Technology - 051b Silicon Graphics --051c Shuttle Inc. -+051c Shuttle, Inc. - 051d American Power Conversion -- 0002 Back-UPS Pro 500 --051e Scientific Atlanta -+ 0002 Back-UPS Pro 500/1000/1500 -+051e Scientific Atlanta, Inc. - 051f IO Systems (Elite Electronics), Inc. - 0520 Taiwan Semiconductor Manufacturing Co. - 0521 Airborn Connectors --0522 Advanced Connectek USA Inc. -+0522 Advanced Connectek, Inc. - 0523 ATEN GmbH - 0524 Sola Electronics --0525 Netchip Technology Inc. -+0525 Netchip Technology, Inc. - 1080 NET1080 USB-USB Bridge -+ a4a0 Linux-USB "Gadget Zero" -+ a4a1 Linux-USB Ethernet Gadget -+ a4a2 Linux-USB Ethernet/RNDIS Gadget -+ a4a3 Linux-USB user-mode isochronous source/sink -+ a4a4 Linux-USB user-mode bulk source/sink -+ a4a5 Linux-USB File Storage Gadget -+ a4a6 Linux-USB Serial Gadget - 0526 Temic MHS S.A. - 0527 ALTRA - 0528 ATI Technologies, Inc. -@@ -715,27 +1040,30 @@ - 0313 eToken R1 v3.2.3.x - 031b eToken R1 v3.3.3.x - 0323 eToken R1 v3.4.3.x -- 050c eToken Pro v4.1.5.x - 0412 eToken R2 v2.2.4.x - 041a eToken R2 v2.2.4.x - 0422 eToken R2 v2.4.4.x - 042a eToken R2 v2.5.4.x -+ 050c eToken Pro v4.1.5.x -+ 0514 eToken Pro v4.2.5.4 - 052a Crescent Heart Software - 052b Tekom Technologies, Inc. --052c Canon Information System -+ 1513 Aosta CX100 WebCam -+ 1514 Aosta CX100 WebCam Storage -+052c Canon Information Systems, Inc. - 052d Avid Electronics Corp. - 052e Standard Microsystems Corp. - 052f Unicore Software, Inc. --0530 American Microsystems Inc. -+0530 American Microsystems, Inc. - 0531 Wacom Technology Corp. - 0532 Systech Corp. - 0533 Alcatel Mobile Phones --0534 Motorola --0535 LIH TZU Electric Co., Ltd. --0536 Welch Allyn Inc. -+0534 Motorola, Inc. -+0535 LIH TZU Electric Co., Ltd -+0536 Hand Held Products (Welch Allyn, Inc.) - 0537 Inventec Corp. --0538 Santa Cruz Operation --0539 Shyh Shiun Terminals Co. Ltd. -+0538 Caldera International, Inc. (SCO) -+0539 Shyh Shiun Terminals Co., Ltd - 053a Preh Werke GmbH & Co. KG - 053b Global Village Communication - 053c Institut of Microelectronic & Mechatronic Systems -@@ -749,13 +1077,15 @@ - 00fe G773 Monitor Hub - 00ff P815 Monitor Hub - 4153 ViewSonic G773 Control (?) --0544 Cristie Electronics Ltd. -+0544 Cristie Electronics, Ltd - 0545 Xirlink, Inc. - 8002 IBM NetCamera - 800c Veo StingRay - 8080 IBM C-It WebCam -+ 810a Veo Advanced Connect WebCam - 0546 Polaroid Corp. --0547 Anchor Chips Inc. -+ 1bed PDC 1320 Camera -+0547 Anchor Chips, Inc. - 2131 AN2131 EZUSB Microcontroller - 2235 AN2235 EZUSB-FX Microcontroller - 2720 AN2720 USB-USB Bridge -@@ -775,24 +1105,29 @@ - 002e Sony HandyCam MemoryStick Reader - 0032 MemoryStick MSC-U01 Reader - 0038 Clie PEG-S300/D PalmOS PDA -+ 004e DSC-xxx (ptp) - 0058 Clie PEG-N7x0C PalmOS PDA Mass Storage -- 0066 Clie PEG-N7x0C PalmOS PDA Serial -+ 0066 Clie PEG-N7x0C/PEG-T425 PalmOS PDA Serial - 0069 Memorystick MSC-U03 Reader -+ 006d Clie PEG-T425 PDA Mass Storage - 0099 Clie NR70 PDA Mass Storage - 009a Clie NR70 PDA Serial -+ 00c8 MZ-N710 Minidisc Walkman -+ 0107 VCC-U01 Visual Communication Camera - 054d Try Corp. - 054e Proside Corp. - 054f WYSE Technology Taiwan --0550 Fuji Xerox Co., Ltd. -+0550 Fuji Xerox Co., Ltd - 0551 CompuTrend Systems, Inc. - 0552 Philips Monitors --0553 VLSI Vision Ltd. -+0553 STMicroelectronics Imaging Division (VLSI Vision) - 0002 CPiA WebCam - 0202 Aiptek PenCam 1 - 0554 Dictaphone Corp. --0555 ANAM S&T Co., Ltd. --0556 Asahi Kasei Microsystems Co., Ltd. --0557 ATEN International Co. Ltd. -+0555 ANAM S&T Co., Ltd -+0556 Asahi Kasei Microsystems Co., Ltd -+ 0001 AK5370 I/F A/D Converter -+0557 ATEN International Co., Ltd - 2001 UC-1284 Printer Port - 2002 10Mbps Ethernet [klsi] - 2004 UC-100KM PS/2 Mouse and Keyboard adapter -@@ -811,17 +1146,35 @@ - 9000 AnyCam [pwc] - 9001 MPC-C30 AnyCam Premium for Notebooks [pwc] - 055e CTX Opto-Electronics Corp. --055f Mustek Systems Inc. -+055f Mustek Systems, Inc. - 0001 ScanExpress 1200 CU - 0002 ScanExpress 600 CU - 0003 ScanExpress 1200 USB - 0006 ScanExpress 1200 UB -+ 0007 ScanExpress 1200 USB Plus - 0008 ScanExpress 1200 CU Plus -+ 0010 BearPaw 1200F -+ 0210 ScanExpress A3 USB - 0218 BearPaw 2400 TA -+ 0219 BearPaw 2400 TA Plus -+ 021c BearPaw 1200 CU Plus -+ 021d BearPaw 2400 CU Plus -+ 021e BearPaw 1200 TA/CS -+ 0400 BearPaw 2400 TA Pro -+ 0401 P 3600 A3 Pro -+ 0873 ScanExpress 600 USB -+ 1000 BearPaw 4800 TA Pro -+ a350 gSmart 350 - a800 MDC 800 Camera --0560 Interface Co., Ltd. -+ b500 MDC 3000 Camera -+ c200 gSmart 300 -+ c220 gSmart mini -+ c420 gSmart mini 2 -+ c520 gSmart mini 3 -+ d001 WCam 300 -+0560 Interface Corp. - 0561 Oasis Design, Inc. --0562 Telex Communications Inc. -+0562 Telex Communications, Inc. - 0001 Enhanced Microphone - 0563 Immersion Corp. - 0564 Chinon Industries, Inc. -@@ -830,10 +1183,11 @@ - 0002 Enet Ethernet [klsi] - 0003 @Home Networks Ethernet [klsi] - 0005 Enet2 Ethernet [klsi] --0567 Xyratex Int'l Ltd. -+0566 Monterey International Corp. -+0567 Xyratex International, Ltd - 0568 Quartz Ingenierie - 0569 SegaSoft --056a Wacom Co., Ltd. -+056a Wacom Co., Ltd - 0000 PenPartner - 0010 Graphire - 0011 Graphire 2 -@@ -844,28 +1198,47 @@ - 0024 Intuos 12x18 - 0031 PL500 - 0043 Intuos 2 --056b Decicon Incorporated -+056b Decicon, Inc. - 056c eTEK Labs - 8007 Kwik232 Serial Port - 8101 KwikLink USB-USB Bridge - 056d EIZO Corp. - 0000 Hub - 0001 Monitor --056e Elecom Co., Ltd. -+056e Elecom Co., Ltd - 0002 29UO Mouse - 4002 Laneed 100Mbps Ethernet LD-USB/TX [pegasus] --056f Korea Data Systems Co., Ltd. -+056f Korea Data Systems Co., Ltd - 0570 Epson America - 0571 Interex, Inc. - 0572 Conexant Systems (Rockwell), Inc. - 0001 Ezcam II WebCam - 0002 Ezcam II WebCam -+ 0040 Wondereye CP-115 WebCam - 1232 V.90 modem --0573 Nogatech Ltd. -+ cafe AccessRunner ADSL Modem -+0573 Zoran Co. Personal Media Division (Nogatech) -+ 0003 USBGear USBG-V1 -+ 0400 D-Link V100 - 2000 X10 va10a Wireless Camera -- 4d01 Hauppauge USB TV -- 4d02 NT1003 Frame Grabber -- 4d11 NT1003 Frame Grabber -+ 2101 Zoran Co. PMD (Nogatech) AV-grabber Manhattan -+ 4100 USB-TV FM (NTSC) -+ 4450 PixelView PlayTv-USB PRO (PAL) FM -+ 4d00 Hauppauge WinTV-USB USA -+ 4d01 Hauppauge WinTV-USB -+ 4d02 Hauppauge WinTV-USB UK -+ 4d03 Hauppauge WinTV-USB France -+ 4d10 Hauppauge WinTV-USB with FM USA radio -+ 4d11 Hauppauge WinTV-USB (PAL) with FM radio -+ 4d12 Hauppauge WinTV-USB UK with FM Radio -+ 4d20 Hauppauge WinTV-USB II (PAL) with FM radio -+ 4d21 Hauppauge WinTV-USB II (PAL) -+ 4d22 Hauppauge WinTV-USB II (PAL) Model 566 -+ 4d23 Hauppauge WinTV-USB France 4D23 -+ 4d30 Hauppauge WinTV-USB with FM USA radio Model 602 -+ 4d31 Hauppauge WinTV-USB III (PAL) with FM radio Model 568 -+ 4d32 Hauppauge WinTV-USB III (PAL) FM Model 573 -+ 4d35 Hauppauge WinTV-USB III (PAL) FM Model 597 - 0574 City University of Hong Kong - 0575 Philips Creative Display Solutions - 0576 BAFO/Quality Computer Accessories -@@ -875,55 +1248,66 @@ - 057a Samsung Electronics America - 057b Y-E Data, Inc. - 0000 FlashBuster-U Floppy -+ 0001 Tri-Media Reader Floppy -+ 0006 Tri-Media Reader Card Reader -+ 0010 Memory Stick Reader Writer -+ 0020 HEXA Media Drive 6-in-1 Card Reader Writer -+ 0030 Memory Card Viewer (TV) - 057c AVM GmbH - 2800 ISDN-Connector TA --057d Shark Multimedia Inc. --057e Nintendo Co., Ltd. --057f QuickShot Limited --0580 Denron Inc. -+057d Shark Multimedia, Inc. -+057e Nintendo Co., Ltd -+057f QuickShot, Ltd -+0580 Denron, Inc. - 0581 Racal Data Group - 0582 Roland Corp. - 0002 MPU64 Midi Interface - 0003 Sound Canvas SC-8850 --0583 Padix (Rockfire) Co. Ltd. -+ 0005 Edirol UM-2 MIDI Adapter -+ 0011 Edirol UA-5 Sound Capture -+0583 Padix Co., Ltd (Rockfire) - 2030 RM-203 USB Nest [mode 1] - 2031 RM-203 USB Nest [mode 2] - 2032 RM-203 USB Nest [mode 3] - 2033 RM-203 USB Nest [mode 4] -+ 2050 PX-205 PSX Bridge - 3050 QF-305u Gamepad -- 7070 QF-707u Joystick [Bazooka] --0584 RATOC System Inc. -+ 688f QF-688uv Windstorm Pro Joystick -+ 7070 QF-707u Bazooka Joystick -+0584 RATOC System, Inc. - 0585 FlashPoint Technology, Inc. - 0586 ZyXEL Communications Corp. - 1000 Omni NET Modem / ISDN TA --0587 America Kotobuki Electronics Ind. -+0587 America Kotobuki Electronics Industries, Inc. - 0588 Sapien Design - 0589 Victron - 058a Nohau Corp. - 058b Infineon Technologies - 058c In Focus Systems - 058d Micrel Semiconductor --058e Tripath Technology Inc. --058f Alcor Micro, Inc. -+058e Tripath Technology, Inc. -+058f Alcor Micro Corp. - 2802 Monterey Keyboard -+ 5492 Hub - 9213 MacAlly Kbd Hub - 9215 AU9814 Hub - 9254 Hub -- 9410 MicroConnectors/StrongMan Keyboard -- 9472 Monterey/NEC Kbd Hub -+ 9380 USB Flash drive -+ 9410 Keyboard -+ 9472 Keyboard Hub - 0590 Omron Corp. - 0004 Cable Modem - 0591 Questra Consulting - 0592 Powerware Corp. - 0593 Incite - 0594 Princeton Graphic Systems --0595 Zoran Microelectronics Ltd. --0596 MicroTouch Systems Inc. -+0595 Zoran Microelectronics, Ltd -+0596 MicroTouch Systems, Inc. - 0001 Touchscreen - 0597 Trisignal Communications - 0598 Niigata Canotec Co., Inc. --0599 Brilliance Semiconductor Inc. --059a Spectrum Signal Processing Inc. -+0599 Brilliance Semiconductor, Inc. -+059a Spectrum Signal Processing, Inc. - 059b Iomega Corp. - 0001 Zip 100 (Type 1) - 000b Zip 100 (Type 2) -@@ -932,135 +1316,172 @@ - 0032 Zip 250 (Ver 2) - 0040 SCSI Bridge - 0050 Zip CD 650 Writer -+ 0053 CDRW55292EXT CD-RW External Drive - 006d HipZip MP3 Player --059c A-Trend Technology Co., Ltd. -+059c A-Trend Technology Co., Ltd - 059d Advanced Input Devices - 059e Intelligent Instrumentation --059f LaCie -+059f LaCie, Ltd -+ 0212 PocketDrive - a601 HardDrive - 05a0 Vetronix Corp. - 05a1 USC Corp. --05a2 Fuji Film Microdevices Co. Ltd. --05a3 V Automation Inc. -+05a2 Fuji Film Microdevices Co., Ltd -+05a3 ARC International - 05a4 Ortek Technology, Inc. - 9731 MCK-600W Keyboard - 05a5 Sampo Technology Corp. --05a6 Cisco Systems -+05a6 Cisco Systems, Inc. - 05a7 Bose Corp. - 05a8 Spacetec IMC Corp. - 05a9 OmniVision Technologies, Inc. - 0511 OV511 WebCam - 0518 OV518 WebCam - a511 OV511+ WebCam --05aa Utilux South China Ltd. -+05aa Utilux South China, Ltd - 05ab In-System Design - 0002 Parallel Port - 0031 ATA Bridge -- 0060 USB 2.0 Bridge -+ 0060 USB 2.0 ATA Bridge - 0200 USS725 ATA Bridge - 0202 ATA Bridge - 081a ATA Bridge --05ac Apple Computer -+ 0cda ATA Bridge for CD-R/RW -+05ac Apple Computer, Inc. - 0201 iMac Keyboard [ALPS M2452] - 0202 Apple Keyboard [ALPS] -+ 0205 Apple Extended Keyboard [Mitsumi] - 0206 Apple Extended Keyboard [Mitsumi] - 0301 iMac Mouse [Mitsumi/Logitech] - 0302 Apple Optical Mouse [Fujitsu] - 1001 Apple Keyboard Hub [ALPS] - 1002 Apple Extended Keyboard Hub [Mitsumi] --05ad Y.C.Cable U.S.A., Inc. -+ 1101 Speakers -+ 1201 3G iPod -+05ad Y.C. Cable U.S.A., Inc. - 05ae Synopsys, Inc. --05af Jing-Mold Enterprise Co., Ltd. -+05af Jing-Mold Enterprise Co., Ltd - 05b0 Fountain Technologies, Inc. - 05b1 First International Computer, Inc. --05b4 LG Semicon Co., Ltd. --05b5 Dialogic Corp -+05b4 LG Semicon Co., Ltd -+ 4857 M-Any DAH-210 -+ 6001 Digisette DUO-MP3 AR-100 -+05b5 Dialogic Corp. - 05b6 Proxima Corp. - 05b7 Medianix Semiconductor, Inc. - 05b8 Agiler, Inc. - 3002 Scroll Mouse - 05b9 Philips Research Laboratories - 05ba DigitalPersona, Inc. -+05bc 3G Green Green Globe Co., Ltd -+ 0004 Trackball - 05bd RAFI GmbH & Co. KG --05be Raychem Corp. -+05be Tyco Electronics (Raychem) - 05bf S & S Research - 05c0 Keil Software --05c1 Kawasaki Steel -+05c1 Kawasaki Microelectronics, Inc. - 05c2 Media Phonics (Suisse) S.A. --05c5 Digi International Inc. -+05c5 Digi International, Inc. - 05c6 Qualcomm, Inc. - 3100 CDMA Wireless Modem/Phone - 3196 CDMA Wireless Modem - 3197 CDMA Wireless Modem/Phone --05c7 Qtronix Corp -+05c7 Qtronix Corp. - 1001 Lynx Mouse -- 2011 Scorpius Keyboard --05c8 Cheng Uei Precision Industry Co., Ltd. -+ 2011 SCorpius Keyboard -+05c8 Cheng Uei Precision Industry Co., Ltd (Foxlink) - 05c9 Semtech Corp. --05ca Ricoh Company Ltd. -- 0101 RDC-5300 Digital Camera -- 2201 RDC-7 Digital Camera --05cb PowerVision Technologies Inc. -+05ca Ricoh Co., Ltd -+ 0101 RDC-5300 Camera -+ 2201 RDC-7 Camera -+ 2205 Caplio RR30 / Medion MD 6126 Camera -+05cb PowerVision Technologies, Inc. - 1483 Trust CombiScan 19200 - 05cc ELSA AG - 2100 MicroLink ISDN Office - 2219 MicroLink ISDN - 2265 MicroLink 56k -+ 2267 MicroLink 56k (V.250) - 2280 MicroLink 56k Fun - 3000 Micolink USB2Ethernet [pegasus] --05cd Silicom Ltd. --05ce SICAN GmbH --05cf Sung Forn Co. Ltd. --05d0 Lunar Corp. --05d1 Brainboxes Limited -+ 3363 MicroLink ADSL Fun -+05cd Silicom, Ltd -+05ce sci-worx GmbH -+05cf Sung Forn Co., Ltd -+05d0 GE Medical Systems Lunar -+05d1 Brainboxes, Ltd - 05d2 Wave Systems Corp. - 05d6 Philips Semiconductors, CICT - 05d7 Thomas & Betts Corp. - 0099 10Mbps Ethernet [klsi] - 05d8 Ultima Electronics Corp. -- 4002 Lifetec LT9385 Scanner -+ 4001 Artec Ultima 2000 -+ 4002 Artec Ultima 2000 (GT6801 based)/Lifetec LT9385 Scanner -+ 4003 Artec E+ 48U -+ 4004 Artec E+ Pro -+ 4008 Trust Easy Webscan 19200 -+ 4009 Umax Astraslim - 05d9 Axiohm Transaction Solutions --05da Microtek International Inc. -+05da Microtek International, Inc. - 0093 ScanMaker V6USL - 0094 Phantom 336CX/C3 - 0099 ScanMaker X6/X6U - 009a Phantom C6 - 00a0 Phantom 336CX/C3 (#2) - 00b6 ScanMaker V6UPL -+ 1011 NHJ Che-ez! Kiss Digital Camera -+ 30ce ScanMaker 3800 - 30cf ScanMaker 4800 -+ 30e6 ScanMaker i320 - 40ca ScanMaker 3600 - 80a3 ScanMaker V6USL (#2) - 80ac ScanMaker V6UL/SpicyU -+05db Sun Corp. (Suntac?) - 05dc Lexar Media, Inc. --05dd Delta Electronics Inc. -+ 0080 Jumpdrive Secure 64MB -+ b018 Multi-Card Reader -+05dd Delta Electronics, Inc. - 05e0 Symbol Technologies -+05e1 Syntek Semiconductor Co., Ltd - 05e3 Genesys Logic, Inc. -- 000a Keyboard with PS/2 Port -- 000b Karna Razor BoomSlang 2000 Mouse -- 0120 Pacific Image Electronics PrimeFilm 1800u slide/negative scanner -- 0300 GLUSB98PT Parallel Port -- 0502 GL620USB GeneLink USB-USB Bridge -- 0700 SIIG US2256 CompactFlash Card Reader --05e5 Fuji Electric Co., Ltd. -+ 000a Keyboard with PS/2 Port -+ 000b Mouse -+ 0120 Pacific Image Electronics PrimeFilm 1800u slide/negative scanner -+ 0300 GLUSB98PT Parallel Port -+ 0406 Hub -+ 0502 GL620USB GeneLink USB-USB Bridge -+ 0660 USB 2.0 Hub -+ 0700 SIIG US2256 CompactFlash Card Reader -+ 0701 USB 2.0 IDE Adapter -+ 0702 USB 2.0 IDE Adapter -+ 0703 Card Reader -+ 0760 Card Reader -+ 07A0 Pen Flash -+ 1205 Afilias Optical Mouse H3003 -+05e5 Fuji Electric Co., Ltd - 05e6 Keithley Instruments - 05e9 Kawasaki LSI - 0008 KL5KUSB101B Ethernet [klsi] - 0009 Sony 10Mbps Ethernet [pegasus] --05eb FFC Limited -+05eb FFC, Ltd - 05ef AVB, Inc. [anko?] - 020a Top Shot Pegasus Joystick - 8884 Mag Turbo Force Wheel - 8888 Top Shot Force Feedback Racing Wheel --05f0 Canopus Co., Ltd. -+05f0 Canopus Co., Ltd - 0101 DA-Port DAC --05f2 Dexin Corp., Ltd. -+05f2 Dexin Corp., Ltd - 05f3 PI Engineering, Inc. -+ 0007 Kinesis Advantage PRO MPC/USB Keyboard -+ 0081 Kinesis Integrated Hub - 020b PS2 Adapter --05f5 Unixtar Technology Inc. -+ 0232 X-Keys Switch Interface, Programming Mode -+ 0264 X-Keys Switch Interface, Composite Mode -+05f5 Unixtar Technology, Inc. - 05f6 AOC International --05f7 RFC Distribution(s) PTE Ltd. -+05f7 RFC Distribution(s) PTE, Ltd - 05f9 PSC Scanning, Inc. --05fa Siemens Telecommunications Systems Limited -+05fa Siemens Telecommunications Systems, Ltd - 05fc Harman Multimedia - 05fd InterAct, Inc. - 0251 Raider Pro -@@ -1075,47 +1496,51 @@ - 05ff LeCroy Corp. - 0600 Barco Display Systems - 0601 Jazz Hipster Corp. --0602 Vista Imaging Inc. -+0602 Vista Imaging, Inc. - 1001 ViCam WebCam - 0603 Novatek Microelectronics Corp. - 6871 Mouse --0604 Jean Co, Ltd. --0606 Royal Information Electronics Co., Ltd. --0607 Bridge Information Co., Ltd. --0609 SMK Manufacturing Inc. -+0604 Jean Co., Ltd -+0606 Royal Information Electronics Co., Ltd -+0607 Bridge Information Co., Ltd -+0609 SMK Manufacturing, Inc. - 060a Worthington Data Solutions, Inc. - 060b Solid Year (?) - 0001 MacAlly Keyboard - 2101 Solid Year Keyboard - 060c EEH Datalink GmbH --060f Joinsoon Electronics Mfg. Co., Ltd. --0611 Totoku Electric Co., Ltd. --0613 Ithaca Peripherals -+060f Joinsoon Electronics Mfg. Co., Ltd -+0611 Totoku Electric Co., Ltd -+0613 TransAct Technologies, Inc. - 0614 Bio-Rad Laboratories --0616 Future Techno Designs PVT. Ltd. -+0616 Future Techno Designs PVT, Ltd - 0618 MacAlly - 0101 Mouse --0619 Seiko Instruments Inc. --061c Act Labs, Ltd. -+0619 Seiko Instruments, Inc. -+061c Act Labs, Ltd - 061d Quatech, Inc. - 061e Nissei Electric Co. - 0620 Alaris, Inc. - 0621 ODU-Steckverbindungssysteme GmbH & Co. KG -+0623 Littelfuse, Inc. - 0624 Apex, Inc. --0626 Nippon Systems Development Co., Ltd. --0629 Zida Technologies Limited --062b Greatlink Electronics Taiwan Ltd. --062d Taiwan Tai-Hao Enterprises Co. Ltd. --062e Mainsuper Enterprises Co., Ltd. --062f Sin Sheng Terminal & Machine Inc. -+0626 Nippon Systems Development Co., Ltd -+0629 Zida Technologies, Ltd -+062a Creative Labs -+ 0001 Notebook Optical Mouse -+062b Greatlink Electronics Taiwan, Ltd -+062d Taiwan Tai-Hao Enterprises Co., Ltd -+062e Mainsuper Enterprises Co., Ltd -+062f Sin Sheng Terminal & Machine, Inc. - 0634 Micron Technology, Inc. - 0636 Sierra Imaging, Inc. - 0638 Avision, Inc. - 0268 iVina 1200U Scanner - 026a Minolta Dimage Scan Dual II -+ 0a10 iVina FB1600/UMAX Astra 4500 - 4004 Minolta Dimage Scan Elite II --063d Fong Kai Industrial Co., Ltd. --063f New Technology Cable Ltd. -+063d Fong Kai Industrial Co., Ltd -+063f New Technology Cable, Ltd - 0640 Hitex Development Tools - 0641 Woods Industries, Inc. - 0642 VIA Medical Corp. -@@ -1123,107 +1548,165 @@ - 0000 Floppy - 0645 Who? Vision Systems, Inc. - 0646 UMAX -+0647 Acton Research Corp. -+ 0100 ARC SpectraPro UV/VIS/IR Monochromator/Spectrograph -+ 0101 ARC AM-VM Mono Airpath/Vacuum Monochromator/Spectrograph -+ 0102 ARC Inspectrum Mono -+ 0103 ARC Filterwheel -+ 03e9 Inspectrum 128x1024 F VIS Spectrograph -+ 03ea Inspectrum 256x1024 F VIS Spectrograph -+ 03eb Inspectrum 128x1024 B VIS Spectrograph -+ 03ec Inspectrum 256x1024 B VIS Spectrograph - 0648 Inside Out Networks - 064b White Mountain DSP, Inc. --064c Ji-Haw Industrial Co., Ltd. -+064c Ji-Haw Industrial Co., Ltd -+064e Suyin Corp. - 064f WIBU-Systems AG - 0651 Likom Technology Sdn. Bhd. - 0652 Stargate Solutions, Inc. - 0654 Granite Microsystems, Inc. --0655 Space Shuttle Hi-Fi Wire & Cable Industry Co, Ltd. --0656 Glory Mark Electronic Ltd. --0657 Tekcon American Corp. --065a Optoelectronics Co., Ltd. -+0655 Space Shuttle Hi-Tech Co., Ltd -+0656 Glory Mark Electronic, Ltd -+0657 Tekcon Electronics Corp. -+065a Optoelectronics Co., Ltd -+ 0001 Barcode scanner - 065e Silicon Graphics --065f Good Way Industrial Co, Ltd & GWC Technology Inc. -+065f Good Way Technology Co., Ltd & GWC technology Inc. -+0660 TSAY-E (BVI) International, Inc. - 0661 Hamamatsu Photonics K.K. --0663 Topmax Electronic Co., Ltd. --0667 Aiwa Co., Ltd. -+0663 Topmax Electronic Co., Ltd -+ 0103 CobraPad -+0667 Aiwa Co., Ltd - 0fa1 TD-U8000 Tape Drive - 0668 WordWand - 0669 Oce' Printing Systems GmbH --066a Total Technologies, Ltd. --066b Linksys Inc. -+066a Total Technologies, Ltd -+066b Linksys, Inc. - 0105 SCM eUSB SmartMedia Card Reader - 010a Melco MCR-U2 SmartMedia / CompactFlash Reader - 2202 USB10TX Ethernet [pegasus] - 2203 USB100TX Ethernet [pegasus] - 2204 USB100TX HomePNA Ethernet [pegasus] - 2206 USB Ethernet [pegasus] -- 2211 WUSB11 Wireless Ethernet --066d Entrega Inc. -+ 2211 WUSB11 802.11b Adapter -+ 2212 WUSB11v2.5 802.11b Adapter -+ 2213 WUSB12v1.1 802.11b Adapter -+066d Entrega, Inc. - 066e Acer Semiconductor America, Inc. - 066f SigmaTel, Inc. -+ 3400 STMP3400 D-Major MP3 Player -+ 3410 STMP3410 D-Major MP3 Player - 4200 STIr4200 IrDA Bridge --0672 Labtec Inc. -+ 8202 Jens of Sweden / I-BEAD 150M/150H MP3 player -+0672 Labtec, Inc. - 1041 LCS1040 Speaker System - 5000 SpaceBall 4000 FLX - 0673 HCL - 5000 Keyboard -+0674 Key Mouse Electronic Enterprise Co., Ltd - 0675 Draytech - 0110 Vigor 128 ISDN TA - 0676 Teles AG --0677 Aiwa Co., Ltd. -+0677 Aiwa Co., Ltd - 0fa1 TD-U8000 Tape Drive - 0678 ACard Technology Corp. - 067b Prolific Technology, Inc. - 0000 PL2301 USB-USB Bridge - 0001 PL2302 USB-USB Bridge -- 2307 PL2307 USB-ATAPI4 Bridge - 2303 PL2303 Serial Port -+ 2305 PL2305 Parallel Port -+ 2307 PL2307 USB-ATAPI4 Bridge -+ 2315 Flash Disk Embedded Hub -+ 2316 Flash Disk Security Device -+ 2317 Mass Storage Device -+ 2501 PL2501 USB-USB Bridge (USB 2.0) -+ 2515 Flash Disk Embedded Hub -+ 2517 Flash Disk Mass Storage Device - 067c Efficient Networks, Inc. - 1001 Siemens SpeedStream 100MBps Ethernet -- 1022 Siemens 802.11b Wireless Ethernet -+ 1022 Siemens SpeedStream 1022 802.11b Adapter - 4060 Alcatel Speedstream 4060 ADSL Modem - 067d Hohner Corp. - 067e Intermec --067f Virata Ltd. --0680 Avance Logic, Inc. -+067f Virata, Ltd -+0680 Realtek Semiconductor Corp., CPP Div. (Avance Logic) -+ 0002 Arowana Optical Wheel Mouse MSOP-01 - 0681 Siemens Information and Communication Products - 0002 Gigaset 3075 Passive ISDN - 0005 Mouse with Fingerprint Reader -+ 0012 I-Gate 802.11b Adapter - 0684 Actiontec Electronics, Inc. --0686 Minolta Co., Ltd. -+0686 Minolta Co., Ltd -+ 4003 Dimage 2330 Zoom -+ 4004 Scan Elite II - 4006 Dimage 7 digital still camera -+ 4007 Dimage S304 digital still camera - 4009 Dimage X digital still camera --068a Pertech Inc. -+ 400a Dimage S404 digital still camera -+ 400b Dimage 7i digital still camera -+ 400d Scan Dual III -+ 4014 Dimage S414 digital still camera -+068a Pertech, Inc. - 068e CH Products, Inc. -+ 00e2 HFX OEM Joystick -+ 00f2 Flight Sim Pedals -+ 00ff Flight Sim Yoke - 0500 GameStick 3D -+ 0501 CH Pro Pedals - 0504 F-16 Combat Stick --0690 Golden Bridge Electric Co., Ltd. --0693 Hagiwara Sys-Com -+0690 Golden Bridge Electech, Inc. -+0693 Hagiwara Sys-Com Co., Ltd - 0002 FlashGate SmartMedia Card Reader -- 0003 FlasgGate CompactFlash Card Reader -+ 0003 FlashGate CompactFlash Card Reader - 0005 FlashGate - 0694 Lego Group - 0001 Mindstorms Tower - 0698 Chuntex (CTX) - 1786 1300ex Monitor - 9999 VLxxxx Monitor+Hub -+0699 Tektronix, Inc. - 069a Askey Computer Corp. - 0001 VC010 WebCam [pwc] --069b Thomson Consumer Electronics -+ 0321 Dynalink WLL013 / Compex WLU11A 802.11b Adapter -+ 0821 BT Voyager 1010 802.11b Adapter -+069b Thomson, Inc. -+ 0704 DCM245 Cable Modem -+ 2220 RCA Kazoo RD1000 MP3 Player - 069d Hughes Network Systems (HNS) - 0002 Satellite Device - 069e Marx - 0005 CryptoBox v1.2 -+069f Allied Data Technologies BV -+ 0010 Tornado Speakerphone FaxModem 56.0 -+06a2 Topro Technology, Inc. - 06a3 Saitek PLC - 0006 Cyborg Gold Joystick -+ 0200 Xbox Adrenalin Hub -+ 0241 Xbox Adrenalin Gamepad -+ 0422 ST90 Joystick - 052d P750 Gamepad - 053f X36F Flightstick - 100a SP550 Pad and Joystick Combo - 100b SP550 Pad -+06a4 Xiamen Doowell Electron Co., Ltd - 06a5 Divio -+ 0000 Typhoon Webcam 100k [nw8000] - d001 ProLink DS3303u WebCam --06aa Sysgration Ltd. --06ac Fujitsu PC Corp. --06ad Greatland Electronics Taiwan Ltd. -+ d800 Chicony TwinkleCam -+06a8 Topaz Systems, Inc. -+ 0042 SignatureGem 1X5 Pad -+ 0043 SignatureGem 1X5-HID Pad -+06a9 Westell -+06aa Sysgration, Ltd -+06ac Fujitsu Laboratories of America, Inc. -+06ad Greatland Electronics Taiwan, Ltd - 06ae Professional Multimedia Testing Centre --06b8 Pixela Corproation -+06b8 Pixela Corp. - 06b9 Alcatel Telecom -- 4061 Speed Touch ISDN --06ba Smooth Cord & Connector Co., Ltd. --06bb EDA Inc. -+ 4061 Speed Touch ISDN or ADSL Modem -+ a5a5 DynaMiTe Modem -+06ba Smooth Cord & Connector Co., Ltd -+06bb EDA, Inc. - 06bc Oki Data Corp. - 06bd AGFA-Gevaert NV - 0001 SnapScan 1212U -@@ -1232,17 +1715,38 @@ - 0403 ePhoto CL18 Camera - 0404 ePhoto CL20 Camera - 2061 SnapScan 1212U (?) -+ 208d Snapscan e40 - 208f SnapScan e50 -+ 2091 SnapScan e20 -+ 2093 SnapScan e10 -+ 2095 SnapScan e25 -+ 2097 SnapScan e26 - 20fd SnapScan e52 --06be Asia Microelectronic Development, Inc. -+ 20ff SnapScan e42 -+06be AME Optimedia Technology Co., Ltd - 06bf Leoco Corp. -+06c2 GLAB Chester -+ 0030 RFID Reader -+ 0038 4-Motor PhidgetServo v3.0 -+ 0039 1-Motor PhidgetServo v3.0 -+ 003b 8-Motor PhidgetServo -+ 0040 Interface Kit 884 -+ 0041 Interface Kit 088 -+ 0042 Interface Kit 32-32-0 -+ 0043 Interface Kit 0-256-0 -+ 0048 Receiver Ver 1.0 -+ 0049 PhidgetLED Ver 1.0 -+ 004b PhidgetEncoder Ver 1.0 -+ 004e PhidgetPower Ver 1.01 -+ 0050 PhidgetTextLCD ECMA1010 Ver 1.0 -+ 0058 PhidgetGraphicLCD Ver 1.0 - 06c4 Bizlink International Corp. - 06c5 Hagenuk, GmbH --06c6 Infowave Software Inc. -+06c6 Infowave Software, Inc. - 06c8 SIIG, Inc. --06c9 Taxan (Europe) Ltd. -+06c9 Taxan (Europe), Ltd - 06ca Newer Technology, Inc. --06cb Synaptics -+06cb Synaptics, Inc. - 06cc Terayon Communication Systems - 06cd Keyspan - 0101 USA-28 PDA [preenum] -@@ -1265,20 +1769,23 @@ - 1012 PanoCam 12/12X - 06d0 LapLink, Inc. - 0622 LapLink Gold USB-USB Bridge [net1080] --06d1 Daewoo Electronics Co Ltd. -+06d1 Daewoo Electronics Co., Ltd - 06d3 Mitsubishi Electric Corp. - 06d5 Toshiba - 4000 Japanese Keyboard - 06d6 Aashima Technology B.V. - 06d7 Network Computing Devices (NCD) - 06d8 Technical Marketing Research, Inc. --06da Phoenixtec Power Co., Ltd. -+06da Phoenixtec Power Co., Ltd - 06db Paradyne --06dc Compeye Corp. --06de Heisei Electronics Co. Ltd. -+06dc Foxlink Image Technology Co., Ltd -+ 0014 Prolink Winscan Pro 2448U -+06de Heisei Electronics Co., Ltd - 06e0 Multi-Tech Systems, Inc. -- f101 MT5634ZBA MultiModem 56k Intl. -- f104 MT5634ZBA MultiModem 56k -+ f101 MT5634ZBA-USB MultiModemUSB (old firmware) -+ f103 MT5634MU MultiMobileUSB -+ f104 MT5634ZBA-USB MultiModemUSB (new firmware) -+ f107 MT5634ZBA-USB-V92 MultiModemUSB - 06e1 ADS Technologies, Inc. - 0008 UBS-10BT Ethernet [klsi] - 06e4 Alcatel Microelectronics -@@ -1287,22 +1794,25 @@ - 0001 NetCom Roadster II 56k - 0002 Roadster II 56k - 06ef I.A.C. Geometrische Ingenieurs B.V. --06f0 T.N.C Industrial Co., Ltd. --06f1 Opcode Systems Inc. --06f2 Machkey International (USA) --06f6 Wintrend Technology Co., Ltd. -+06f0 T.N.C Industrial Co., Ltd -+06f1 Opcode Systems, Inc. -+06f2 Emine Technology Co. -+06f6 Wintrend Technology Co., Ltd - 06fa HSD S.r.L - 06fd Boston Acoustics - 06fe Gallant Computer, Inc. - 0701 Supercomal Wire & Cable SDN. BHD. --0703 Bencent Tzeng Industry Co., Ltd. --0707 Standard Microsystems Corp -+0703 Bvtech Industry, Inc. -+0705 NKK Corp. -+0707 Standard Microsystems Corp. - 0100 2202 Ethernet [klsi] - 0200 2202 Ethernet [pegasus] --0709 Silicon Systems Ltd. (SSL) --070a Oki Electric Industry Co., Ltd. --070d Comoss Electronic Co., Ltd. --0710 Connect Tech Inc. -+0708 Putercom Co., Ltd -+0709 Silicon Systems, Ltd (SSL) -+070a Oki Electric Industry Co., Ltd -+070d Comoss Electronic Co., Ltd -+070e Excel Cell Electronic Co., Ltd -+0710 Connect Tech, Inc. - 0001 WhiteHeat (fake ID) - 8001 WhiteHeat - 0711 Magic Control Technology Corp. -@@ -1317,21 +1827,25 @@ - 0714 NewMotion, Inc. - 0003 ADB to USB convertor - 0718 Imation Corp. --0719 Tremon Enterprises Co., Ltd. -+0719 Tremon Enterprises Co., Ltd - 071b Domain Technologies, Inc. - 0002 DTI-56362-USB Digital Interface Unit - 0101 Audio4-USB DSP Data Acquisition Unit - 0201 Audio4-5410 DSP Data Acquisition Unit - 0301 SB-USB JTAG Emulator - 071c Xionics Document Technologies, Inc. --071d Eicon Technology Corp. -+071d Eicon Networks Corp. - 1000 Diva ISDN TA - 0723 Centillium Communications Corp. - 0726 Vanguard International Semiconductor-America - 0729 Amitm - 1000 USC-1000 Serial Port --072f ACS, Ltd. -- 0001 ACR20U SmartCard Reader -+072e Sunix Co., Ltd -+072f Advanced Card Systems, Ltd -+ 0001 AC1030-based SmartCard Reader -+ 9000 ACR38 AC1038-based Smart Card Reader -+0731 Susteen, Inc. -+0732 Goldfull Electronics & Telecommunications Corp. - 0733 ViewQuest Technologies, Inc. - 0401 CS330 WebCam - 0402 M-318B WebCam -@@ -1340,46 +1854,58 @@ - 0001 560V Modem - 0735 Asuscom Network - c541 ISDN TA 280 -+0736 Lorom Industrial Co., Ltd - 0738 Mad Catz, Inc. -+073b Suncom Technologies -+073d Eutron S.p.a. -+ 0005 Crypto Token - 073e NEC, Inc. - 0301 Game Pad --073b Suncom Technologies --0745 Syntech Information Co., Ltd. -+0745 Syntech Information Co., Ltd - 0746 Onkyo Corp. - 0747 Labway Corp. --0748 Strong Man Enterprise Co., Ltd. -+0748 Strong Man Enterprise Co., Ltd - 0749 EVer Electronics Corp. --074a Ming Fortune Industry Co., Ltd. -+074a Ming Fortune Industry Co., Ltd - 074b Polestar Tech. Corp. - 074c C-C-C Group PLC --074d Micronas Intermetall GmbH -+074d Micronas GmbH - 074e Digital Stream Corp. - 0001 PS/2 Adapter - 0002 PS/2 Adapter - 0755 Aureal Semiconductor -+0757 Network Technologies, Inc. - 0763 Midiman - 1001 Midisport 2x2 --0757 Network Technologies, Inc. -+ 1010 Midisport 1x1 -+ 1020 Midisport 4x4 -+ 1030 Midisport 8x8 - 0764 Cyber Power System, Inc. --0765 X-Rite Incorporated --0766 Destech Solutions, Inc. -+0765 X-Rite, Inc. -+0766 Jess-Link Products Co., Ltd - 0768 Camtel Technology Corp. - 0769 Surecom Technology Corp. - 076a Smart Technology Enablers, Inc. --076b Utimaco Safeware AG -+076b OmniKey AG -+ 0596 CardMan 2020 -+ 1784 CardMan 6020 -+076c Partner Tech - 076d Denso Corp. --076e Kuan Tech Enterprise Co., Ltd. --076f Jhen Vei Enterprise Co., Ltd. --0774 AmTRAN Technology Co., Ltd. -+076e Kuan Tech Enterprise Co., Ltd -+076f Jhen Vei Electronic Co., Ltd -+0774 AmTRAN Technology Co., Ltd - 0775 Longshine Electronics Corp. - 0776 Inalways Corp. - 0777 Comda Enterprise Corp. - 0779 Fairchild Semiconductor --077a Sankyo Seiki Mfg. Co., Ltd. -+077a Sankyo Seiki Mfg. Co., Ltd - 077b Linksys --077c Forward Electronics Co., Ltd. -+ 2219 WUSB11 V2.6 802.11b Adapter -+ 2226 USB200M 100baseTX Adapter -+077c Forward Electronics Co., Ltd - 0005 NEC Keyboard - 077d Griffin Technology -+ 0410 PowerMate - 0223 IMic Audio In/Out - 077f Well Excellent & Most Corp. - 0781 SanDisk Corp. -@@ -1387,27 +1913,40 @@ - 0002 SDDR-31 ImageMate II CompactFlash Reader - 0005 SDDR-05b (CF II) ImageMate CompactFlash Reader - 0200 SDDR-09 (SSFDC) ImageMate SmartMedia Reader [eusb] -+ 0400 SecureMate SD/MMC Reader -+ 0621 SDDR-86 Imagemate 6-in-1 Reader -+ 0810 SDDR-75 ImageMate CF-SM Reader -+ 0830 ImageMate CF/MMC/SD Reader -+ 8185 SDCZ2-nnn Cruzer Mini flash-RAM drive -+ 8889 SDDR-88 Imagemate 8-in-1 Reader - 0782 Trackerball --0784 Vivitar Inc. -- 0100 ViviCam 2655 -+0784 Vivitar, Inc. -+ 0100 Vivicam 2655 - 1310 Vivicam 3305 -- 5260 Werlisa Sport PX 100 -+ 1688 Vivicam 3665 -+ 2888 Polaroid DC700 -+ 3330 Nytec ND-3200 Camera -+ 5260 Werlisa Sport PX 100 / JVC GC-A33 Camera -+ 5300 Pretec dc530 - 0785 NTT-ME - 0001 MN128mini-V ISDN TA - 0003 MN128mini-J ISDN TA -+0789 Logitec Corp. - 078b Happ Controls, Inc. - 0010 Driving UGCI - 0020 Flying UGCI - 0030 Fighting UGCI --078e Brimax Inc. --0790 Pro-Image Manufacturing Co., Ltd. -+078e Brincom, Inc. -+0790 Pro-Image Manufacturing Co., Ltd - 0791 Copartner Wire and Cable Mfg. Corp. - 0792 Axis Communications AB --0793 Wha Yu Industrial Co., Ltd. -+0793 Wha Yu Industrial Co., Ltd - 0794 ABL Electronics Corp. --0795 RealChip Inc. -+0795 RealChip, Inc. - 0796 Certicom Corp. - 0797 Grandtech Semiconductor Corp. -+ 8001 SmartCam -+ 801c Meade Binoculars/Camera - 079b Sagem - 079d Alfadata Computer Corp. - 0201 GamePort Adapter -@@ -1415,15 +1954,17 @@ - d952 Palladio USB V.92 Modem - 07a2 National Technical Systems - 07a3 Onnto Corp. --07a4 Be Incorporated --07a6 ADMtek Incorporated -+07a4 Be, Inc. -+07a6 ADMtek, Inc. - 0986 AN986 Pegasus Ethernet - 8511 ADM8511 Pegasus II Ethernet --07aa Correga K.K. -+07aa Corega K.K. - 0001 Ether USB-T Ethernet [klsi] - 0004 FEther USB-TX Ethernet [pegasus] --07ab Freecom -+ 0012 Stick-11 802.11b Adapter -+07ab Freecom Technologies - fc01 IDE bridge -+ fc03 USB2-IDE IDE bridge - 07af Microtech - 0004 SCSI-DB25 SCSI Bridge [shuttle] - 0005 SCSI-HD50 SCSI Bridge [shuttle] -@@ -1431,224 +1972,294 @@ - 07b0 Trust Technologies - 0001 ISDN TA - 07b1 IMP, Inc. --07b2 Motorola ING -+07b2 Motorola BCS, Inc. - 4100 SB4100 Cable Modem - 07b3 Plustek, Inc. - 0001 OpticPro 1212U Scanner --07b4 Olympus Optical Co., Ltd. -+ 0010 OpticPro U12 Scanner -+ 0011 OpticPro U24 Scanner -+ 0013 OpticPro UT12 Scanner -+ 0015 OpticPro U24 Scanner -+ 0017 OpticPro UT12/16/24 Scanner -+ 0400 OpticPro 1248U Scanner -+ 0401 OpticPro 1248U Scanner #2 -+ 0403 OpticPro U16B Scanner -+07b4 Olympus Optical Co., Ltd - 0100 Camedia C-2100/C-3000 Ultra Zoom Camera -- 0102 Camedia E-10 Camera -- 0105 Camedia C-700/C-3040 Zoom Camera --07b5 Mega World International Ltd. -+ 0102 Camedia E-10/C-220/C-50 Camera -+ 0105 Camedia C-700/C-3040/C-4000 Zoom Camera -+ 0114 C-350Z Camera -+ 0203 Digital Voice Recorder DW-90 -+ 0206 Digital Voice Recorder DS-330 -+ 0207 Digital Voice Recorder & Camera W-10 -+07b5 Mega World International, Ltd - 9902 GamePad - 07b6 Marubun Corp. --07b7 TIME Interconect Ltd. --07b8 D-Link, Inc. -- abc1 DU-E10 Ethernet [pegasus] -+07b7 TIME Interconnect, Ltd -+07b8 D-Link Corp. - 4000 DU-E10 Ethernet [klsi] - 4002 DU-E100 Ethernet [pegasus] -+ abc1 DU-E10 Ethernet [pegasus] - f101 DSB-560 Modem [atlas] --07bc Canon Computer Sytems, Inc. --07bd Webgear Inc. -+07bc Canon Computer Systems, Inc. -+07bd Webgear, Inc. - 07be Veridicom --07c4 DataFab Systems, Inc. -+07c0 Code Mercenaries Hard- und Software GmbH -+ 1500 IO-Warrior 40 -+ 1501 IO-Warrior 24 -+ 1502 IO-Warrior 48 -+ 1503 IO-Warrior 28 -+07c4 Datafab Systems, Inc. - a000 CompactFlash Card Reader - a001 CompactFlash & SmartMedia Card Reader [eusb] - a002 Disk Drive - a005 CompactFlash & SmartMedia Card Reader - a006 SmartMedia Card Reader - a109 LC1 CompactFlash & SmartMedia Card Reader -+ a200 DF-UT-06 Hama MMC/SD Reader - a400 CompactFlash & Microdrive Reader -+ b004 MMC/SD Reader - 07c5 APG Cash Drawer --07c6 Share Wave, Inc. --07c7 Powertech Industrial Co., Ltd. -+07c6 ShareWave, Inc. -+07c7 Powertech Industrial Co., Ltd - 07c8 B.U.G., Inc. - 07c9 Allied Telesyn International - 07ca AVerMedia Technologies, Inc. --07cb Kingmax Technology Inc. --07cc Carry Inc. -+07cb Kingmax Technology, Inc. -+07cc Carry Computer Eng., Co., Ltd - 0000 CF Card Reader - 0003 SM Card Reader - 0004 SM/CF/PCMCIA Card Reader - 0006 SM/CF/PCMCIA Card Reader - 000c SM/CF Card Reader - 000d SM/CF Card Reader -+ 0200 6-in-1 Card Reader -+ 0301 6-in-1 Card Reader - 07cd Elektor - 0001 USBuart Serial Port --07cf Casio Computer Co., Ltd. -- 1001 QV-8000SX/3000EX Digicam -+07cf Casio Computer Co., Ltd -+ 1001 QV-8000SX/5700/3000EX Digicam - 2002 E-125 Cassiopeia Pocket PC - 3801 Casio WMP-1 MP3-Watch -+ 4500 LV-20 Digital Camera -+07d0 Dazzle -+ 0001 Digital Video Creator I -+ 0002 Global Village VideoFX Grabber -+ 0004 DVC-800 (PAL) Grabber - 07d1 D-Link System --07d2 Aptio Products Inc. -+07d2 Aptio Products, Inc. - 07d3 Cyberdata Corp. - 07d7 GCC Technologies, Inc. - 07da Arasan Chip Systems -+07df David Electronics Co., Ltd - 07e1 Ambient Technologies, Inc. - 5201 V.90 Modem --07e2 Elmeg GmbH & Co., Ltd. -+07e2 Elmeg GmbH & Co., Ltd - 07e3 Planex Communications, Inc. --07e4 Movado Enterprise Co., Ltd. -+07e4 Movado Enterprise Co., Ltd - 07e5 QPS, Inc. - 5c01 Que! CDRW - 07e6 Allied Cable Corp. - 07e7 Mirvo Toys, Inc. - 07e8 Labsystems --07eb Double-H Technology Co., Ltd. --07ec Taiyo Electrical Wire & Cable Co., Ltd. -+07ea Iwatsu Electric Co., Ltd -+07eb Double-H Technology Co., Ltd -+07ec Taiyo Electric Wire & Cable Co., Ltd -+07f6 Circuit Assembly Corp. -+07f7 Century Corp. -+07f9 Dotop Technology, Inc. - 07fa Draytek - 0778 miniVigor 128 ISDN TA --07f6 Circuit Assembly Corp --07f7 Century Corp. - 07fd Mark of the Unicorn - 0000 FastLane MIDI Interface - 0801 Mag-Tek --0802 Tritheim Technologies, Inc. -+0802 Mako Technologies, LLC - 0803 Zoom Telephonics, Inc. - 9700 2986L FaxModem --0809 Genicom Corp. --080a Evermuch Technology Co., Ltd. --080d Teco Image Systems Co., Ltd. -+0809 Genicom Technology, Inc. -+080a Evermuch Technology Co., Ltd -+080d Teco Image Systems Co., Ltd -+ 0102 Hercules Scan@home 48 -+0810 Personal Communication Systems, Inc. - 0813 Mattel, Inc. -+ 0001 Intel Play QX3 Microscope - 081a MG Logic - 1000 Duo Pen Tablet -+081b Indigita Corp. - 081c Mipsys --081e Intelligent Peripheral Devices, Inc. -+081e AlphaSmart, Inc. - 0822 Reudo Corp. - 0825 GC Protronics - 0826 Data Transit - 0827 BroadLogic, Inc. - 0828 Sato Corp. --0829 Telocity, Inc. -+0829 DirecTV Broadband, Inc. (Telocity) - 082d Handspring - 0100 Visor --0830 Palm Computing, Inc. -+ 0300 Treo 600 -+0830 Palm, Inc. - 0002 Palm M505 - 0003 Palm M515 - 0020 Palm I705 - 0040 Palm M125 - 0050 Palm M130 -+ 0060 Palm Tungsten T - 0080 Palm - 0832 Kouwell Electronics Corp. - 0833 Sourcenext Corp. --0835 Action Star Enterprise Co., Ltd. --0839 Samsung Aerospace Industries Ltd. -+0835 Action Star Enterprise Co., Ltd -+0839 Samsung Techwin Co., Ltd - 0005 Digimax Camera -+ 0008 Digimax 230 Camera -+ 1003 Digimax 210SE -+ 1012 6500 Document Camera -+ 1542 Digimax 50 Duo - 083a Accton Technology Corp. - 1046 10/100 Ethernet [pegasus] - 5046 SpeedStream 10/100 Ethernet [pegasus] - 083f Global Village - b100 TelePort V.90 Fax/Modem --0841 Rioport.com Inc. -+0840 Argosy Research, Inc. -+0841 Rioport.com, Inc. - 0001 Rio 500 -+0844 Welland Industrial Co., Ltd - 0846 NetGear, Inc. - 1001 EA101 Ethernet [klsi] - 084d Minton Optic Industry Co., Inc. - 0003 S-Cam F5 Digital Camera -+ 0011 Argus DC3500 Digital Camera - 084e KB Gear - 1002 Pablo Tablet - 084f Empeg - 0001 Empeg-Car Mark I/II Player - 0850 Fast Point Technologies, Inc. --0851 Macronix International Co., Ltd. -+0851 Macronix International Co., Ltd -+ 1543 Maxell WS30 Slim Digital Camera - 0852 CSEM --0854 ActiveWire Inc. -+0854 ActiveWire, Inc. - 0100 I/O Board - 0101 I/O Board, rev1 --0858 Hitachi Maxell Ltd. -+0858 Hitachi Maxell, Ltd - 0859 Minolta Systems Laboratory, Inc. - 085a Xircom - 0001 Portstation Dual Serial Port -+ 0299 Colorvision, Inc. Monitor Spyder - 8027 PGSDB9 Serial Port - 0862 Teletrol Systems, Inc. - 0863 Filanet Corp. - 0864 NetGear, Inc. -- 4100 MA101 Wireless Adapter -+ 4100 MA101 802.11b Adapter -+ 4102 MA101 802.11b Adapter - 086a Emagic Soft-und Hardware GmbH - 086c DeTeWe - Deutsche Telephonwerke AG & Co. - 1001 Eumex 504PC ISDN TA --086e System TALKS Inc. --086f MEC IMEX Inc/HPT -+086e System TALKS, Inc. -+086f MEC IMEX, Inc. - 0870 Metricom - 0871 SanDisk, Inc. - 0001 SDDR-01 Compact Flash Reader - 0002 SDDR-31 Compact Flash Reader - 0005 SDDR-05 Compact Flash Reader --0873 Xpeed Inc. -+0873 Xpeed, Inc. -+0874 A-Tec Subsystem, Inc. - 0879 Comtrol Corp. --087c Adesso/Kbtek America Inc. -+087c Adesso/Kbtek America, Inc. - 087d Jaton Corp. - 087e Fujitsu Computer Products of America - 087f Virtual IP Group, Inc. --0880 APT Technologies Inc. -+0880 APT Technologies, Inc. - 0883 Recording Industry Association of America (RIAA) - 0885 Boca Research, Inc. - 0886 XAC Automation Corp. - 0887 Hannstar Electronics Corp. - 088b MassWorks, Inc. - 4944 MassWorks ID-75 TouchScreen --0892 DioGraphy Inc. -+0892 DioGraphy, Inc. - 089c United Technologies Research Cntr. --089d Icron Systems Inc. --089e NST Co., Ltd. --08a5 e9 Inc. -+089d Icron Technologies Corp. -+089e NST Co., Ltd -+089f Primex Aerospace Co. -+08a5 e9, Inc. - 08a8 Andrea Electronics -+08ae Macally (Mace Group, Inc.) -+08b4 Sorenson Vision, Inc. - 08b8 J. Gordon Electronic Design, Inc. - 01f4 USBSIMM1 --08b9 Tandy Corp./Radio Shack --08bb Burr-Brown Japan, Ltd. --08bd Citizen Watch Co., Ltd. -+08b9 RadioShack Corp. (Tandy) -+08bb Texas Instruments Japan -+08bd Citizen Watch Co., Ltd - 08c3 Precise Biometrics - 0101 Precise 100 MC FingerPrint and SmartCard Reader - 08c4 Proxim, Inc. --08c7 Key Nice Enterprise Co., Ltd. -+08c7 Key Nice Enterprise Co., Ltd - 08c8 2Wire, Inc. - 08c9 Nippon Telegraph and Telephone Corp. --08ca AIPTEK International Inc. -+08ca Aiptek International, Inc. -+ 0010 Tablet - 0020 APT-6000U Tablet -+ 0021 APT-2 Tablet -+ 0022 Tablet -+ 0023 Tablet -+ 0024 Tablet - 0103 Pocket DV Digital Camera -+ 0111 PenCam VGA Plus -+ 2010 Pocket CAM 3 Mega (webcam) -+ 2011 Pocket CAM 3 Mega (storage) - 08cd Jue Hsun Ind. Corp. - 08ce Long Well Electronics Corp. - 08cf Productivity Enhancement Products - 08d1 smartBridges, Inc. - 0001 smartNIC Ethernet [catc] - 08d3 Virtual Ink --08d4 Siemens PC Systems -+08d4 Fujitsu Siemens Computers -+ 0009 SCR SmartCard Reader -+08d9 Increment P Corp. - 08dd Billionton Systems, Inc. - 0986 USB-100N Ethernet [pegasus] - 0987 USBLP-100 HomePNA Ethernet [pegasus] - 0988 USBEL-100 Ethernet [pegasus] - 8511 USBE-100 Ethernet [pegasus2] -+08de ??? -+ 7a01 802.11b Adapter -+08df Spyrus, Inc. - 08e3 Olitec, Inc. - 0002 USB-RS232 Bridge -+08e4 Pioneer Corp. - 08e5 Litronic --08e6 GemPlus -+08e6 Gemplus -+ 0430 GemPC430 SmartCard Reader -+ 0432 GemPC432 SmartCard Reader -+ 0435 GemPC435 SmartCard Reader - 08e7 Pan-International Wire & Cable - 08e8 Integrated Memory Logic - 08e9 Extended Systems, Inc. - 0100 XTNDAccess IrDA Dongle --08ea Ericsson Inc., Blue Ridge Labs --08ec M-Systems -+08ea Ericsson, Inc., Blue Ridge Labs -+08ec M-Systems Flash Disk Pioneers - 0010 DiskOnKey -+08ee CCSI/Hesso -+08f0 Corex Technologies - 08f1 CTI Electronics Corp. --08f5 SYSTEC Co., Ltd. --08f6 Logic 3 International Limited --08f8 Keen Top International Enterprise Co., Ltd. --08f9 EnThink, Inc. -+08f5 SysTec Co., Ltd -+08f6 Logic 3 International, Ltd -+08f8 Keen Top International Enterprise Co., Ltd -+08f9 Wipro Technologies - 08fa Caere - 08fb Socket Communications --08fc Sicon Cable Technology Co. Ltd. -+08fc Sicon Cable Technology Co., Ltd - 08fd Digianswer A/S - 08ff AuthenTec, Inc. - 0900 Pinnacle Systems, Inc. - 0901 VST Technologies - 0906 Faraday Technology Corp. --090a Trumpion Microelectronics Inc. -+0909 Audio-Technica Corp. -+090a Trumpion Microelectronics, Inc. -+ 1540 Digitex Container Flash Disk - 090b Neurosmith - 090c Feiya Technology Corp. - 090d Multiport Computer Vertriebs GmbH - 090e Shining Technology, Inc. --090f Fujitsu Devices Inc. -+090f Fujitsu Devices, Inc. - 0910 Alation Systems, Inc. - 0911 Philips Speech Processing - 0912 Voquette, Inc. -@@ -1656,49 +2267,64 @@ - 0917 SmartDisk Corp. - 0919 Tiger Electronics - 0100 Fast Flicks Digital Camera -+091e Garmin International -+ 0003 GPSmap 60C - 0920 Echelon Co. - 0921 GoHubs, Inc. - 0922 Dymo-CoStar Corp. -+ 0007 LabelWriter 330 -+ 0009 LabelWriter 310 - 0923 IC Media Corp. -+ 010f SIIG MobileCam - 0924 Xerox --0927 Summus, Ltd. --0928 Oxford Semiconductor Ltd. --0929 American Biometric Company -+0925 Wisegroup, Ltd -+ 8101 1-Motor PhidgetServo v2.0 -+ 8104 4-Motor PhidgetServo v2.0 -+ 8866 MP-8866 Dual USB Joypad -+0927 Summus, Ltd -+0928 Oxford Semiconductor, Ltd -+0929 American Biometric Co. -+092a Toshiba Information & Industrial Sys. And Services -+092b Sena Technologies, Inc. - 0930 Toshiba Corp. --0931 Harmonic Data Systems Ltd. -+0931 Harmonic Data Systems, Ltd - 0932 Crescentec Corp. - 0933 Quantum Corp. - 0934 Netcom Systems - 0939 Lumberg, Inc. - 093a Pixart Imaging, Inc. --093b Plextor --093e J.S.T. Mfg. Co., Ltd. -+093b Plextor Corp. -+093d InnoSync, Inc. -+093e J.S.T. Mfg. Co., Ltd - 093f Olympia Telecom Vertriebs GmbH --0940 Japan Storage Battery Co., Ltd. -+0940 Japan Storage Battery Co., Ltd - 0941 Photobit Corp. - 0942 i2Go.com, LLC --0943 HCL Technologies India Private Limited -+0943 HCL Technologies India Private, Ltd - 0944 KORG, Inc. - 0945 Pasco Scientific - 0948 Kronauer music in digital -- 1105 USB One - 0301 USB Pro (24/48) - 0302 USB Pro (24/96 playback) - 0303 USB Pro (24/96 record) - 0304 USB Pro (16/48) -+ 1105 USB One -+094b Linkup Systems Corp. - 094d Cable Television Laboratories - 0951 Kingston Technology - 000a KNU101TX 100baseTX Ethernet - 0954 RPM Systems Corp. --0955 NVidia --0956 BlueWater Systems, Inc. -+0955 NVidia Corp. -+0956 BSquare Corp. - 0957 Agilent Technologies, Inc. - 0958 CompuLink Research, Inc. --0959 Cologne Chip Designs GmbH -+0959 Cologne Chip AG - 095a Portsmith - 095b Medialogic Corp. - 095c K-Tec Electronics - 095d Polycom, Inc. -+0967 Acer (??) -+ 0204 WarpLink 802.11b Adapter - 0968 Catalyst Enterprises, Inc. - 0971 Gretag-Macbeth AG - 0973 Schlumberger -@@ -1707,19 +2333,21 @@ - 0976 Adirondack Wire & Cable - 0977 Lightsurf Technologies - 0978 Beckhoff GmbH --0979 Teracom International Inc. -+0979 Jeilin Technology Corp., Ltd - 097a Minds At Work LLC --097b Knudsen Engineering Limited --097c Marunix Co., Ltd. -+097b Knudsen Engineering, Ltd -+097c Marunix Co., Ltd - 097d Rosun Technologies, Inc. --0981 Oak Technology Ltd. -+097f Barun Electronics Co., Ltd -+0981 Oak Technology, Ltd -+0984 Apricorn - 0985 cab Produkttechnik GmbH & Co KG - 00a3 A3/200 or A3/300 Label Printer - 098c Vitana Corp. - 098d INDesign --098e Integrated Intellectual Property Inc. -+098e Integrated Intellectual Property, Inc. - 098f Kenwood TMI Corp. --0993 Gemstar eBook Group, Ltd. -+0993 Gemstar eBook Group, Ltd - 0001 REB1100 eBook Reader - 0996 Integrated Telecom Express, Inc. - 09a3 PairGain Technologies -@@ -1727,14 +2355,18 @@ - 09a5 VCON Telecommunications - 09a6 Poinchips - 09a7 Data Transmission Network Corp. --09a8 Shinestar Enterprise Co., Ltd. --09a9 Smart Card Technologies Co., Ltd. -+09a8 Lin Shiung Enterprise Co., Ltd -+09a9 Smart Card Technologies Co., Ltd - 09aa Intersil Corp. --09b2 Franklin Electronic Publishers -- 0001 eBookman Palm Computer -+ 3642 Prism2.x 802.11b Adapter -+09ae Tripp Lite -+09b2 Franklin Electronic Publishers, Inc. -+ 0001 eBookman Palm Computer - 09b3 Altius Solutions, Inc. - 09b4 MDS Telephone Systems --09b5 Celltrix Technology Co., Ltd. -+09b5 Celltrix Technology Co., Ltd -+09bc Grundig -+ 0002 MPaxx MP150 MP3 Player - 09be MySmart.Com - 0001 MySmartPad - 09bf Auerswald GmbH & Co. KG -@@ -1742,129 +2374,1002 @@ - 00db COMpact 4410/2206 ISDN ISDN - 00f1 COMfort System Telephones - 09c1 Arris Interactive LLC --09c3 ActivCard, INC. -+09c2 Nisca Corp. -+09c3 ActivCard, Inc. - 09c4 ACTiSYS Corp. -- 0011 ACT-IR2000U IrDA Dongle -+ 0011 ACT-IR2000U IrDA Dongle - 09c5 Memory Corp. - 09cc Workbit Corp. --09cd Psion Dacom Home Networks Ltd. --09ce City Electronics Ltd. -+09cd Psion Dacom Home Networks, Ltd -+09ce City Electronics, Ltd - 09cf Electronics Testing Center, Taiwan --09d1 NeoMagic Inc. --09d2 Vreelin Engineering Inc. -+09d1 NeoMagic, Inc. -+09d2 Vreelin Engineering, Inc. - 09d3 Com One --09d9 KRF Tech Ltd. --09da A4 Tech Co., Ltd. --09db ComputerBoards Inc. -+ 0001 ISDN TA -+09d9 KRF Tech, Ltd -+09da A4 Tech Co., Ltd -+ 001a Wireless Mouse & RXM-15 Receiver -+09db Measurement Computing Corp. - 09dc Aimex Corp. --09dd Fellowes Manufacturing Co. -+09dd Fellowes, Inc. - 09df Addonics Technologies Corp. -+09e1 Intellon Corp. - 09e5 Jo-Dan International, Inc. - 09e6 Silutia, Inc. - 09e7 Real 3D, Inc. --09e8 AKAI Professional M.I. Corp. --09e9 Chen-Source Inc. -+09e8 AKAI Professional M.I. Corp. -+09e9 Chen-Source, Inc. -+09eb IM Networks, Inc. -+ 4331 iRhythm Tuner Remote - 09ef Xitel -- 0101 MD-Port DG2 MiniDisc Interface -+ 0101 MD-Port DG2 MiniDisc Interface - 09f5 AresCom - 09f6 RocketChips, Inc. --09f7 Edu-Science (H.K.) Ltd. --09f8 SoftConnex -+09f7 Edu-Science (H.K.), Ltd -+09f8 SoftConnex Technologies, Inc. - 09f9 Bay Associates - 09fa Mtek Vision - 09fb Altera - 09ff Gain Technology Corp. - 0a00 Liquid Audio - 0a01 ViA, Inc. --0a11 Xentec Incorporated --0a12 Cambridge Silicon Radio Ltd. --0a13 Telebyte Inc. --0a14 Spacelabs Medical Inc. -+0a07 Ontrak Control Systems Inc. -+ 0064 ADU100 Data Acquisition Interface -+ 00c8 ADU200 Relay I/O Interface -+ 00d0 ADU208 Data Acquisition Interface -+0a0b Cybex Computer Products Co. -+0a11 Xentec, Inc. -+0a12 Cambridge Silicon Radio, Ltd -+ 0001 Bluetooth Dongle -+0a13 Telebyte, Inc. -+0a14 Spacelabs Medical, Inc. - 0a15 Scalar Corp. --0a16 Trek Technology (S) PTE Ltd. -+0a16 Trek Technology (S) PTE, Ltd - 9988 Trek2000 TD-G2 --0a17 Asahi Optical Co., Ltd. -+0a17 Pentax Corp. - 0004 Pentax Optio 330 -+ 0006 Pentax Optio S - 0a18 Heidelberger Druckmaschinen AG --0a19 Hua Geng Technologies Inc. --0a43 Boca Systems Inc. -+0a19 Hua Geng Technologies, Inc. -+0a21 Medtronic Physio Control Corp. -+0a22 Century Semiconductor USA, Inc. -+0a2c AK-Modul-Bus Computer GmbH -+ 0008 GPIO Ports -+0a39 Gilat Satellite Networks, Ltd -+0a3a PentaMedia Co., Ltd -+0a3c NTT DoCoMo, Inc. -+0a3d Varo Vision -+0a43 Boca Systems, Inc. -+0a46 Davicom Semiconductor, Inc. -+0a47 Hirose Electric -+0a48 I/O Interconnect -+ 3258 Dane Elec zMate SD Reader -+ 3259 Dane Elec zMate CF Reader -+0a4b Fujitsu Media Devices, Ltd -+0a4c Computex Co., Ltd -+0a4d Evolution Electronics, Ltd -+ 008e MK-249C MIDI Keyboard -+0a4e Steinberg Soft-und Hardware GmbH -+0a4f Litton Systems, Inc. -+0a50 Mimaki Engineering Co., Ltd -+0a51 Sony Electronics, Inc. -+0a52 Jebsee Electronics Co., Ltd -+0a53 Portable Peripheral Co., Ltd -+0a5a Electronics For Imaging, Inc. -+0a5b EAsics NV - 0a5c Broadcom Corp. -+ 2033 BCM2033 Bluetooth -+ 2035 BCM2035 Bluetooth -+0a5d Diatrend Corp. - 0a5f Zebra - 0009 LP2844 Printer --0a6b Green House -+0a62 MPMan -+ 0010 MPMan MP-F40 MP3 Player -+0a66 ClearCube Technology -+0a67 Medeli Electronics Co., Ltd -+0a68 Comaide Corp. -+0a69 Chroma ate, Inc. -+0a6b Green House Co., Ltd - 0001 Compact Flash R/W with MP3 player -+0a6c Integrated Circuit Systems, Inc. -+0a6d UPS Manufacturing -+0a6e Benwin -+0a6f Core Technology, Inc. -+0a70 International Game Technology -+0a72 Sanwa Denshi -+0a7d NSTL, Inc. -+0a7e Octagon Systems Corp. -+0a80 Rexon Technology Corp., Ltd -+0a81 Chesen Electronics Corp. -+ 0101 Keyboard -+ 0203 Mouse -+0a82 Syscan -+ 4600 TravelScan 460/464 -+0a83 NextComm, Inc. -+0a84 Maui Innovative Peripherals -+0a85 Idexx Labs -+0a86 NITGen Co., Ltd -+0a8d Picturetel -+0a8e Japan Aviation Electronics Industry, Ltd -+0a90 Candy Technology Co., Ltd -+0a91 Globlink Technology, Inc. -+0a92 EGO SYStems, Inc. -+0a93 C Technologies AB -+0a94 Intersense -+0aa3 Lava Computer Mfg., Inc. -+0aa4 Develco Elektronik -+0aa5 First International Digital -+0aa6 Perception Digital, Ltd -+ 0101 Hercules Jukebox -+0aa7 Wincor Nixdorf GmbH & Co KG -+0aa8 TriGem Computer, Inc. -+0aa9 Baromtec Co. -+ f01b Medion MD 6242 MP3 Player -+0aaa Japan CBM Corp. -+0aab Vision Shape Europe SA -+0aac iCompression, Inc. -+0aad Rohde & Schwarz GmbH & Co. KG -+0aae NEC infrontia Corp. (Nitsuko) -+0aaf Digitalway Co., Ltd -+0ab0 Arrow Strong Electronics Co., Ltd -+0aba Ellisys -+ 8001 USB Tracker 110 Protocol Analyzer - 0abe Stereo-Link - 0101 SL1200 DAC --0aec Neodio -+0ac3 Sanyo Semiconductor Company Micro -+0ac4 Leco Corp. -+0ac5 I & C Corp. -+0ac6 Singing Electrons, Inc. -+0ac7 Panwest Corp. -+0ac8 Z-Star Microelectronics Corp. -+0ac9 Micro Solutions, Inc. -+ 0000 Backpack CD-ReWriter -+ 0011 Backpack 40GB Hard Drive -+0acc Koga Electronics Co. -+0acd ID Tech -+0acf Intoto, Inc. -+0ad0 Intellix Corp. -+0ad1 Remotec Technology, Ltd -+0ad2 Service & Quality Technology Co., Ltd -+0ae3 Allion Computer, Inc. -+0ae4 Taito Corp. -+0ae7 Neodym Systems, Inc. -+0ae8 System Support Co., Ltd -+0ae9 North Shore Circuit Design L.L.P. -+0aea SciEssence, LLC -+0aeb TTP Communications, Ltd -+0aec Neodio Technologies Corp. -+ 3050 ND3050 8-in-1 Card Reader - 5010 ND5010 Card Reader -+0af0 Option -+ 5000 UMTS Card -+0af6 Silver I Co., Ltd -+0af7 B2C2, Inc. - 0af9 Hama, Inc. - 0010 USB SightCam 100 -+0afc Zaptronix Ltd -+0afd Tateno Dennou, Inc. -+0afe Cummins Engine Co. -+0aff Jump Zone Network Products, Inc. -+0b05 ASUSTek Computer, Inc. -+0b0e GN Netcom -+0b0f AVID Technology -+0b10 Pcally -+0b11 I Tech Solutions Co., Ltd -+0b1e Electronic Warfare Assoc., Inc. (EWA) -+0b1f Insyde Software Corp. -+0b20 TransDimension, Inc. -+0b21 Yokogawa Electric Corp. -+0b22 Japan System Development Co., Ltd -+0b23 Pan-Asia Electronics Co., Ltd -+0b24 Link Evolution Corp. -+0b27 Ritek Corp. -+0b28 Kenwood Corp. -+0b2c Village Center, Inc. - 0b30 PNY Technologies, Inc. - 0006 SM Media-Shuttle Card Reader --0b3b Tekram Technology, Co., Ltd. -- 1612 AIR.Mate 2@net --0c70 MCT Elektronikladen -- 0000 USB08 Development board --0c76 JMTek, LLC. -- 0003 USBdisk -- 0005 USBdisk --0bda RealTek Semiconductor Corp. -+0b33 Contour Design, Inc. -+0b37 Hitachi ULSI Systems Co., Ltd -+0b39 Omnidirectional Control Technology, Inc. -+0b3a IPaxess -+0b3b Tekram Technology Co., Ltd -+ 1601 Allnet 0193 802.11b Adapter -+ 1602 ZyXEL ZyAIR B200 802.11b Adapter -+ 1612 AIR.Mate 2@net 802.11b Adapter -+0b3c Olivetti Techcenter -+0b3e Kikusui Electronics Corp. -+0b41 Hal Corp. -+0b43 Play.com, Inc. -+ 0003 PS2 Controller Converter -+0b47 Sportbug.com, Inc. -+0b48 TechnoTrend AG -+0b49 ASCII Corp. -+0b4b Pine Corp. Ltd. -+ 0100 D'music MP3 Player -+0b4e Musical Electronics, Ltd -+0b50 Dumpries Co., Ltd -+0b52 Colorado MicroDisplay, Inc. -+0b54 Sinbon Electronics Co., Ltd -+0b56 TYI Systems, Ltd -+0b57 Beijing HanwangTechnology Co., Ltd -+0b59 Lake Communications, Ltd -+0b5a Corel Corp. -+0b5f Green Electronics Co., Ltd -+0b60 Nsine, Ltd -+0b61 NEC Viewtechnology, Ltd -+0b62 Orange Micro, Inc. -+ 0059 iBOT2 WebCam -+0b63 ADLink Technology, Inc. -+0b64 Wonderful Wire Cable Co., Ltd -+0b65 Expert Magnetics Corp. -+0b69 CacheVision -+0b6a Maxim Integrated Products -+0b6f Nagano Japan Radio Co., Ltd -+0b70 PortalPlayer, Inc. -+0b71 SHIN-EI Sangyo Co., Ltd -+0b72 Embedded Wireless Technology Co., Ltd -+0b73 Computone Corp. -+0b75 Roland DG Corp. -+0b79 Sunrise Telecom, Inc. -+0b7a Zeevo, Inc. -+0b7b Taiko Denki Co., Ltd -+0b7c ITRAN Communications, Ltd -+0b7d Astrodesign, Inc. -+0b84 Rextron Technology, Inc. -+0b85 Elkat Electronics, Sdn., Bhd. -+0b86 Exputer Systems, Inc. -+0b87 Plus-One I & T, Inc. -+0b88 Sigma Koki Co., Ltd, Technology Center -+0b89 Advanced Digital Broadcast, Ltd -+0b95 ASIX Electronics Corp. -+0b96 Sewon Telecom -+0b97 O2 Micro, Inc. -+0b98 Playmates Toys, Inc. -+0b99 Audio International, Inc. -+0b9d Softprotec Co. -+0b9f Chippo Technologies -+0baf U.S. Robotics -+ 00eb USR1120 802.11b Adapter -+ 6112 FaxModem Model 5633 -+0bb0 Concord Camera Corp. -+0bb1 Infinilink Corp. -+0bb2 Ambit Microsystems Corp. -+ 6098 USB Cable Modem -+0bb3 Ofuji Technology -+0bb4 High Tech Computer Corp. -+ 00ce mmO2 XDA GSM/GPRS Pocket PC -+ 0a02 Himalaya GSM/GPRS Pocket PC -+0bb5 Murata Manufacturing Co., Ltd -+0bb6 Network Alchemy -+0bb7 Joytech Computer Co., Ltd -+0bb8 Hitachi Semiconductor and Devices Sales Co., Ltd -+0bb9 Eiger M&C Co., Ltd -+0bba ZAccess Systems -+0bbb General Meters Corp. -+0bbc Assistive Technology, Inc. -+0bbd System Connection, Inc. -+0bc0 Knilink Technology, Inc. -+0bc1 Fuw Yng Electronics Co., Ltd -+0bc2 Seagate RSS LLC -+0bc3 IPWireless, Inc. -+0bc4 Microcube Corp. -+0bc5 JCN Co., Ltd -+0bc6 ExWAY, Inc. -+0bc7 X10 Wireless Technology, Inc. -+ 0004 X10 Receiver -+0bc8 Telmax Communications -+0bc9 ECI Telecom, Ltd -+0bca Startek Engineering, Inc. -+0bcb Perfect Technic Enterprise Co., Ltd -+0bda Realtek Semiconductor Corp. - 8150 RTL8150 Fast Ethernet Adapter -- 8151 RTL8151 HomePNA Adapter -+ 8151 RTL8151 Adapteon Business Mobile Networks BV -+0bdb Ericsson Business Mobile Networks BV -+0bdc Y Media Corp. -+0bdd Orange PCS -+0be2 Kanda Tsushin Kogyo Co., Ltd -+0be3 TOYO Corp. -+0be4 Elka International, Ltd -+0be5 DOME imaging systems, Inc. -+0be6 Dong Guan Humen Wonderful Wire Cable Factory -+0bee LTK Industries, Ltd -+0bef Way2Call Communications -+0bf0 Pace Micro Technology PLC -+0bf1 Intracom S.A. -+0bf2 Konexx - 0bf6 Addonics Technologies, Inc. - a002 IDE Bridge -+0bf7 Sunny Giken, Inc. -+0bf8 Fujitsu Siemens Computers -+0c04 MOTO Development Group, Inc. -+0c05 Appian Graphics -+0c06 Hasbro Games, Inc. -+0c07 Infinite Data Storage, Ltd - 0c08 Agate - 0378 Q 16MB Storage Device --0c0b Acomdata -- b004 MMC/SD Reader and Writer -+0c09 Comjet Information System -+0c0a Highpoint Technologies, Inc. -+0c0b Dura Micro, Inc. (Acomdata) -+ 27cb 6-in-1 Flash Reader and Writer - a109 CF/SM Reader and Writer - a10c SD/MS Reader and Writer -+ b004 MMC/SD Reader and Writer -+0c12 Zeroplus -+ 0005 PSX Vibration Feedback Converter -+0c15 Iris Graphics -+0c16 Gyration, Inc. -+0c17 Cyberboard A/S -+0c18 SynerTek Korea, Inc. -+0c19 cyberPIXIE, Inc. -+0c1a Silicon Motion, Inc. -+0c1b MIPS Technologies -+0c1c Hang Zhou Silan Electronics Co., Ltd -+0c22 Tally Printer Corp. -+0c23 Lernout + Hauspie -+0c24 Taiyo Yuden -+0c25 Sampo Corp. -+0c35 Eagletron, Inc. -+0c36 E Ink Corp. -+0c37 e.Digital -+0c38 Der An Electric Wire & Cable Co., Ltd -+0c39 IFR -+0c3a Furui Precise Component (Kunshan) Co., Ltd -+0c3b Komatsu, Ltd -+0c3c Radius Co., Ltd -+0c3d Innocom, Inc. -+0c3e Nextcell, Inc. -+0c44 Motorola iDEN -+0c45 Microdia -+ 1060 iFlash SM-Direct Card Reader -+ 6001 Genius VideoCAM NB -+ 6029 Triplex i-mini PC Camera -+ 602a Meade ETX-105EC Camera -+0c46 WaveRider Communications, Inc. -+0c52 Sealevel Systems, Inc. -+0c53 ViewPLUS, Inc. -+0c54 Glory, Ltd -+0c55 Spectrum Digital, Inc. -+ 0510 Spectrum Digital XDS510 JTAG Debugger -+0c56 Billion Bright, Ltd -+0c57 Imaginative Design Operation Co., Ltd -+0c58 Vidar Systems Corp. -+0c59 Dong Guan Shinko Wire Co., Ltd -+0c5a TRS International Mfg., Inc. - 0c5e Xytronix Research & Design -+0c62 Chant Sincere Co., Ltd -+0c63 Toko, Inc. -+0c64 Signality System Engineering Co., Ltd -+0c65 Eminence Enterprise Co., Ltd -+0c66 Rexon Electronics Corp. -+0c67 Concept Telecom, Ltd -+0c70 MCT Elektronikladen -+ 0000 USB08 Development board -+0c74 Optronic Laboratories Inc. -+ 0002 OL 700-30 Goniometer -+0c76 JMTek, LLC. -+ 0003 USBdisk -+ 0005 USBdisk -+ 0006 Transcend JetFlash -+0c77 Sipix Group, Ltd -+0c78 Detto Corp. -+0c79 NuConnex Technologies Pte., Ltd -+0c7a Wing-Span Enterprise Co., Ltd - 0c86 NDA Technologies, Inc. -+0c88 Kyocera Wireless Corp. -+0c89 Honda Tsushin Kogyo Co., Ltd -+0c8a Pathway Connectivity, Inc. -+0c8b Wavefly Corp. -+0c8c Coactive Networks -+0c8d Tempo -+0c8e Cesscom Co., Ltd -+0c8f Applied Microsystems -+0c99 Innochips Co., Ltd -+0c9a Hanwool Robotics Corp. -+0c9b Jobin Yvon, Inc. -+0ca2 Zyfer -+0ca3 Sega Corp. -+0ca4 ST&T Instrument Corp. -+0ca5 BAE Systems Canada, Inc. -+0ca6 Castles Technology Co., Ltd -+0ca7 Information Systems Laboratories -+0cad Motorola CGISS -+0cae Ascom Business Systems, Ltd -+0caf Buslink -+ 3a00 Hard Drive -+0cb0 Flying Pig Systems -+0cb1 Innovonics, Inc. -+0cb6 Celestix Networks, Pte., Ltd -+0cb7 Singatron Enterprise Co., Ltd -+0cb8 Opticis Co., Ltd -+0cba Trust Electronic (Shanghai) Co., Ltd -+0cbb Shanghai Darong Electronics Co., Ltd -+0cbc Palmax Technology Co., Ltd -+0cbd Pentel Co., Ltd (Electronics Equipment Div.) -+0cbe Keryx Technologies, Inc. -+0cbf Union Genius Computer Co., Ltd -+0cc0 Kuon Yi Industrial Corp. -+0cc1 Given Imaging, Ltd -+0cc2 Timex Corp. -+0cc3 Rimage Corp. -+0cc4 emsys GmbH -+0cc5 Sendo -+0cc6 Intermagic Corp. -+0cc7 Kontron Medical AG -+0cc8 Technotools Corp. -+0cc9 BroadMAX Technologies, Inc. -+0cca Amphenol -+0ccb SKNet Co., Ltd -+0ccc Domex Technology Corp. -+0ccd TerraTec Electronic GmbH -+0cd4 Bang Olufsen -+ 0101 BeolinkPC2 -+0cd7 NewChip S.r.l. -+0cd8 JS Digitech, Inc. -+0cd9 Hitachi Shin Din Cable, Ltd -+0cde Z-Com -+ 0002 XI-725/726 Prism2.5 802.11b Adapter -+ 0005 XI-735 Prism3 802.11b Adapter -+0cf1 e-Conn Electronic Co., Ltd -+0cf2 ENE Technology, Inc. -+0cf3 Atheros Communications, Inc. -+0cf4 Fomtex Corp. -+0cf5 Cellink Co., Ltd -+0cf6 Compucable Corp. -+0cf7 ishoni Networks -+0cf8 Clarisys, Inc. -+0cf9 Central System Research Co., Ltd -+0cfa Inviso, Inc. -+0cfc Minolta-QMS, Inc. - 0d06 telos EDV Systementwicklung GmbH --0d7d Apacer -- 0100 HandyDrive 64MB --0d8e Repotec -- 7100 Wireless 802.11b Ethernet --0d96 Traveler -- 3300 SX330z Digital Camera --0dbf Pocketec --0dcd NetworkFab Corporation -+0d0b Contemporary Controls -+0d0c Astron Electronics Co., Ltd -+0d0d MKNet Corp. -+0d0e Hybrid Networks, Inc. -+0d0f Feng Shin Cable Co., Ltd -+0d10 Elastic Networks -+0d11 Maspro Denkoh Corp. -+0d12 Hansol Electronics, Inc. -+0d13 BMF Corp. -+0d14 Array Comm, Inc. -+0d15 OnStream b.v. -+0d16 Hi-Touch Imaging Technologies Co., Ltd -+0d17 NALTEC, Inc. -+0d18 coaXmedia -+0d19 Hank Connection Industrial Co., Ltd -+0d32 Leo Hui Electric Wire & Cable Co., Ltd -+0d33 AirSpeak, Inc. -+0d34 Rearden Steel Technologies -+0d35 Dah Kun Co., Ltd -+0d3c Sri Cable Technology, Ltd -+0d3d Tangtop Technology Co., Ltd -+0d3e Fitcom, inc. -+0d3f MTS Systems Corp. -+0d40 Ascor, Inc. -+0d41 Ta Yun Terminals Industrial Co., Ltd -+0d42 Full Der Co., Ltd -+0d49 Maxtor -+0d4a NF Corp. -+0d4b Grape Systems, Inc. -+0d4c Tedas AG -+0d4d Coherent, Inc. -+0d4e Agere Systems Netherland BV -+0d4f EADS Airbus France -+0d50 Cleware GmbH -+0d51 Volex (Asia) Pte., Ltd -+0d53 HMI Co., Ltd -+0d54 Holon Corp. -+0d55 ASKA Technologies, Inc. -+0d56 AVLAB Technology, Inc. -+0d57 Solomon Microtech, Ltd -+0d5c Belkin -+ a002 F5D6050 802.11b Adapter -+0d5e Myacom, Ltd -+0d5f CSI, Inc. -+0d60 IVL Technologies, Ltd -+0d61 Meilu Electronics (Shenzhen) Co., Ltd -+0d62 Darfon Electronics Corp. -+ a100 Benq Mouse -+0d63 Fritz Gegauf AG -+0d64 DXG Technology Corp. -+ 0107 Horus MT-409 Camera -+0d65 KMJP Co., Ltd -+0d66 TMT -+0d67 Advanet, Inc. -+0d68 Super Link Electronics Co., Ltd -+0d69 NSI -+0d6a Megapower International Corp. -+0d6b And-Or Logic -+0d70 Try Computer Co., Ltd -+0d71 Hirakawa Hewtech Corp. -+0d72 Winmate Communication, Inc. -+0d73 Hit's Communications, Inc. -+0d76 MFP Korea, Inc. -+0d77 Power Sentry/Newpoint -+0d78 Japan Distributor Corp. -+0d7a MARX Datentechnik GmbH -+0d7b Wellco Technology Co., Ltd -+0d7c Taiwan Line Tek Electronic Co., Ltd -+0d7d Phison Electronics Corp. -+ 0100 PS1001/1011/1006/1026 Flash Disk -+ 0110 Gigabyte FlexDrive -+ 0240 I/O Magic Drive -+ 110E NEC uPD720121/130 USB-ATA/ATAPI Bridge -+ 1240 Apacer 6-in-1 Card Reader 2.0 -+ 1300 Flash Disk -+ 1320 PS2031 Flash Disk -+ 1420 PS2044 Pen Drive -+0d7e American Computer & Digital Components -+0d7f Essential Reality LLC -+0d80 H.R. Silvine Electronics, Inc. -+0d81 TechnoVision -+0d83 Think Outside, Inc. -+0d89 Oz Software -+0d8a King Jim Co., Ltd -+0d8b Ascom Telecommunications, Ltd -+0d8c C-Media Electronics, Inc. -+0d8d Promotion & Display Technology, Ltd -+0d8e Global Sun Technology, Inc. -+ 7100 802.11b Adapter -+ 7a01 PRISM25 802.11b Adapter -+0d8f Pitney Bowes -+0d90 Sure-Fire Electrical Corp. -+0d96 Skanhex Technology, Inc. -+ 3300 SX330z Camera -+ 4100 SX410z Camera -+ 4102 MD 9700 Camera -+ 5200 SX-520z Camera -+0d97 Santa Barbara Instrument Group -+ 0001 SBIG Astronomy Camera (without firmware) -+ 0101 SBIG Astronomy Camera (with firmware) -+0d98 Mars Semiconductor Corp. -+0d99 Trazer Technologies, Inc. -+0d9a RTX Telecom AS -+0d9b Tat Shing Electrical Co. -+0d9c Chee Chen Hi-Technology Co., Ltd -+0d9d Sanwa Supply, Inc. -+0d9e Avaya -+0d9f Powercom Co., Ltd -+0da0 Danger Research -+0da1 Suzhou Peter's Precise Industrial Co., Ltd -+0da2 Land Instruments International, Ltd -+0da3 Nippon Electro-Sensory Devices Corp. -+0da4 Polar Electro OY -+0da7 IOGear, Inc. -+0dab Cubig Group -+ 0100 DVR/CVR-M140 MP3 Player -+0dad Westover Scientific -+0db0 Micro Star International -+ 6982 Medion Flash XL V2.7A Card Reader -+0db1 Wen Te Electronics Co., Ltd -+0db2 Shian Hwi Plug Parts, Plastic Factory -+0db3 Tekram Technology Co., Ltd -+0db4 Chung Fu Chen Yeh Enterprise Corp. -+0dbe Jiuh Shiuh Precision Industry Co., Ltd -+0dbf Quik Tech Solutions -+0dc0 Great Notions -+0dc1 Tamagawa Seiki Co., Ltd -+0dc3 Athena Smartcard Solutions, Inc. -+0dc4 Macpower Peripherals, Ltd -+0dc5 SDK Co., Ltd -+0dc6 Precision Squared Technology Corp. -+0dc7 First Cable Line, Inc. -+0dcd NetworkFab Corp. - 0001 Remote Interface Adapter - 0002 High Bandwidth Codec -+0dd1 Contek Electronics Co., Ltd -+0dd2 Power Quotient International Co., Ltd -+0dd3 MediaQ -+0dd4 Custom Engineering SPA -+0dd5 California Micro Devices -+0dd7 Kocom Co., Ltd -+0dd9 HighSpeed Surfing -+0dda Integrated Circuit Solution, Inc. -+0ddb Tamarack, Inc. -+0ddd Datelink Technology Co., Ltd -+0dde Ubicom, Inc. -+0de0 BD Consumer Healthcare -+0ded Novasonics -+0dee Lifetime Memory Products -+0def Full Rise Electronic Co., Ltd -+0df6 Sitecom Europe B.V. -+0df7 Mobile Action Technology, Inc. -+ 0620 MA-620 USB Infrared Adapter -+0dfa Toyo Communication Equipment Co., Ltd -+0dfc GeneralTouch Technology Co., Ltd -+ 0001 Touchscreen -+0e03 Nippon Systemware Co., Ltd -+0e08 Winbest Technology Co., Ltd - 0e0c Gesytec - 0101 LonUSB LonTalk Network Adapter -+0e16 JMTek, LLC -+0e17 Walex Electronic, Ltd - 0e1b Crewave -+0e21 Cowon Systems, Inc. -+ 0300 iAudio CW200 -+0e23 Liou Yuane Enterprise Co., Ltd -+0e25 VinChip Systems, Inc. -+0e26 J-Phone East Co., Ltd -+0e30 HeartMath LLC -+0e34 Micro Computer Control Corp. -+0e35 3Pea Technologies, Inc. -+0e36 TiePie engineering -+0e38 Stratitec, Inc. -+0e39 Smart Modular Technologies, Inc. -+0e3a Neostar Technology Co., Ltd - 1100 CW-1100 Wireless Network Adapter --0e48 Julia Corp., Ltd. -+0e3b Mansella, Ltd -+0e48 Julia Corp., Ltd - 0100 CardPro SmartCard Reader -+0e4a Shenzhen Bao Hing Electric Wire & Cable Mfr. Co. -+0e4c Radica Games, Ltd -+0e55 Speed Dragon Multimedia, Ltd -+0e5a Active Co., Ltd -+0e5b Union Power Information Industrial Co., Ltd -+0e5c Bitland Information Technology Co., Ltd -+0e5d Neltron Industrial Co., Ltd - 0e66 Hawking - 400c UF100 Ethernet [pegasus2] --0e75 TVS Electronics, Ltd. --0ef7 Tulip Computers International -+0e6a Megawin Technology Co., Ltd -+0e70 Tokyo Electronic Industry Co., Ltd -+0e72 Hsi-Chin Electronics Co., Ltd -+0e75 TVS Electronics, Ltd -+0e7b On-Tech Industry Co., Ltd -+0e7e Gmate Inc. -+ 0001 Yopy 3000 PDA -+0e82 Ching Tai Electric Wire & Cable Co., Ltd -+0e8c Well Force Electronic Co., Ltd -+0e90 WiebeTech, LLC -+0e91 VTech Engineering Canada, Ltd -+0e92 C's Glory Enterprise Co., Ltd -+0e93 eM Technics Co., Ltd -+0e95 Future Technology Co., Ltd -+0e96 Aplux Communications, Ltd -+0e97 Fingerworks, Inc. -+0e98 Advanced Analogic Technologies, Inc. -+0e99 Parallel Dice Co., Ltd -+0e9a TA HSING Industries, Ltd -+0e9b ADTEC Corp. -+0e9f Tamura Corp. -+0ea0 Ours Technology, Inc. -+ 2168 Transcend JetFlash 2.0 -+ 6803 OTI-6803 Flash Disk -+ 6808 OTI-6808 Flash Disk -+ 6828 OTI-6828 Flash Disk -+0ea6 Nihon Computer Co., Ltd -+0ea7 MSL Enterprises Corp. -+0ea8 CenDyne, Inc. -+0ead Humax Co., Ltd -+0eb1 WIS Technologies, Inc. -+0eb2 Y-S Electronic Co., Ltd -+0eb3 Saint Technology Corp. -+0eb7 Endor AG -+0ebe VWeb Corp. -+0ebf Omega Technology of Taiwan, Inc. -+0ec0 LHI Technology (China) Co., Ltd -+0ec1 Abit Computer Corp. -+0ec2 Sweetray Industrial, Ltd -+0ec3 Axell Co., Ltd -+0ec4 Ballracing Developments, Ltd -+0ec5 GT Information System Co., Ltd -+0ec6 InnoVISION Multimedia, Ltd -+0ec7 Theta Link Corp. -+ 1008 So., Show 301 Digital Camera -+0ecd Lite-On IT Corp. -+0ece TaiSol Electronics Co., Ltd -+0ecf Phogenix Imaging, LLC -+0ed1 WinMaxGroup -+ 6660 USB Flash Disk 64M-C -+0ed2 Kyoto Micro Computer Co., Ltd -+0ed3 Wing-Tech Enterprise Co., Ltd -+0eda Noriake Itron Corp. -+0edf e-MDT Co., Ltd -+0ee0 Shima Seiki Mfg., Ltd -+0ee1 Sarotech Co., Ltd -+0ee2 AMI Semiconductor, Inc. -+0ee3 ComTrue Technology Corp. -+ 1000 Image Tank 1.5 -+0ee4 Sunrich Technology, Ltd -+0eee Digital Stream Technology, Inc. -+0eef D-WAV Scientific Co., Ltd -+ 0001 eGalax TouchScreen -+0ef0 Hitachi Cable, Ltd -+0ef1 Aichi Micro Intelligent Corp. -+0ef2 I/O Magic Corp. -+0ef3 Lynn Products, Inc. -+0ef4 DSI Datotech -+0ef5 PointChips -+ 2202 Flash Disk -+0ef6 Yield Microelectronics Corp. -+0ef7 SM Tech Co., Ltd (Tulip) -+0efe Wem Technology, Inc. -+0efd Oasis Semiconductor -+0f06 Visual Frontier Enterprise Co., Ltd -+0f08 CSL Wire & Plug (Shen Zhen) Co. -+0f0c CAS Corp. -+0f0d Hori Co., Ltd -+0f0e Energy Full Corp. -+0f12 Mars Engineering Corp. -+0f13 Acetek Technology Co., Ltd -+0f19 Oracom Co., Ltd -+0f1b Onset Computer Corp. -+0f1c Funai Electric Co., Ltd -+0f1d Iwill Corp. -+0f21 IOI Technology Corp. -+0f22 Senior Industries, Inc. -+0f23 Leader Tech Manufacturer Co., Ltd -+0f24 Flex-P Industries, Snd., Bhd. -+0f2d ViPower, Inc. -+0f2e Geniality Maple Technology Co., Ltd -+0f2f Priva Design Services -+0f30 Jess Technology Co., Ltd -+0f31 Chrysalis Development -+0f32 YFC-BonEagle Electric Co., Ltd -+0f37 Kokuyo Co., Ltd -+0f38 Nien-Yi Industrial Corp. -+0f41 RDC Semiconductor Co., Ltd -+0f42 Nital Consulting Services, Inc. -+0f4b St. John Technology Co., Ltd -+0f4c WorldWide Cable Opto Corp. -+0f4d Microtune, Inc. -+0f4e Freedom Scientific -+0f52 Wing Key Electrical Co., Ltd -+0f53 Dongguan White Horse Cable Factory, Ltd -+0f54 Kawai Musical Instruments Mfg. Co., Ltd -+0f55 AmbiCom, Inc. -+0f5c Prairiecomm, Inc. -+0f5d NewAge International, LLC -+0f5f Key Technology Corp. -+0f60 NTK, Ltd -+0f61 Varian, Inc. -+0f62 Acrox Technologies Co., Ltd -+0f68 Kobe Steel, Ltd -+0f69 Dionex Corp. -+0f6a Vibren Technologies, Inc. -+0f73 DFI -+0f7c DQ Technology, Inc. -+0f7d NetBotz, Inc. -+0f7e Fluke Corp. -+0f88 VTech Holdings, Ltd -+0f8b Yazaki Corp. -+0f8c Young Generation International Corp. -+0f8d Uniwill Computer Corp. -+0f8e Kingnet Technology Co., Ltd -+0f8f Soma Networks -+0f97 CviLux Corp. -+0f98 CyberBank Corp. -+0f9e Lucent Technologies -+0fa3 Starconn Electronic Co., Ltd -+0fa4 ATL Technology -+0fa5 Sotec Co., Ltd -+0fa7 Epox Computer Co., Ltd -+0fa8 Logic Controls, Inc. -+0faf Winpoint Electronic Corp. -+0fb0 Haurtian Wire & Cable Co., Ltd -+0fb1 Inclose Design, Inc. -+0fb2 Juan-Chern Industrial Co., Ltd -+0fb8 Wistron Corp. -+0fb9 AACom Corp. -+0fba San Shing Electronics Co., Ltd -+0fbb Bitwise Systems, Inc. -+0fc1 Mitac Internatinal Corp. -+0fc2 Plug and Jack Industrial, Inc. -+0fc5 Delcom Engineering -+ 1222 I/O Development Board -+0fc6 Dataplus Supplies, Inc. -+0fca Research In Motion, Ltd. -+ 0001 Blackberry Handheld -+0fce Sony Ericsson Mobile Communications AB -+0fcf Dynastream Innovations, Inc. -+0fd0 Tulip Computers B.V. -+0fd4 Tenovis GmbH & Co., KG -+0fd5 Direct Access Technology, Inc. -+0fdc Micro Plus -+0fe4 IN-Tech Electronics, Ltd -+0fe5 Greenconn (U.S.A.), Inc. -+0fea United Computer Accessories -+0feb CRS Electronic Co., Ltd -+0fec UMC Electronics Co., Ltd -+0fed Access Co., Ltd -+0fee Xsido Corp. -+0fef MJ Research, Inc. -+0ff6 Core Valley Co., Ltd -+0ff7 CHI SHING Computer Accessories Co., Ltd -+0fff Aopen, Inc. -+1000 Speed Tech Corp. -+1001 Ritronics Components (S) Pte., Ltd -+1003 Sigma Corp. -+1004 LG Electronics, Inc. -+ 6000 VX4400/VX6000 Cellphone -+ 6800 CDMA Modem -+1005 Apacer Technology, Inc. -+ b113 Handy Steno 2.0 (256MB) -+1006 iRiver, Ltd. -+ 3002 iHP-140 mp3 player -+1009 Emuzed, Inc. -+100a AV Chaseway, Ltd -+100b Chou Chin Industrial Co., Ltd -+100d Netopia, Inc. -+1010 Fukuda Denshi Co., Ltd -+1011 Mobile Media Tech. -+1012 SDKM Fibres, Wires & Cables Berhad -+1013 TST-Touchless Sensor Technology AG -+1014 Densitron Technologies PLC -+1015 Softronics Pty., Ltd -+1016 Xiamen Hung's Enterprise Co., Ltd -+1017 Speedy Industrial Supplies, Pte., Ltd -+1022 Shinko Shoji Co., Ltd -+1025 Hyper-Paltek -+1026 Newly Corp. -+1027 Time Domain -+1028 Inovys Corp. -+1029 Atlantic Coast Telesys -+102a Ramos Technology Co., Ltd -+102b Infotronic America, Inc. -+102c Etoms Electronics Corp. -+102d Winic Corp. -+1031 Comax Technology, Inc. -+1032 C-One Technology Corp. -+1033 Nucam Corp. -+1043 iCreate Technologies Corp. -+1044 Chu Yuen Enterprise Co., Ltd - 1046 Winbond Electronics Corp. [hex] - 9967 W9967CF/W9968CF WebCam IC --1063 Motorola Electronics Taiwan Ltd. [hex] -+104c AMCO TEC International, Inc. -+1053 Immanuel Electronics Co., Ltd -+1054 BMS International Beheer N.V. -+1055 Complex Micro Interconnection Co., Ltd -+1056 Hsin Chen Ent Co., Ltd -+1057 ON Semiconductor -+1058 Western Digital Technologies, Inc. -+1059 Giesecke & Devrient GmbH -+105c Hong Ji Electric Wire & Cable (Dongguan) Co., Ltd -+105d Delkin Devices, Inc. -+105e Valence Semiconductor Design, Ltd -+105f Chin Shong Enterprise Co., Ltd -+1060 Easthome Industrial Co., Ltd -+1063 Motorola Electronics Taiwan, Ltd [hex] - 1555 MC141555 Hub - 1065 CCYU Technology - 2136 EasyDisk ED1064 -+106a Loyal Legend, Ltd -+106c Curitel Communications, Inc. -+ 2101 AudioVox 8900 Cell Phone -+106d San Chieh Manufacturing, Ltd -+106e ConectL -+106f Money Controls -+1076 GCT Semiconductor, Inc. -+107d Arlec Australia, Ltd -+107e Midoriya Electric Co., Ltd -+107f KidzMouse, Inc. -+1082 Shin-Etsukaken Co., Ltd -+1083 Canon Electronics, Inc. -+1084 Pantech Co., Ltd -+108a Chloride Power Protection -+108b Grand-tek Technology Co., Ltd -+108c Robert Bosch GmbH -+1099 Surface Optics Corp. -+109a DATASOFT Systems GmbH -+109f eSOL Co., Ltd -+10a0 Hirotech, Inc. -+10a3 Mitsubishi Materials Corp. -+10a9 SK Teletech Co., Ltd -+10aa Cables To Go -+10ab USI Co., Ltd - 10ac Honeywell, Inc. --10b5 PLX -+10ae Princeton Technology Corp. -+10b5 Comodo (PLX?) - 9060 Test Board -+10bb TM Technology, Inc. -+10bc Dinging Technology Co., Ltd -+10bd TMT Technology, Inc. -+10c4 Cygnal Integrated Products, Inc. -+10c5 Sanei Electric, Inc. -+10c6 Intec, Inc. -+10cb Eratech -+10cc GBM Connector Co., Ltd -+10cd Kycon, Inc. -+10d1 Hottinger Baldwin Measurement -+ 0101 USB-Module for Spider8, CP32 -+ 0202 CP22 - Communication Processor -+ 0301 CP42 - Communication Processor -+10d4 Man Boon Manufactory, Ltd -+10d5 Uni Class Technology Co., Ltd -+10d6 Actions Semiconductor Co., Ltd -+ 1000 MP3 Player -+10de Authenex, Inc. -+10df In-Win Development, Inc. -+10e0 Post-Op Video, Inc. -+10e1 CablePlus, Ltd -+10e2 Nada Electronics, Ltd -+10ec Vast Technologies, Inc. -+10fb Pictos Technologies, Inc. -+10fd Anubis Electronics, Ltd -+ 804d Typhoon Webshot II Webcam [zc0301] -+1a0a ... -+ badd USB OTG Compliance test device -+1100 VirTouch, Ltd -+ 0001 VTPlayer VTP-1 Braille Mouse -+1101 EasyPass Industrial Co., Ltd -+ 0001 FSK Electronics Super GSM Reader -+1108 Brightcom Technologies, Ltd -+1110 Analog Devices Canada, Ltd (Allied Telesyn) -+ 900f AT-AR215 DSL Modem -+1112 YM ELECTRIC CO., Ltd -+1113 Medion AG -+111e VSO Electric Co., Ltd -+112e Master Hill Electric Wire and Cable Co., Ltd -+112f Cellon International, Inc. -+1130 Tenx Technology, Inc. -+1131 Integrated System Solution Corp. - 1132 Toshiba Corp., Digital Media Equipment [hex] - 4331 PDR-M4/M5/M70 Digital Camera -- 4432 PDR-M60 Digital Camera --1183 Compaq Computer Corp. [hex] -- 4008 56k FaxModem -+ 4332 PDR-M60 Digital Camera -+113c Arin Tech Co., Ltd -+113d Mapower Electronics Co., Ltd -+1141 V One Multimedia, Pte., Ltd -+1142 CyberScan Technologies, Inc. -+1147 Ever Great Electric Wire and Cable Co., Ltd -+114c Tinius Olsen Testing Machine Co., Inc. -+114d Alpha Imaging Technology Corp. -+1162 Secugen Corp. -+1163 DeLorme Publishing, Inc. -+1164 YUAN High-Tech Development Co., Ltd -+1165 Telson Electronics Co., Ltd -+1166 Bantam Interactive Technologies -+1167 Salient Systems Corp. -+1168 BizConn International Corp. -+116e Gigastorage Corp. -+116f Silicon 10 Technology Corp. -+1175 Shengyih Steel Mold Co., Ltd -+117d Santa Electronic, Inc. -+117e JNC, Inc. -+1182 Venture Corp., Ltd -+1183 Compaq Computer Corp. [hex] (Digital Dream ??) - 19c7 ISDN TA -+ 4008 56k FaxModem - 504a PJB-100 Personal Jukebox -+1184 Kyocera Elco Corp. -+118f You Yang Technology Co., Ltd - 1190 Tripace --120e Hudson Soft Co., Ltd. -+1191 Loyalty Founder Enterprise Co., Ltd -+1197 Technoimagia Co., Ltd -+1198 StarShine Technology Corp. -+1199 Sierra Wireless, Inc. -+119a ZHAN QI Technology Co., Ltd -+11a3 Technovas Co., Ltd -+11aa GlobalMedia Group, LLC -+11ab Exito Electronics Co., Ltd -+11db Topfield Co., Ltd. -+ 1000 PVR -+ 1100 PVR -+1209 InterBiometrics -+ 1001 USB Hub -+ 1002 USB Relais -+ 1003 IBSecureCam-P -+ 1004 IBSecureCam-O -+ 1005 IBSecureCam-N -+120e Hudson Soft Co., Ltd -+121e Jungsoft Co., Ltd -+1241 Belkin (?) -+ 1111 Mouse -+1267 Logic3 / SpectraVideo plc -+ a001 JP260 PC Game Pad -+126e Strobe Data, Inc. -+126f TwinMOS -+ 1325 Mobile Disk -+ 2168 Mobile Disk III -+1275 Xaxero Marine Software Engineering, Ltd. -+ 0002 WeatherFax 2000 Demodulator -+ 0080 SkyEye Weather Satellite Receiver - 1292 Innomedia - 0258 Creative Labs VoIP Blaster - 1293 Belkin Components [hex] - 0002 F5U002 Parallel Port [uss720] - 2101 104-key keyboard -+12fd AIN Comm. Technology Co., Ltd -+ 1001 AWU2000b 802.11b Stick -+1312 ICS Electronics - 1342 Mobility - 0200 EasiDock 200 Hub - 0201 EasiDock 200 Keyboard and Mouse Port -@@ -1872,18 +3377,31 @@ - 0203 EasiDock 200 Printer Port - 13d2 Shark Multimedia - 0400 Pocket Ethernet [klsi] -+147a Formosa Industrial Computing, Inc. - 1484 Elsa AG [hex] - 1746 Ecomo 19H99 Monitor - 7616 Elsa Hub -+14c2 Gemlight Computer, Ltd -+1520 Bitwire Corp. -+1554 Prolink Microsystems Corp. -+1568 Sunf Pu Technology Co., Ltd -+15c6 Laboratoires MXM - 15e8 SohoWare - 9100 NUB100 Ethernet [pegasus] -+15e9 Pacific Digital Corp. - 1604 Tascam - 8000 US-428 Audio/Midi Controller (without fw) - 8001 US-428 Audio/Midi Controller -+ 8004 US-224 Audio/Midi Controller (without fw) -+ 8005 US-224 Audio/Midi Controller -+ 8006 US-122 Audio/Midi Interface (without fw) -+ 8007 US-122 Audio/Midi Interface - 1606 Umax [hex] - 0010 Astra 1220U - 0030 Astra 2000U - 0060 Astra 3400U -+ 0130 Astra 2100U -+ 0160 Astra 5400U - 0230 Astra 2200/2200SU - 2020 AstraCam 1000 - 1608 Inside Out Networks [hex] -@@ -1903,55 +3421,113 @@ - 8093 PortGear Serial Port - 1668 Actiontec Electronics, Inc. [hex] - 0333 Modem -- 0421 802.11b Wireless Adapter -+ 0408 Prism2.5 802.11b Adapter -+ 0421 Prism2.5 802.11b Adapter - 1690 Askey Computer Corp. [hex] - 0101 Creative Modem Blaster DE5670 - 0103 Askey 1456 VQE-R3 Modem [conexant] - 0109 Askey MagicXpress V.90 Pocket Modem [conexant] --2001 D-Link Corp [hex] -+1696 Hitachi Video and Information System, Inc. -+1697 VTec Test, Inc. -+1733 Cellink Technology Co., Ltd -+ 0101 RF Wireless Optical Mouse OP-701 -+1894 Topseed -+ 5632 Atek Tote Remote -+ 5641 TSAM-004 Presentation Remote -+1ebb NuCORE Technology, Inc. -+2001 D-Link Corp. [hex] -+ 3200 DWL-120 802.11b (Atmel RFMD503A) [usbvnetr] -+ 3700 DWL-122 802.11b - 4000 DSB-650C Ethernet [klsi] - 4001 DSB-650TX Ethernet [pegasus] - 4002 DSB-650TX Ethernet [pegasus] - 4003 DSB-650TX-PNA Ethernet [pegasus] - abc1 DSB-650 Ethernet [pegasus] -+2162 Creative (?) -+ 500c DE5771 Modem Blaster - 2222 MacAlly - 0004 iWebKey Keyboard - 22b8 Motorola PCS -- 1005 Ti280e GSM/GPRS Phone -+ 0005 V.60c/V.60i GSM Phone -+ 1005 T280e GSM/GPRS Phone -+ 2821 T720 GSM Phone -+ 2822 V.120e GSM Phone -+ 3002 A835 GSM Phone -+ 3802 C330 GSM Phone -+22b9 eTurboTouch Technology, Inc. -+22ba Technology Innovation Holdings, Ltd - 2304 Pinnacle Systems, Inc. [hex] -- 0111 Studio PCTV (PAL) Frame Grabber -- 0112 Studio PCTV (NTSC) Frame Grabber -- 0210 Studio PCTV (PAL) Frame Grabber -- 0212 Studio PCTV (NTSC) Frame Grabber --2318 Shining Technologies Inc. [hex] -+ 0109 Pinnacle Studio PCTV USB (SECAM) -+ 0110 Pinnacle Studio PCTV USB (PAL) -+ 0111 Miro PCTV USB -+ 0112 Pinnacle Studio PCTV USB (NTSC) with FM radio -+ 0210 Pinnacle Studio PCTV USB (PAL) with FM radio -+ 0212 Pinnacle Studio PCTV USB (NTSC) -+ 0214 Pinnacle Studio PCTV USB (PAL) with FM radio -+ 0300 Pinnacle Studio Linx Video input cable (NTSC) -+ 0419 Pinnacle PCTV Bungee USB (PAL) with FM radio -+2318 Shining Technologies, Inc. [hex] - 0011 CitiDISK Jr. IDE Enclosure - 2375 Digit@lway, Inc. - 0001 Digital Audio Player -+2632 TwinMOS -+ 3209 7-in-1 Card Reader -+2650 Electronics For Imaging, Inc. [hex] -+2770 NHJ, Ltd -+ 9120 Che-ez! Snap / iClick Tiny VGA Digital Camera -+2899 Toptronic Industrial Co., Ltd - 3125 Eagletron - 0001 TrackerPod Camera Stand -+3176 Whanam Electronics Co., Ltd - 3504 Micro Star - f110 Security Key -+3538 Power Quotient International Co., Ltd -+ 0001 Travel Flash -+3579 DIVA -+ 6901 Media Reader -+3636 InVibro -+3838 WEM -+ 0001 5-in-1 Card Reader -+3923 National Instruments Corp. -+4102 iRiver, Ltd. -+ 1001 iFP-100 series mp3 player -+ 1003 iFP-300 series mp3 player -+ 1005 iFP-500 series mp3 player -+ 1007 iFP-700 series mp3/ogg vorbis player -+ 1008 iFP-800 series mp3/ogg vorbis player -+ 100A iFP-1000 series mp3/ogg vorbis player -+ 1101 iFP-100 series mp3 player (ums firmware) -+ 1103 iFP-300 series mp3 player (ums firmware) -+ 1105 iFP-500 series mp3 player (ums firmware) -+413c Dell Computer Corp. -+ 8100 TrueMobile 1180 802.11b Adapter - 4242 USB Design by Example - 4201 Buttons and Lights HID device - 4220 Echo 1 Camera - 544d Transmeta Corp. --55aa OnSpec Electronic Inc. -+5543 UC-Logic Technology Corp. -+ 0002 SuperPen WP3325U Tablet -+55aa OnSpec Electronic, Inc. - 1234 ATAPI Bridge - a103 Sandisk SDDR-55 SmartMedia Card Reader --5543 UC-Logic Technology, Corp. -- 0002 SuperPen WP3325U Tablet - 636c CoreLogic, Inc. - 6666 Prototype product Vendor ID - 0667 Smart Joy PSX, PS-PC Smart JoyPad --6a75 Shanghai Jujo Electronics Co., Ltd. -+6a75 Shanghai Jujo Electronics Co., Ltd - 8086 Intel Corp. - 0110 Easy PC Camera - 0431 Intel Pro Video PC Camera - 0510 Digital Movie Creator - 0630 Pocket PC Camera -+ 07d3 BLOB boot loader firmware -+ 1111 PRO/Wireless 2011B 802.11b Adapter - 9890 82930 Test Board - c013 Wireless HID Station --c251 Keil Software -+8341 EGO Systems, Inc. -+ 2000 Flashdisk -+c251 Keil Software, Inc. -+eb1a eMPIA Technology, Inc. -+ 2801 GrabBeeX+ Video Encoder - - # List of known device classes, subclasses and protocols - -@@ -1960,22 +3536,32 @@ - # subclass subclass_name <-- single tab - # protocol protocol_name <-- two tabs - --C 00 Interface -+C 00 (Defined at Interface level) - C 01 Audio - 01 Control Device - 02 Streaming -- 03 Non Streaming -+ 03 MIDI Streaming - C 02 Communications - 01 Direct Line - 02 Abstract (modem) - 00 None -- 01 AT-commands -- ff Vendor Specific -+ 01 AT-commands (v.25ter) -+ 02 AT-commands (PCCA101) -+ 03 AT-commands (PCCA101 + wakeup) -+ 04 AT-commands (GSM) -+ 05 AT-commands (3G) -+ 06 AT-commands (CDMA) -+ fe Defined by command set descriptor -+ ff Vendor Specific (MSFT RNDIS?) - 03 Telephone - 04 Multi-Channel - 05 CAPI Control - 06 Ethernet Networking - 07 ATM Networking -+ 08 Wireless Handset Control -+ 09 Device Management -+ 0a Mobile Direct Line -+ 0b OBEX - C 03 Human Interface Devices - 00 No Subclass - 00 None -@@ -2012,20 +3598,44 @@ - 01 Control/Bulk - 50 Bulk (Zip) - C 09 Hub --C 10 Data -- 30 I.430 ISDN BRI -- 31 HDLC -- 32 Transparent -- 50 Q.921M -- 51 Q.921 -- 52 Q.921TM -- 90 V.42bis -- 91 Q.932 EuroISDN -- 92 V.120 V.24 rate ISDN -- 93 CAPI 2.0 -- fd Host Based Driver -- fe CDC PUF -- ff Vendor specific -+ 00 Unused -+ 01 Single TT -+ 02 TT per port -+C 0a Data -+ 00 Unused -+ 30 I.430 ISDN BRI -+ 31 HDLC -+ 32 Transparent -+ 50 Q.921M -+ 51 Q.921 -+ 52 Q.921TM -+ 90 V.42bis -+ 91 Q.932 EuroISDN -+ 92 V.120 V.24 rate ISDN -+ 93 CAPI 2.0 -+ fd Host Based Driver -+ fe CDC PUF -+ ff Vendor specific -+C 0b Chip/SmartCard -+C 0d Content Security -+C 0e Video -+ 00 Undefined -+ 01 Video Control -+ 02 Video Streaming -+ 03 Video Interface Collection -+C dc Diagnostic -+ 01 Reprogrammable Diagnostics -+ 01 USB2 Compliance -+C e0 Wireless -+ 01 Radio Frequency -+ 01 Bluetooth -+C ef Miscellaneous Device -+ 02 Common Class -+ 01 Interface Association -+C fe Application Specific Interface -+ 01 Device Firmware Update -+ 02 IRDA Bridge -+ 03 Test and Measurement - C ff Vendor Specific Class - ff Vendor Specific Subclass - ff Vendor Specific Protocol -@@ -2644,10 +4254,12 @@ - 001 Button 1 (Primary) - 002 Button 2 (Secondary) - 003 Button 3 (Tertiary) -+ 004 Button 4 -+ 005 Button 5 - HUT 0a Ordinal - 001 Instance 1 - 002 Instance 2 -- 002 Instance 3 -+ 003 Instance 3 - HUT 0b Telephony - 000 Unassigned - 001 Phone -@@ -3177,14 +4789,191 @@ - 0b0 Settings - 0ca On Screen Display (OSD) - 0d4 Stereo Mode --HUT 84 Power Pages --HUT 85 Power Pages -+HUT 84 Power Device Page -+ 000 Undefined -+ 001 iName -+ 002 Present Status -+ 003 Changed Status -+ 004 UPS -+ 005 Power Supply -+ 010 Battery System -+ 011 Battery System ID -+ 012 Battery -+ 013 Battery ID -+ 014 Charger -+ 015 Charger ID -+ 016 Power Converter -+ 017 Power Converter ID -+ 018 Outlet System -+ 019 Outlet System ID -+ 01a Input -+ 01b Input ID -+ 01c Output -+ 01d Output ID -+ 01e Flow -+ 01f Flow ID -+ 020 Outlet -+ 021 Outlet ID -+ 022 Gang -+ 023 Gang ID -+ 024 Power Summary -+ 025 Power Summary ID -+ 030 Voltage -+ 031 Current -+ 032 Frequency -+ 033 Apparent Power -+ 034 Active Power -+ 035 Percent Load -+ 036 Temperature -+ 037 Humidity -+ 038 Bad Count -+ 040 Config Voltage -+ 041 Config Current -+ 042 Config Frequency -+ 043 Config Apparent Power -+ 044 Config Active Power -+ 045 Config Percent Load -+ 046 Config Temperature -+ 047 Config Humidity -+ 050 Switch On Control -+ 051 Switch Off Control -+ 052 Toggle Control -+ 053 Low Voltage Transfer -+ 054 High Voltage Transfer -+ 055 Delay Before Reboot -+ 056 Delay Before Startup -+ 057 Delay Before Shutdown -+ 058 Test -+ 059 Module Reset -+ 05a Audible Alarm Control -+ 060 Present -+ 061 Good -+ 062 Internal Failure -+ 063 Voltage out of range -+ 064 Frequency out of range -+ 065 Overload -+ 066 Over Charged -+ 067 Over Temperature -+ 068 Shutdown Requested -+ 069 Shutdown Imminent -+ 06a Reserved -+ 06b Switch On/Off -+ 06c Switchable -+ 06d Used -+ 06e Boost -+ 06f Buck -+ 070 Initialized -+ 071 Tested -+ 072 Awaiting Power -+ 073 Communication Lost -+ 0fd iManufacturer -+ 0fe iProduct -+ 0ff iSerialNumber -+HUT 85 Battery System Page -+ 000 Undefined -+ 001 SMB Battery Mode -+ 002 SMB Battery Status -+ 003 SMB Alarm Warning -+ 004 SMB Charger Mode -+ 005 SMB Charger Status -+ 006 SMB Charger Spec Info -+ 007 SMB Selector State -+ 008 SMB Selector Presets -+ 009 SMB Selector Info -+ 010 Optional Mfg. Function 1 -+ 011 Optional Mfg. Function 2 -+ 012 Optional Mfg. Function 3 -+ 013 Optional Mfg. Function 4 -+ 014 Optional Mfg. Function 5 -+ 015 Connection to SMBus -+ 016 Output Connection -+ 017 Charger Connection -+ 018 Battery Insertion -+ 019 Use Next -+ 01a OK to use -+ 01b Battery Supported -+ 01c SelectorRevision -+ 01d Charging Indicator -+ 028 Manufacturer Access -+ 029 Remaining Capacity Limit -+ 02a Remaining Time Limit -+ 02b At Rate -+ 02c Capacity Mode -+ 02d Broadcast To Charger -+ 02e Primary Battery -+ 02f Charge Controller -+ 040 Terminate Charge -+ 041 Terminate Discharge -+ 042 Below Remaining Capacity Limit -+ 043 Remaining Time Limit Expired -+ 044 Charging -+ 045 Discharging -+ 046 Fully Charged -+ 047 Fully Discharged -+ 048 Conditioning Flag -+ 049 At Rate OK -+ 04a SMB Error Code -+ 04b Need Replacement -+ 060 At Rate Time To Full -+ 061 At Rate Time To Empty -+ 062 Average Current -+ 063 Max Error -+ 064 Relative State Of Charge -+ 065 Absolute State Of Charge -+ 066 Remaining Capacity -+ 067 Full Charge Capacity -+ 068 Run Time To Empty -+ 069 Average Time To Empty -+ 06a Average Time To Full -+ 06b Cycle Count -+ 080 Batt. Pack Model Level -+ 081 Internal Charge Controller -+ 082 Primary Battery Support -+ 083 Design Capacity -+ 084 Specification Info -+ 085 Manufacturer Date -+ 086 Serial Number -+ 087 iManufacturerName -+ 088 iDeviceName -+ 089 iDeviceChemistry -+ 08a Manufacturer Data -+ 08b Rechargeable -+ 08c Warning Capacity Limit -+ 08d Capacity Granularity 1 -+ 08e Capacity Granularity 2 -+ 08f iOEMInformation -+ 0c0 Inhibit Charge -+ 0c1 Enable Polling -+ 0c2 Reset To Zero -+ 0d0 AC Present -+ 0d1 Battery Present -+ 0d2 Power Fail -+ 0d3 Alarm Inhibited -+ 0d4 Thermistor Under Range -+ 0d5 Thermistor Hot -+ 0d6 Thermistor Cold -+ 0d7 Thermistor Over Range -+ 0d8 Voltage Out Of Range -+ 0d9 Current Out Of Range -+ 0da Current Not Regulated -+ 0db Voltage Not Regulated -+ 0dc Master Mode -+ 0f0 Charger Selector Support -+ 0f1 Charger Spec -+ 0f2 Level 2 -+ 0f3 Level 3 - HUT 86 Power Pages - HUT 87 Power Pages - HUT 8c Bar Code Scanner Page (POS) - HUT 8d Scale Page (POS) - HUT 90 Camera Control Page - HUT 91 Arcade Control Page -+HUT f0 Cash Device -+ 0f1 Cash Drawer -+ 0f2 Cash Drawer Number -+ 0f3 Cash Drawer Set -+ 0f4 Cash Drawer Status -+HUT ff Vendor Specific - - # List of Languages - -@@ -3285,8 +5074,8 @@ - 01 Bokmal - 02 Nynorsk - L 0015 Polish --L 0016 Portugese -- 01 Portugese -+L 0016 Portuguese -+ 01 Portuguese - 02 Brazilian - L 0017 forgotten - L 0018 Romanian -@@ -3354,3 +5143,46 @@ - 02 India - L 0061 Nepali - 02 India -+ -+# HID Descriptor bCountryCode -+# HID Specification 1.11 (2001-06-27) page 23 -+# -+# Syntax: -+# HCC country_code keymap_type -+ -+HCC 00 Not supported -+HCC 01 Arabic -+HCC 02 Belgian -+HCC 03 Canadian-Bilingual -+HCC 04 Canadian-French -+HCC 05 Czech Republic -+HCC 06 Danish -+HCC 07 Finnish -+HCC 08 French -+HCC 09 German -+HCC 10 Greek -+HCC 11 Hebrew -+HCC 12 Hungary -+HCC 13 International (ISO) -+HCC 14 Italian -+HCC 15 Japan (Katakana) -+HCC 16 Korean -+HCC 17 Latin American -+HCC 18 Netherlands/Dutch -+HCC 19 Norwegian -+HCC 20 Persian (Farsi) -+HCC 21 Poland -+HCC 22 Portuguese -+HCC 23 Russia -+HCC 24 Slovakia -+HCC 25 Spanish -+HCC 26 Swedish -+HCC 27 Swiss/French -+HCC 28 Swiss/German -+HCC 29 Switzerland -+HCC 30 Taiwan -+HCC 31 Turkish-Q -+HCC 32 UK -+HCC 33 US -+HCC 34 Yugoslavia -+HCC 35 Turkish-F ---- usbutils-0.11/usbdevice_fs.h~usbutils-0.11+cvs20041108 -+++ usbutils-0.11/usbdevice_fs.h -@@ -23,7 +23,7 @@ - * History: - * 0.1 04.01.2000 Created - * -- * $Id$ -+ * $Id$ - */ - - /*****************************************************************************/ -@@ -31,6 +31,8 @@ - #ifndef _LINUX_USBDEVICE_FS_H - #define _LINUX_USBDEVICE_FS_H - -+#include <linux/types.h> -+ - /* --------------------------------------------------------------------- */ - - #define USBDEVICE_SUPER_MAGIC 0x9fa2 -@@ -64,8 +66,21 @@ - void *context; - }; - -+#define USBDEVFS_MAXDRIVERNAME 255 -+ -+struct usbdevfs_getdriver { -+ unsigned int interface; -+ char driver[USBDEVFS_MAXDRIVERNAME + 1]; -+}; -+ -+struct usbdevfs_connectinfo { -+ unsigned int devnum; -+ unsigned char slow; -+}; -+ - #define USBDEVFS_URB_DISABLE_SPD 1 - #define USBDEVFS_URB_ISO_ASAP 2 -+#define USBDEVFS_URB_QUEUE_BULK 0x10 - - #define USBDEVFS_URB_TYPE_ISO 0 - #define USBDEVFS_URB_TYPE_INTERRUPT 1 -@@ -94,11 +109,27 @@ - struct usbdevfs_iso_packet_desc iso_frame_desc[0]; - }; - -+/* ioctls for talking to drivers in the usbcore module: */ -+struct usbdevfs_ioctl { -+ int ifno; /* interface 0..N ; negative numbers reserved */ -+ int ioctl_code; /* MUST encode size + direction of data so the -+ * macros in <asm/ioctl.h> give correct values */ -+ void *data; /* param buffer (in, or out) */ -+}; -+ -+/* You can do most things with hubs just through control messages, -+ * except find out what device connects to what port. */ -+struct usbdevfs_hub_portinfo { -+ char nports; /* number of downstream ports in this hub */ -+ char port [127]; /* e.g. port 3 connects to device 27 */ -+}; -+ - #define USBDEVFS_CONTROL _IOWR('U', 0, struct usbdevfs_ctrltransfer) - #define USBDEVFS_BULK _IOWR('U', 2, struct usbdevfs_bulktransfer) - #define USBDEVFS_RESETEP _IOR('U', 3, unsigned int) - #define USBDEVFS_SETINTERFACE _IOR('U', 4, struct usbdevfs_setinterface) - #define USBDEVFS_SETCONFIGURATION _IOR('U', 5, unsigned int) -+#define USBDEVFS_GETDRIVER _IOW('U', 8, struct usbdevfs_getdriver) - #define USBDEVFS_SUBMITURB _IOR('U', 10, struct usbdevfs_urb) - #define USBDEVFS_DISCARDURB _IO('U', 11) - #define USBDEVFS_REAPURB _IOW('U', 12, void *) -@@ -106,6 +137,11 @@ - #define USBDEVFS_DISCSIGNAL _IOR('U', 14, struct usbdevfs_disconnectsignal) - #define USBDEVFS_CLAIMINTERFACE _IOR('U', 15, unsigned int) - #define USBDEVFS_RELEASEINTERFACE _IOR('U', 16, unsigned int) -+#define USBDEVFS_CONNECTINFO _IOW('U', 17, struct usbdevfs_connectinfo) -+#define USBDEVFS_IOCTL _IOWR('U', 18, struct usbdevfs_ioctl) -+#define USBDEVFS_HUB_PORTINFO _IOR('U', 19, struct usbdevfs_hub_portinfo) -+#define USBDEVFS_RESET _IO('U', 20) -+#define USBDEVFS_CLEAR_HALT _IOR('U', 21, unsigned int) - - /* --------------------------------------------------------------------- */ - -@@ -126,18 +162,6 @@ - - #define IROOT 1 - --/* -- * sigh. rwsemaphores do not (yet) work from modules -- */ -- --#define rw_semaphore semaphore --#define init_rwsem init_MUTEX --#define down_read down --#define down_write down --#define up_read up --#define up_write up -- -- - struct dev_state { - struct list_head list; /* state list */ - struct rw_semaphore devsem; /* protects modifications to dev (dev == NULL indicating disconnect) */ -@@ -163,7 +187,6 @@ - extern struct file_operations usbdevfs_bus_file_operations; - extern void usbdevfs_conn_disc_event(void); - -- - #endif /* __KERNEL__ */ - - /* --------------------------------------------------------------------- */ ---- /dev/null -+++ usbutils-0.11/usbmisc.c -@@ -0,0 +1,141 @@ -+/*****************************************************************************/ -+/* -+ * usbmisc.c -- Misc USB routines -+ * -+ * Copyright (C) 2003 Aurelien Jarno (aurelien@aurel32.net) -+ * -+ * 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; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program 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 General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ * -+ * -+ */ -+ -+/*****************************************************************************/ -+ -+#include <stdio.h> -+#include <string.h> -+ -+#ifdef HAVE_CONFIG_H -+#include "config.h" -+#endif -+ -+#include "usbmisc.h" -+ -+/* ---------------------------------------------------------------------- */ -+ -+static const char *procbususb = "/proc/bus/usb"; -+ -+/* ---------------------------------------------------------------------- */ -+ -+static int readlink_recursive(const char *path, char *buf, size_t bufsize) -+{ -+ char temp[PATH_MAX + 1]; -+ char *ptemp; -+ int ret; -+ -+ ret = readlink(path, buf, bufsize); -+ -+ if (ret > 0) { -+ buf[ret] = 0; -+ if (*buf != '/') -+ { -+ strncpy(temp, path, sizeof(temp)); -+ ptemp = temp + strlen(temp); -+ while (*ptemp != '/' && ptemp != temp) ptemp--; -+ ptemp++; -+ strncpy(ptemp, buf, bufsize + temp - ptemp); -+ } -+ else -+ strncpy(temp, buf, sizeof(temp)); -+ return readlink_recursive(temp, buf, bufsize); -+ } -+ else { -+ strncpy(buf, path, bufsize); -+ return strlen(buf); -+ } -+} -+ -+static char *get_absolute_path(const char *path, char *result, size_t result_size) -+{ -+ const char *ppath; /* pointer on the input string */ -+ char *presult; /* pointer on the output string */ -+ -+ ppath = path; -+ presult = result; -+ result[0] = 0; -+ -+ if (path == NULL) -+ return result; -+ -+ if (*ppath != '/') -+ { -+ getcwd(result, result_size); -+ presult += strlen(result); -+ result_size -= strlen(result); -+ -+ *presult++ = '/'; -+ result_size--; -+ } -+ -+ while (*ppath != 0 && result_size > 1) { -+ if (*ppath == '/') { -+ do ppath++; while (*ppath == '/'); -+ *presult++ = '/'; -+ result_size--; -+ } -+ else if (*ppath == '.' && *(ppath + 1) == '.' && *(ppath + 2) == '/' && *(presult - 1) == '/') { -+ if ((presult - 1) != result) -+ { -+ /* go one directory upper */ -+ do { -+ presult--; -+ result_size++; -+ } while (*(presult - 1) != '/'); -+ } -+ ppath += 3; -+ } -+ else if (*ppath == '.' && *(ppath + 1) == '/' && *(presult - 1) == '/') { -+ ppath += 2; -+ } -+ else { -+ *presult++ = *ppath++; -+ result_size--; -+ } -+ } -+ /* Don't forget to mark the end of the string! */ -+ *presult = 0; -+ -+ return result; -+} -+ -+struct usb_device *get_usb_device(const char *path) -+{ -+ struct usb_bus *bus; -+ struct usb_device *dev; -+ char device_path[PATH_MAX + 1]; -+ char absolute_path[PATH_MAX + 1]; -+ -+ readlink_recursive(path, device_path, sizeof(device_path)); -+ get_absolute_path(device_path, absolute_path, sizeof(absolute_path)); -+ -+ for (bus = usb_busses; bus; bus = bus->next) { -+ for (dev = bus->devices; dev; dev = dev->next) { -+ snprintf(device_path, sizeof(device_path), "%s/%s/%s", procbususb, bus->dirname, dev->filename); -+ if (!strcmp(device_path, absolute_path)) -+ return dev; -+ } -+ } -+ return NULL; -+} -+ ---- /dev/null -+++ usbutils-0.11/usbmisc.h -@@ -0,0 +1,36 @@ -+/*****************************************************************************/ -+/* -+ * usbmisc.h -- Misc USB routines -+ * -+ * Copyright (C) 2003 Aurelien Jarno (aurelien@aurel32.net) -+ * -+ * 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; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program 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 General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ * -+ * -+ */ -+ -+/*****************************************************************************/ -+ -+#ifndef _USBMISC_H -+#define _USBMISC_H -+ -+#include <usb.h> -+ -+/* ---------------------------------------------------------------------- */ -+ -+extern struct usb_device *get_usb_device(const char *path); -+ -+/* ---------------------------------------------------------------------- */ -+#endif /* _USBMISC_H */ ---- usbutils-0.11/usbmodules.8~usbutils-0.11+cvs20041108 -+++ usbutils-0.11/usbmodules.8 -@@ -5,7 +5,8 @@ - in USB device - .SH SYNOPSIS - .B usbmodules --.RB [ "--device " /proc/bus/bus/NNN/NNN ] -+.RB [ "--device " /proc/bus/bus/NNN/NNN -+.RB | " --product " xx/xx/xx " --type " dd/dd/dd " --interface " dd/dd/dd ] - .RB [ "--check " modulename ] - .RB [ --help ] - .RB [ "--mapfile " pathname ] -@@ -27,11 +28,21 @@ - .IP - done - .PP -+or -+.IP -+ for module in $(usbmodules --product $PRODUCT --type $TYPE --interface $INTERFACE) ; do -+.IP -+ modprobe -s -k "$module" -+.IP -+ done -+.PP - The DEVICE environment variable is passed from the kernel to /sbin/hotplug - during USB hotplugging if the kernel was configured using - .I usbdevfs. -+The environment variables PRODUCT, TYPE and INTERFACE are set when -+/sbin/hotplug is called during hotplugging. - .B usbmodules --currently requires usbdevfs to operate. -+can operate with both configurations. - .PP - When a USB device is removed from the system, the Linux kernel will - decrement a usage count on USB driver module. If this count drops -@@ -52,7 +63,20 @@ - .BI "--device " /proc/bus/usb/MMM/NNN - Selects which device - .B usbmodules --will examine. The argument is currently mandatory. -+will examine. The argument is mandatory unless -+.B --procuct -+, -+.B --type -+and -+.B --interface -+are used together. -+.TP -+.BI "--product " xx/xx/xx " --type " dd/dd/dd " --interface " dd/dd/dd -+Alternative way to select the device -+.B usbmodules -+will examine. These arguments are mandatory unless -+.B --device -+is given. - .TP - .B --help, -h - Print a help message ---- usbutils-0.11/usbmodules.c~usbutils-0.11+cvs20041108 -+++ usbutils-0.11/usbmodules.c -@@ -11,7 +11,7 @@ - * - * The code in usbmodules not derived from elsewhere was written by - * Adam J. Richter. David Brownell added the --mapfile and --version -- * options. -+ * options. Aurelien Jarno modified the code to use libusb. - * - * Copyright (C) 2000, 2001 Yggdrasil Computing, Inc. - * Copyright (C) 1999 Thomas Sailer (sailer@ife.ee.ethz.ch) -@@ -38,8 +38,6 @@ - #include <sys/types.h> - #include <sys/stat.h> - #include <sys/ioctl.h> --#include <fcntl.h> --#include <dirent.h> - #include <string.h> - #include <errno.h> - #include <stdlib.h> -@@ -48,36 +46,27 @@ - #include <stdarg.h> - #include <sys/param.h> - #include <sys/utsname.h> -- --#include <linux/types.h> --#ifdef HAVE_LINUX_USBDEVICE_FS_H --#include <linux/usbdevice_fs.h> --#else --#include "usbdevice_fs.h" --#endif --#ifdef HAVE_LINUX_USB_H --#include <linux/usb.h> --#else --#include "usb.h" --#endif -+#include <usb.h> - - #ifdef HAVE_CONFIG_H - #include "config.h" - #endif - - #include "usbmodules.h" --#include "names.h" --#include "devtree.h" -+#include "usbmisc.h" - - #define _GNU_SOURCE - #include <getopt.h> - --#define OPT_STRING "c:d:hm:v" -+#define OPT_STRING "c:d:hi:m:p:t:v" - static struct option long_options[] = { - {"check", required_argument, NULL, 'c'}, - {"device", required_argument, NULL, 'd'}, - {"help", no_argument, NULL, 'h'}, -+ {"interface", required_argument, NULL, 'i'}, - {"mapfile", required_argument, NULL, 'm'}, -+ {"product", required_argument, NULL, 'p'}, -+ {"type", required_argument, NULL, 't'}, - {"version", no_argument, NULL, 'v'}, - { 0, 0, NULL, 0} - }; -@@ -87,23 +76,7 @@ - - #define LINELENGTH 8000 - --#define CTRL_RETRIES 50 --#define CTRL_TIMEOUT 100 /* milliseconds */ -- --#define USB_DT_CS_DEVICE 0x21 --#define USB_DT_CS_CONFIG 0x22 --#define USB_DT_CS_STRING 0x23 --#define USB_DT_CS_INTERFACE 0x24 --#define USB_DT_CS_ENDPOINT 0x25 -- - static char *checkname = NULL; -- --static int idVendor; --static int idProduct; --static int bcdDevice; --static int bDeviceClass; --static int bDeviceSubClass; --static int bDeviceProtocol; - struct usbmap_entry *usbmap_list; - - static void * -@@ -218,6 +191,9 @@ - if (line[0] == '#') - continue; - -+ if (line[0] == '\n') -+ continue; -+ - entry = xmalloc(sizeof(struct usbmap_entry)); - - if (!scan_with_flags(line, entry, name) && -@@ -257,52 +233,51 @@ - */ - - static void --match_modules(int bInterfaceClass, -- int bInterfaceSubClass, -- int bInterfaceProtocol) -+match_modules(struct usb_device_descriptor *device_descriptor, -+ struct usb_interface_descriptor *interface_descriptor) - { - struct usbmap_entry *mod; - - for (mod = usbmap_list; mod != NULL; mod = mod->next) { - - if ((mod->match_flags & USB_MATCH_VENDOR) && -- mod->idVendor != idVendor) -+ mod->idVendor != device_descriptor->idVendor) - continue; - - if ((mod->match_flags & USB_MATCH_PRODUCT) && -- mod->idProduct != idProduct) -+ mod->idProduct != device_descriptor->idProduct) - continue; - - if ((mod->match_flags & USB_MATCH_DEV_LO) && -- mod->bcdDevice_lo > bcdDevice) -+ mod->bcdDevice_lo > device_descriptor->bcdDevice) - continue; - - if ((mod->match_flags & USB_MATCH_DEV_HI) && -- mod->bcdDevice_hi < bcdDevice) -+ mod->bcdDevice_hi < device_descriptor->bcdDevice) - continue; - - if ((mod->match_flags & USB_MATCH_DEV_CLASS) && -- mod->bDeviceClass != bDeviceClass) -+ mod->bDeviceClass != device_descriptor->bDeviceClass) - continue; - - if ((mod->match_flags & USB_MATCH_DEV_SUBCLASS) && -- mod->bDeviceSubClass != bDeviceSubClass) -+ mod->bDeviceSubClass != device_descriptor->bDeviceSubClass) - continue; - - if ((mod->match_flags & USB_MATCH_DEV_PROTOCOL) && -- mod->bDeviceProtocol != bDeviceProtocol) -+ mod->bDeviceProtocol != device_descriptor->bDeviceProtocol) - continue; - - if ((mod->match_flags & USB_MATCH_INT_CLASS) && -- mod->bInterfaceClass != bInterfaceClass) -+ mod->bInterfaceClass != interface_descriptor->bInterfaceClass) - continue; - - if ((mod->match_flags & USB_MATCH_INT_SUBCLASS) && -- mod->bInterfaceSubClass != bInterfaceSubClass) -+ mod->bInterfaceSubClass != interface_descriptor->bInterfaceSubClass) - continue; - - if ((mod->match_flags & USB_MATCH_INT_PROTOCOL) && -- mod->bInterfaceProtocol != bInterfaceProtocol) -+ mod->bInterfaceProtocol != interface_descriptor->bInterfaceProtocol) - continue; - - if (checkname != NULL) { -@@ -315,161 +290,154 @@ - } - } - --static int usb_control_msg(int fd, -- u_int8_t requesttype, -- u_int8_t request, -- u_int16_t value, -- u_int16_t index, -- unsigned int size, -- void *data) -+static void process_device(const char *path) - { -- int result; -- int try; -- -- struct usbdevfs_ctrltransfer ctrl; -- -- ctrl.requesttype = requesttype; -- ctrl.request = request; -- ctrl.value = value; -- ctrl.index = index; -- ctrl.length = size; -- ctrl.data = data; -- ctrl.timeout = CTRL_TIMEOUT; -- -- /* At least on UHCI controllers, this ioctl gets a lot of -- ETIMEDOUT errors which can often be retried with success -- one is persistent enough. So, we try 100 times, which work -- on one machine, but not on my notebook computer. -- --Adam J. Richter (adam@yggdrasil.com) 2000 November 03. */ -- -- try = 0; -- do { -- result = ioctl(fd, USBDEVFS_CONTROL, &ctrl); -- try++; -- } while (try < CTRL_RETRIES && result == -1 && errno == ETIMEDOUT); -- return result; --} -+ struct usb_device *dev; -+ struct usb_dev_handle *udev; -+ int i, j, k; - -+ dev = get_usb_device(path); - --static void do_config(int fd, unsigned int nr) --{ -- unsigned char buf[1024], *p; -- unsigned int sz; -+ if (!dev) { -+ fprintf(stderr, "Cannot open %s\n", path); -+ return; -+ } -+ -+ -+ udev = usb_open(dev); -+ -+ for (i = 0 ; i < dev->descriptor.bNumConfigurations ; i++) -+ for (j = 0 ; j < dev->config[i].bNumInterfaces ; j++) -+ for (k = 0 ; k < dev->config[i].interface[j].num_altsetting ; k++) -+ match_modules(&dev->descriptor, -+ &dev->config[i].interface[j].altsetting[k]); - -- if (usb_control_msg(fd, USB_DIR_IN, USB_REQ_GET_DESCRIPTOR, -- (USB_DT_CONFIG << 8) | nr, -- 0, USB_DT_CONFIG_SIZE, buf) < 0) { -- fprintf(stderr ,"cannot get config descriptor %d, %s (%d)\n", -- nr, strerror(errno), errno); -- return; -- } -- if (buf[0] < USB_DT_CONFIG_SIZE || buf[1] != USB_DT_CONFIG) -- fprintf(stderr, "Warning: invalid config descriptor\n"); -- sz = buf[2] | buf[3] << 8; -- if (sz > sizeof(buf)) { -- fprintf(stderr, -- "Config %d descriptor too long, truncating\n", nr); -- sz = sizeof(buf); -- } -- if (usb_control_msg(fd, USB_DIR_IN, USB_REQ_GET_DESCRIPTOR, -- (USB_DT_CONFIG << 8) | nr, 0, sz, buf) < 0) { -- fprintf(stderr, "cannot get config descriptor %d, %s (%d)\n", -- nr, strerror(errno), errno); -- return; -- } -- p = buf; -- while (sz >= 2 && p[0] >= 2 && p[0] < sz) { -- if (p[1] == USB_DT_INTERFACE) { -- const int intClass = p[5]; -- const int intSubClass = p[6]; -- const int intProto = p[7]; -- match_modules(intClass, intSubClass, intProto); -- } -- sz -= p[0]; -- p += p[0]; -- } -+ usb_close(udev); - } - --static void process_device(const char *path) -+static void process_args(char *product, -+ char *type, -+ char *interface) - { -- unsigned char buf[USB_DT_DEVICE_SIZE]; -- int fd; -- unsigned int i, maxcfg; -- -- if ((fd = open(path, O_RDWR)) == -1) { -- fprintf(stderr, "cannot open %s, %s (%d)\n", -- path, strerror(errno), errno); -- return; -- } -- if (usb_control_msg(fd, USB_DIR_IN, USB_REQ_GET_DESCRIPTOR, -- (USB_DT_DEVICE << 8), 0, USB_DT_DEVICE_SIZE, buf) -- < 0) { -- perror("cannot get config descriptor"); -- goto err; -- } -- bDeviceClass = buf[4]; -- bDeviceSubClass = buf[5]; -- bDeviceProtocol = buf[6]; -- idVendor = buf[8] | (buf[9] << 8); -- idProduct = buf[10] | (buf[11] << 8); -- bcdDevice = buf[12] | (buf[13] << 8); -- -- maxcfg = buf[17]; -- if (buf[0] < 18 || buf[1] != USB_DT_DEVICE) -- maxcfg = 1; -+ int a, b, c; -+ struct usb_device_descriptor dd; -+ struct usb_interface_descriptor id; - -- for (i = 0; i < maxcfg; i++) -- do_config(fd, i); -- err: -- close(fd); -+ memset(&dd, 0, sizeof(dd)); -+ memset(&id, 0, sizeof(id)); -+ if (product == NULL || -+ sscanf(product, "%hx/%hx/%hx", &dd.idVendor, &dd.idProduct, &dd.bcdDevice) != 3) { -+ fprintf(stderr, "Bad product format: '%s'\n", product); -+ return; -+ } -+ if (type == NULL || sscanf(type, "%d/%d/%d", &a, &b, &c) != 3) { -+ fprintf(stderr, "Bad type format: '%s'", type); -+ return; -+ } -+ dd.bDeviceClass = a; -+ dd.bDeviceSubClass = b; -+ dd.bDeviceProtocol = c; -+ if (dd.bDeviceClass == 0) { -+ /* interface must be specified for device class 0 */ -+ if (interface == NULL || -+ sscanf(interface, "%d/%d/%d", &a, &b, &c) != 3) { -+ fprintf(stderr, "Bad interface format: '%s'\n", interface); -+ return; -+ } -+ id.bInterfaceClass = a; -+ id.bInterfaceSubClass = b; -+ id.bInterfaceProtocol = c; -+ } else { -+ /* interface maybe given. if so, check and use arg */ -+ if (interface != NULL && *interface != '\0' && -+ sscanf(interface, "%d/%d/%d", &a, &b, &c) != 3) { -+ fprintf(stderr, "Bad interface format: '%s'\n", interface); -+ return; -+ } -+ id.bInterfaceClass = a; -+ id.bInterfaceSubClass = b; -+ id.bInterfaceProtocol = c; -+ } -+ match_modules(&dd, &id); - } - -- --int --main (int argc, char **argv) -+int main (int argc, char *argv[]) - { - int opt_index = 0; - int opt; - char *device = NULL; - char *pathname = NULL; -+ char *product = NULL, *type = NULL, *interface = NULL; - -- while ((opt = getopt_long(argc, argv, OPT_STRING, long_options, -- &opt_index)) != -1) { -+ while ((opt = getopt_long(argc, argv, OPT_STRING, long_options, &opt_index)) != -1) { - switch(opt) { -- case 'c': -- checkname = optarg; -- break; -- case 'd': -- device = optarg; -- break; -- case 'h': -- printf ("Usage: usbmodules [--help] [--device /proc/bus/usb/NNN/NNN] [--check module]\n" -- "\t[--mapfile pathname] [--version]\n" -- " Lists kernel modules corresponding to USB devices currently plugged\n" -- " into the computer.\n"); -- return 0; -- case 'm': -- pathname = optarg; -- break; -- case 'v': -- puts (VERSION); -- return 0; -- default: -- fprintf(stderr, -- "Unknown argument character \"%c\".\n", -- opt); -- return 1; -+ case 'c': -+ checkname = optarg; -+ break; -+ case 'd': -+ device = optarg; -+ break; -+ case 'h': -+ printf ("Usage: usbmodules [options]...\n" -+ "Lists kernel modules corresponding to USB devices currently plugged\n" -+ "\n" -+ "OPTIONS\n" -+ " -d, --device /proc/bus/usb/NNN/NNN\n" -+ " Selects which device usbmodules will examine\n" -+ " -c, --check module\n" -+ " Check if the given module's exported USB ID patterns matches\n" -+ " -m, --mapfile /etc/hotplug/usb.handmap\n" -+ " Specify a mapfile\n" -+ " -p, --product xx/xx/xx\n" -+ " -t, --type dd/dd/dd\n" -+ " -i, --interface dd/dd/dd\n" -+ " -h, --help\n" -+ " Print help screen\n" -+ " -v, --version\n" -+ " Show version of program\n" -+ "\n"); -+ return 0; -+ case 'm': -+ pathname = optarg; -+ break; -+ case 'i': -+ interface = optarg; -+ break; -+ case 'p': -+ product = optarg; -+ break; -+ case 't': -+ type = optarg; -+ break; -+ case 'v': -+ puts (VERSION); -+ return 0; -+ default: -+ fprintf(stderr, -+ "Unknown argument character \"%c\".\n", -+ opt); -+ return 1; - } - } - -- if (device == NULL) { -+ if (device == NULL && -+ (product == NULL || type == NULL || interface == NULL) ) { - fprintf (stderr, - "You must specify a device with something like:\n" -- "\tusbmodules --device /proc/bus/usb/001/009\n"); -- return 1; -+ "\tusbmodules --device /proc/bus/usb/001/009\n" -+ "or\n" -+ "\tusbmodules --product 82d/100/100 --type 0/0/0 --interface 0/0/0\n"); -+ return 1; - } -+ - read_modules_usbmap(pathname); -- process_device(device); -+ usb_init(); -+ usb_find_busses(); -+ usb_find_devices(); -+ if (device != NULL) -+ process_device(device); -+ if (product != NULL && type != NULL) -+ process_args(product, type, interface); - - if (checkname != NULL) - return 1; /* The module being checked was not needed */ ---- usbutils-0.11/usbutils.spec~usbutils-0.11+cvs20041108 -+++ usbutils-0.11/usbutils.spec -@@ -1,5 +1,5 @@ - %define name usbutils --%define version 0.11 -+%define version 0.12 - %define release 1 - Name: %{name} - Version: %{version} -@@ -10,6 +10,7 @@ - ExclusiveOS: Linux - Summary: Linux USB utilities. - Group: Applications/System -+BuildPrereq: libusb-devel - - %description - This package contains an utility for inspecting ---- /dev/null -+++ usbutils-0.11/update-usbids -@@ -0,0 +1,37 @@ -+#!/bin/sh -+# This is a script stolen from pciutils. Thanks to Martin Mares <mj@atrey.karlin.mff.cuni.cz> -+# for writing and publishing it under the GNU General Public License. -+ -+set -e -+ -+SRC="http://linux-usb.sourceforge.net/usb.ids" -+DEST=/var/lib/usbutils//usb.ids -+ -+umask 022 -+ -+if which wget >/dev/null ; then -+ DL="wget -O $DEST.new $SRC" -+elif which lynx >/dev/null ; then -+ DL="eval lynx -source $SRC >$DEST.new" -+else -+ echo >&2 "update-usbids: cannot find wget nor lynx" -+ exit 1 -+fi -+ -+if ! $DL ; then -+ echo >&2 "update-usbids: download failed" -+ rm -f $DEST.new -+ exit 1 -+fi -+ -+if ! grep >/dev/null "^C " $DEST.new ; then -+ echo >&2 "update-usbids: missing class info, probably truncated file" -+ exit 1 -+fi -+ -+if [ -f $DEST ] ; then -+ mv $DEST $DEST.old -+fi -+mv $DEST.new $DEST -+ -+echo "Done." ---- /dev/null -+++ usbutils-0.11/update-usbids.8 -@@ -0,0 +1,27 @@ -+.TH update-usbids 8 "27 October 2004" "usbutils-0.11" "Linux USB Utilities" -+.IX update-usbids -+ -+.SH NAME -+update-usbids \- download new version of the USB ID list -+ -+.SH SYNOPSIS -+.B update-usbids -+ -+.SH DESCRIPTION -+.B update-usbids -+fetches the current version of the usb.ids file from the primary distribution -+site and installs it. -+ -+This utility requires either wget or lynx to be installed. If gzip or bzip2 -+are available, it automatically downloads the compressed version of the list. -+ -+.SH FILES -+.TP -+.B /var/lib/usbutils/usb.ids -+Here we install the new list. -+ -+.SH SEE ALSO -+.BR lsusb(8). -+ -+.SH AUTHOR -+Thomas Sailer, <sailer@ife.ee.ethz.ch>. diff --git a/usbutils/usbutils-0.11/configure.patch b/usbutils/usbutils-0.11/configure.patch deleted file mode 100644 index a15e9607a5..0000000000 --- a/usbutils/usbutils-0.11/configure.patch +++ /dev/null @@ -1,1121 +0,0 @@ - -# -# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher -# - ---- usbutils-0.11/Makefile.am~configure 2001-06-12 11:20:13.000000000 -0400 -+++ usbutils-0.11/Makefile.am 2004-01-26 17:14:58.000000000 -0500 -@@ -1,5 +1,3 @@ --SUBDIRS = libusb -- - INCLUDES = - - sbin_PROGRAMS = lsusb usbmodules ---- usbutils-0.11/Makefile.in~configure 2002-08-06 02:38:48.000000000 -0400 -+++ usbutils-0.11/Makefile.in 2004-01-26 17:15:08.000000000 -0500 -@@ -1,6 +1,8 @@ --# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am -+# Makefile.in generated by automake 1.8.2 from Makefile.am. -+# @configure_input@ - --# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. -+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -+# 2003, 2004 Free Software Foundation, Inc. - # This Makefile.in is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. -@@ -10,232 +12,345 @@ - # even the implied warranty of MERCHANTABILITY or FITNESS FOR A - # PARTICULAR PURPOSE. - -+@SET_MAKE@ - --SHELL = @SHELL@ -+ -+ -+SOURCES = $(lsusb_SOURCES) $(usbmodules_SOURCES) - - srcdir = @srcdir@ - top_srcdir = @top_srcdir@ - VPATH = @srcdir@ --prefix = @prefix@ --exec_prefix = @exec_prefix@ -- --bindir = @bindir@ --sbindir = @sbindir@ --libexecdir = @libexecdir@ --datadir = @datadir@ --sysconfdir = @sysconfdir@ --sharedstatedir = @sharedstatedir@ --localstatedir = @localstatedir@ --libdir = @libdir@ --infodir = @infodir@ --mandir = @mandir@ --includedir = @includedir@ --oldincludedir = /usr/include -- --DESTDIR = -- - pkgdatadir = $(datadir)/@PACKAGE@ - pkglibdir = $(libdir)/@PACKAGE@ - pkgincludedir = $(includedir)/@PACKAGE@ -- - top_builddir = . -- --ACLOCAL = @ACLOCAL@ --AUTOCONF = @AUTOCONF@ --AUTOMAKE = @AUTOMAKE@ --AUTOHEADER = @AUTOHEADER@ -- -+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd - INSTALL = @INSTALL@ --INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) --INSTALL_DATA = @INSTALL_DATA@ --INSTALL_SCRIPT = @INSTALL_SCRIPT@ --transform = @program_transform_name@ -- -+install_sh_DATA = $(install_sh) -c -m 644 -+install_sh_PROGRAM = $(install_sh) -c -+install_sh_SCRIPT = $(install_sh) -c -+INSTALL_HEADER = $(INSTALL_DATA) -+transform = $(program_transform_name) - NORMAL_INSTALL = : - PRE_INSTALL = : - POST_INSTALL = : - NORMAL_UNINSTALL = : - PRE_UNINSTALL = : - POST_UNINSTALL = : --build_alias = @build_alias@ --build_triplet = @build@ --host_alias = @host_alias@ - host_triplet = @host@ --target_alias = @target_alias@ --target_triplet = @target@ -+sbin_PROGRAMS = lsusb$(EXEEXT) usbmodules$(EXEEXT) -+DIST_COMMON = README $(am__configure_deps) $(noinst_HEADERS) \ -+ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ -+ $(srcdir)/config.h.in $(top_srcdir)/configure AUTHORS COPYING \ -+ ChangeLog INSTALL NEWS acconfig.h config.guess config.sub \ -+ depcomp getopt.c getopt1.c install-sh ltconfig ltmain.sh \ -+ missing mkinstalldirs -+subdir = . -+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -+am__aclocal_m4_deps = $(top_srcdir)/configure.in -+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -+ $(ACLOCAL_M4) -+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ -+ configure.lineno configure.status.lineno -+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -+CONFIG_HEADER = config.h -+CONFIG_CLEAN_FILES = -+am__installdirs = $(DESTDIR)$(sbindir) $(DESTDIR)$(man8dir) $(DESTDIR)$(datadir) -+sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -+PROGRAMS = $(sbin_PROGRAMS) -+am_lsusb_OBJECTS = lsusb.$(OBJEXT) names.$(OBJEXT) devtree.$(OBJEXT) -+lsusb_OBJECTS = $(am_lsusb_OBJECTS) -+lsusb_DEPENDENCIES = @LIBOBJS@ -+am_usbmodules_OBJECTS = usbmodules.$(OBJEXT) -+usbmodules_OBJECTS = $(am_usbmodules_OBJECTS) -+usbmodules_DEPENDENCIES = @LIBOBJS@ -+DEFAULT_INCLUDES = -I. -I$(srcdir) -I. -+depcomp = $(SHELL) $(top_srcdir)/depcomp -+am__depfiles_maybe = depfiles -+@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/getopt.Po $(DEPDIR)/getopt1.Po \ -+@AMDEP_TRUE@ ./$(DEPDIR)/devtree.Po ./$(DEPDIR)/lsusb.Po \ -+@AMDEP_TRUE@ ./$(DEPDIR)/names.Po ./$(DEPDIR)/usbmodules.Po -+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ -+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \ -+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ -+ $(AM_CFLAGS) $(CFLAGS) -+CCLD = $(CC) -+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ -+ $(AM_LDFLAGS) $(LDFLAGS) -o $@ -+SOURCES = $(lsusb_SOURCES) $(usbmodules_SOURCES) -+DIST_SOURCES = $(lsusb_SOURCES) $(usbmodules_SOURCES) -+man8dir = $(mandir)/man8 -+NROFF = nroff -+MANS = $(man_MANS) -+dataDATA_INSTALL = $(INSTALL_DATA) -+DATA = $(data_DATA) -+HEADERS = $(noinst_HEADERS) -+ETAGS = etags -+CTAGS = ctags -+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+distdir = $(PACKAGE)-$(VERSION) -+top_distdir = $(distdir) -+am__remove_distdir = \ -+ { test ! -d $(distdir) \ -+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ -+ && rm -fr $(distdir); }; } -+DIST_ARCHIVES = $(distdir).tar.gz -+GZIP_ENV = --best -+distuninstallcheck_listfiles = find . -type f -print -+distcleancheck_listfiles = find . -type f -print -+ACLOCAL = @ACLOCAL@ -+AMDEP_FALSE = @AMDEP_FALSE@ -+AMDEP_TRUE = @AMDEP_TRUE@ -+AMTAR = @AMTAR@ - AR = @AR@ - AS = @AS@ -+AUTOCONF = @AUTOCONF@ -+AUTOHEADER = @AUTOHEADER@ -+AUTOMAKE = @AUTOMAKE@ -+AWK = @AWK@ - CC = @CC@ -+CCDEPMODE = @CCDEPMODE@ -+CFLAGS = @CFLAGS@ -+CPP = @CPP@ -+CPPFLAGS = @CPPFLAGS@ -+CXX = @CXX@ -+CXXCPP = @CXXCPP@ -+CXXDEPMODE = @CXXDEPMODE@ -+CXXFLAGS = @CXXFLAGS@ -+CYGPATH_W = @CYGPATH_W@ -+DEFS = @DEFS@ -+DEPDIR = @DEPDIR@ - DLLTOOL = @DLLTOOL@ -+ECHO = @ECHO@ -+ECHO_C = @ECHO_C@ -+ECHO_N = @ECHO_N@ -+ECHO_T = @ECHO_T@ -+EGREP = @EGREP@ -+EXEEXT = @EXEEXT@ -+F77 = @F77@ -+FFLAGS = @FFLAGS@ -+INSTALL_DATA = @INSTALL_DATA@ -+INSTALL_PROGRAM = @INSTALL_PROGRAM@ -+INSTALL_SCRIPT = @INSTALL_SCRIPT@ -+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -+LDFLAGS = @LDFLAGS@ - LIBOBJS = @LIBOBJS@ -+LIBS = @LIBS@ -+LIBTOOL = @LIBTOOL@ -+LN_S = @LN_S@ -+LTLIBOBJS = @LTLIBOBJS@ - MAKEINFO = @MAKEINFO@ -+OBJEXT = @OBJEXT@ - PACKAGE = @PACKAGE@ -+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -+PACKAGE_NAME = @PACKAGE_NAME@ -+PACKAGE_STRING = @PACKAGE_STRING@ -+PACKAGE_TARNAME = @PACKAGE_TARNAME@ -+PACKAGE_VERSION = @PACKAGE_VERSION@ -+PATH_SEPARATOR = @PATH_SEPARATOR@ - RANLIB = @RANLIB@ -+SET_MAKE = @SET_MAKE@ -+SHELL = @SHELL@ -+STRIP = @STRIP@ - VERSION = @VERSION@ -- --SUBDIRS = libusb -- -+ac_ct_AR = @ac_ct_AR@ -+ac_ct_CC = @ac_ct_CC@ -+ac_ct_CXX = @ac_ct_CXX@ -+ac_ct_F77 = @ac_ct_F77@ -+ac_ct_RANLIB = @ac_ct_RANLIB@ -+ac_ct_STRIP = @ac_ct_STRIP@ -+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ -+am__include = @am__include@ -+am__leading_dot = @am__leading_dot@ -+am__quote = @am__quote@ -+bindir = @bindir@ -+build = @build@ -+build_alias = @build_alias@ -+build_cpu = @build_cpu@ -+build_os = @build_os@ -+build_vendor = @build_vendor@ -+datadir = @datadir@ -+exec_prefix = @exec_prefix@ -+host = @host@ -+host_alias = @host_alias@ -+host_cpu = @host_cpu@ -+host_os = @host_os@ -+host_vendor = @host_vendor@ -+includedir = @includedir@ -+infodir = @infodir@ -+install_sh = @install_sh@ -+libdir = @libdir@ -+libexecdir = @libexecdir@ -+localstatedir = @localstatedir@ -+mandir = @mandir@ -+mkdir_p = @mkdir_p@ -+oldincludedir = @oldincludedir@ -+prefix = @prefix@ -+program_transform_name = @program_transform_name@ -+sbindir = @sbindir@ -+sharedstatedir = @sharedstatedir@ -+sysconfdir = @sysconfdir@ -+target = @target@ -+target_alias = @target_alias@ -+target_cpu = @target_cpu@ -+target_os = @target_os@ -+target_vendor = @target_vendor@ - INCLUDES = -- --sbin_PROGRAMS = lsusb usbmodules -- - noinst_HEADERS = names.h usb.h usbdevice_fs.h devtree.h list.h usbmodules.h -- - lsusb_SOURCES = lsusb.c names.c devtree.c - lsusb_LDADD = @LIBOBJS@ -- - usbmodules_SOURCES = usbmodules.c - usbmodules_LDADD = @LIBOBJS@ -- - data_DATA = usb.ids -- - man_MANS = lsusb.8 usbmodules.8 -- - EXTRA_DIST = $(man_MANS) $(data_DATA) usbutils.spec getopt.h getopt.c getopt1.c --ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 --mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs --CONFIG_HEADER = config.h --CONFIG_CLEAN_FILES = --PROGRAMS = $(sbin_PROGRAMS) -- -- --DEFS = @DEFS@ -I. -I$(srcdir) -I. --CPPFLAGS = @CPPFLAGS@ --LDFLAGS = @LDFLAGS@ --LIBS = @LIBS@ --lsusb_OBJECTS = lsusb.o names.o devtree.o --lsusb_DEPENDENCIES = @LIBOBJS@ --lsusb_LDFLAGS = --usbmodules_OBJECTS = usbmodules.o --usbmodules_DEPENDENCIES = @LIBOBJS@ --usbmodules_LDFLAGS = --CFLAGS = @CFLAGS@ --COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) --CCLD = $(CC) --LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ --man8dir = $(mandir)/man8 --MANS = $(man_MANS) -- --NROFF = nroff --DATA = $(data_DATA) -- --HEADERS = $(noinst_HEADERS) -- --DIST_COMMON = README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \ --Makefile.am Makefile.in NEWS acconfig.h aclocal.m4 config.guess \ --config.h.in config.sub configure configure.in getopt.c getopt1.c \ --install-sh ltconfig ltmain.sh missing mkinstalldirs -- -- --DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -- --TAR = gtar --GZIP_ENV = --best --SOURCES = $(lsusb_SOURCES) $(usbmodules_SOURCES) --OBJECTS = $(lsusb_OBJECTS) $(usbmodules_OBJECTS) -+all: config.h -+ $(MAKE) $(AM_MAKEFLAGS) all-am - --all: all-redirect - .SUFFIXES: --.SUFFIXES: .S .c .o .s --$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) -- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps Makefile -- --Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -- cd $(top_builddir) \ -- && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status -- --$(ACLOCAL_M4): configure.in -- cd $(srcdir) && $(ACLOCAL) -+.SUFFIXES: .c .lo .o .obj -+am--refresh: -+ @: -+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) -+ @for dep in $?; do \ -+ case '$(am__configure_deps)' in \ -+ *$$dep*) \ -+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ -+ cd $(srcdir) && $(AUTOMAKE) --gnu \ -+ && exit 0; \ -+ exit 1;; \ -+ esac; \ -+ done; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ -+ cd $(top_srcdir) && \ -+ $(AUTOMAKE) --gnu Makefile -+.PRECIOUS: Makefile -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ @case '$?' in \ -+ *config.status*) \ -+ echo ' $(SHELL) ./config.status'; \ -+ $(SHELL) ./config.status;; \ -+ *) \ -+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ -+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ -+ esac; - --config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck --$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) -+ -+$(top_srcdir)/configure: $(am__configure_deps) - cd $(srcdir) && $(AUTOCONF) -+$(ACLOCAL_M4): $(am__aclocal_m4_deps) -+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) - --config.h: stamp-h -- @if test ! -f $@; then \ -- rm -f stamp-h; \ -- $(MAKE) stamp-h; \ -- else :; fi --stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status -- cd $(top_builddir) \ -- && CONFIG_FILES= CONFIG_HEADERS=config.h \ -- $(SHELL) ./config.status -- @echo timestamp > stamp-h 2> /dev/null --$(srcdir)/config.h.in: $(srcdir)/stamp-h.in -+config.h: stamp-h1 - @if test ! -f $@; then \ -- rm -f $(srcdir)/stamp-h.in; \ -- $(MAKE) $(srcdir)/stamp-h.in; \ -+ rm -f stamp-h1; \ -+ $(MAKE) stamp-h1; \ - else :; fi --$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h -- cd $(top_srcdir) && $(AUTOHEADER) -- @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null - --mostlyclean-hdr: -- --clean-hdr: -+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status -+ @rm -f stamp-h1 -+ cd $(top_builddir) && $(SHELL) ./config.status config.h -+$(srcdir)/config.h.in: $(am__configure_deps) $(top_srcdir)/acconfig.h -+ cd $(top_srcdir) && $(AUTOHEADER) -+ rm -f stamp-h1 -+ touch $@ - - distclean-hdr: -- -rm -f config.h -- --maintainer-clean-hdr: -- --mostlyclean-sbinPROGRAMS: -- --clean-sbinPROGRAMS: -- -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS) -- --distclean-sbinPROGRAMS: -- --maintainer-clean-sbinPROGRAMS: -- -+ -rm -f config.h stamp-h1 - install-sbinPROGRAMS: $(sbin_PROGRAMS) - @$(NORMAL_INSTALL) -- $(mkinstalldirs) $(DESTDIR)$(sbindir) -+ $(mkdir_p) $(DESTDIR)$(sbindir) - @list='$(sbin_PROGRAMS)'; for p in $$list; do \ -- if test -f $$p; then \ -- echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ -- $(INSTALL_PROGRAM) $$p $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ -+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ -+ if test -f $$p \ -+ || test -f $$p1 \ -+ ; then \ -+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ -+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f"; \ -+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(sbinPROGRAMS_INSTALL) $$p $(DESTDIR)$(sbindir)/$$f || exit 1; \ - else :; fi; \ - done - - uninstall-sbinPROGRAMS: - @$(NORMAL_UNINSTALL) -- list='$(sbin_PROGRAMS)'; for p in $$list; do \ -- rm -f $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ -+ @list='$(sbin_PROGRAMS)'; for p in $$list; do \ -+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ -+ echo " rm -f $(DESTDIR)$(sbindir)/$$f"; \ -+ rm -f $(DESTDIR)$(sbindir)/$$f; \ - done - --.c.o: -- $(COMPILE) -c $< -- --.s.o: -- $(COMPILE) -c $< -- --.S.o: -- $(COMPILE) -c $< -+clean-sbinPROGRAMS: -+ @list='$(sbin_PROGRAMS)'; for p in $$list; do \ -+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ -+ echo " rm -f $$p $$f"; \ -+ rm -f $$p $$f ; \ -+ done -+lsusb$(EXEEXT): $(lsusb_OBJECTS) $(lsusb_DEPENDENCIES) -+ @rm -f lsusb$(EXEEXT) -+ $(LINK) $(lsusb_LDFLAGS) $(lsusb_OBJECTS) $(lsusb_LDADD) $(LIBS) -+usbmodules$(EXEEXT): $(usbmodules_OBJECTS) $(usbmodules_DEPENDENCIES) -+ @rm -f usbmodules$(EXEEXT) -+ $(LINK) $(usbmodules_LDFLAGS) $(usbmodules_OBJECTS) $(usbmodules_LDADD) $(LIBS) - - mostlyclean-compile: -- -rm -f *.o core *.core -- --clean-compile: -+ -rm -f *.$(OBJEXT) - - distclean-compile: - -rm -f *.tab.c - --maintainer-clean-compile: -+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getopt.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/getopt1.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/devtree.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lsusb.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/names.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/usbmodules.Po@am__quote@ - --lsusb: $(lsusb_OBJECTS) $(lsusb_DEPENDENCIES) -- @rm -f lsusb -- $(LINK) $(lsusb_LDFLAGS) $(lsusb_OBJECTS) $(lsusb_LDADD) $(LIBS) -+.c.o: -+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(COMPILE) -c $< - --usbmodules: $(usbmodules_OBJECTS) $(usbmodules_DEPENDENCIES) -- @rm -f usbmodules -- $(LINK) $(usbmodules_LDFLAGS) $(usbmodules_OBJECTS) $(usbmodules_LDADD) $(LIBS) -+.c.obj: -+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - --install-man8: -- $(mkinstalldirs) $(DESTDIR)$(man8dir) -- @list='$(man8_MANS)'; \ -- l2='$(man_MANS)'; for i in $$l2; do \ -+.c.lo: -+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< -+ -+mostlyclean-libtool: -+ -rm -f *.lo -+ -+clean-libtool: -+ -rm -rf .libs _libs -+ -+distclean-libtool: -+ -rm -f libtool -+uninstall-info-am: -+install-man8: $(man8_MANS) $(man_MANS) -+ @$(NORMAL_INSTALL) -+ $(mkdir_p) $(DESTDIR)$(man8dir) -+ @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ -+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ -+ for i in $$l2; do \ - case "$$i" in \ - *.8*) list="$$list $$i" ;; \ - esac; \ -@@ -244,291 +359,328 @@ - if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ - else file=$$i; fi; \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ -+ case "$$ext" in \ -+ 8*) ;; \ -+ *) ext='8' ;; \ -+ esac; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ -+ inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst"; \ - $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst; \ - done -- - uninstall-man8: -- @list='$(man8_MANS)'; \ -- l2='$(man_MANS)'; for i in $$l2; do \ -+ @$(NORMAL_UNINSTALL) -+ @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \ -+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ -+ for i in $$l2; do \ - case "$$i" in \ - *.8*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ -+ case "$$ext" in \ -+ 8*) ;; \ -+ *) ext='8' ;; \ -+ esac; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ -+ inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ - echo " rm -f $(DESTDIR)$(man8dir)/$$inst"; \ - rm -f $(DESTDIR)$(man8dir)/$$inst; \ - done --install-man: $(MANS) -- @$(NORMAL_INSTALL) -- $(MAKE) $(AM_MAKEFLAGS) install-man8 --uninstall-man: -- @$(NORMAL_UNINSTALL) -- $(MAKE) $(AM_MAKEFLAGS) uninstall-man8 -- - install-dataDATA: $(data_DATA) - @$(NORMAL_INSTALL) -- $(mkinstalldirs) $(DESTDIR)$(datadir) -+ $(mkdir_p) $(DESTDIR)$(datadir) - @list='$(data_DATA)'; for p in $$list; do \ -- if test -f $(srcdir)/$$p; then \ -- echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(datadir)/$$p"; \ -- $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(datadir)/$$p; \ -- else if test -f $$p; then \ -- echo " $(INSTALL_DATA) $$p $(DESTDIR)$(datadir)/$$p"; \ -- $(INSTALL_DATA) $$p $(DESTDIR)$(datadir)/$$p; \ -- fi; fi; \ -+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ -+ f="`echo $$p | sed -e 's|^.*/||'`"; \ -+ echo " $(dataDATA_INSTALL) $$d$$p $(DESTDIR)$(datadir)/$$f"; \ -+ $(dataDATA_INSTALL) $$d$$p $(DESTDIR)$(datadir)/$$f; \ - done - - uninstall-dataDATA: - @$(NORMAL_UNINSTALL) -- list='$(data_DATA)'; for p in $$list; do \ -- rm -f $(DESTDIR)$(datadir)/$$p; \ -+ @list='$(data_DATA)'; for p in $$list; do \ -+ f="`echo $$p | sed -e 's|^.*/||'`"; \ -+ echo " rm -f $(DESTDIR)$(datadir)/$$f"; \ -+ rm -f $(DESTDIR)$(datadir)/$$f; \ - done - --# This directory's subdirectories are mostly independent; you can cd --# into them and run `make' without going through this Makefile. --# To change the values of `make' variables: instead of editing Makefiles, --# (1) if the variable is set in `config.status', edit `config.status' --# (which will cause the Makefiles to be regenerated when you run `make'); --# (2) otherwise, pass the desired values on the `make' command line. -+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ mkid -fID $$unique -+tags: TAGS - --@SET_MAKE@ -+TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ test -z "$(ETAGS_ARGS)$$tags$$unique" \ -+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ $$tags $$unique -+ctags: CTAGS -+CTAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ test -z "$(CTAGS_ARGS)$$tags$$unique" \ -+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ -+ $$tags $$unique - --all-recursive install-data-recursive install-exec-recursive \ --installdirs-recursive install-recursive uninstall-recursive \ --check-recursive installcheck-recursive info-recursive dvi-recursive: -- @set fnord $(MAKEFLAGS); amf=$$2; \ -- dot_seen=no; \ -- target=`echo $@ | sed s/-recursive//`; \ -- list='$(SUBDIRS)'; for subdir in $$list; do \ -- echo "Making $$target in $$subdir"; \ -- if test "$$subdir" = "."; then \ -- dot_seen=yes; \ -- local_target="$$target-am"; \ -+GTAGS: -+ here=`$(am__cd) $(top_builddir) && pwd` \ -+ && cd $(top_srcdir) \ -+ && gtags -i $(GTAGS_ARGS) $$here -+ -+distclean-tags: -+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -+ -+distdir: $(DISTFILES) -+ $(am__remove_distdir) -+ mkdir $(distdir) -+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ -+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ -+ list='$(DISTFILES)'; for file in $$list; do \ -+ case $$file in \ -+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ -+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ -+ esac; \ -+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ -+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ -+ dir="/$$dir"; \ -+ $(mkdir_p) "$(distdir)$$dir"; \ - else \ -- local_target="$$target"; \ -+ dir=''; \ - fi; \ -- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ -- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ -- done; \ -- if test "$$dot_seen" = "no"; then \ -- $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ -- fi; test -z "$$fail" -- --mostlyclean-recursive clean-recursive distclean-recursive \ --maintainer-clean-recursive: -- @set fnord $(MAKEFLAGS); amf=$$2; \ -- dot_seen=no; \ -- rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ -- rev="$$subdir $$rev"; \ -- test "$$subdir" != "." || dot_seen=yes; \ -- done; \ -- test "$$dot_seen" = "no" && rev=". $$rev"; \ -- target=`echo $@ | sed s/-recursive//`; \ -- for subdir in $$rev; do \ -- echo "Making $$target in $$subdir"; \ -- if test "$$subdir" = "."; then \ -- local_target="$$target-am"; \ -+ if test -d $$d/$$file; then \ -+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ -+ fi; \ -+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ -- local_target="$$target"; \ -+ test -f $(distdir)/$$file \ -+ || cp -p $$d/$$file $(distdir)/$$file \ -+ || exit 1; \ - fi; \ -- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ -- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ -- done && test -z "$$fail" --tags-recursive: -- list='$(SUBDIRS)'; for subdir in $$list; do \ -- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -+ -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ -+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ -+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ -+ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ -+ || chmod -R a+r $(distdir) -+dist-gzip: distdir -+ $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -+ $(am__remove_distdir) - --tags: TAGS -- --ID: $(HEADERS) $(SOURCES) $(LISP) -- list='$(SOURCES) $(HEADERS)'; \ -- unique=`for i in $$list; do echo $$i; done | \ -- awk ' { files[$$0] = 1; } \ -- END { for (i in files) print i; }'`; \ -- here=`pwd` && cd $(srcdir) \ -- && mkid -f$$here/ID $$unique $(LISP) -- --TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP) -- tags=; \ -- here=`pwd`; \ -- list='$(SUBDIRS)'; for subdir in $$list; do \ -- if test "$$subdir" = .; then :; else \ -- test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ -- fi; \ -- done; \ -- list='$(SOURCES) $(HEADERS)'; \ -- unique=`for i in $$list; do echo $$i; done | \ -- awk ' { files[$$0] = 1; } \ -- END { for (i in files) print i; }'`; \ -- test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \ -- || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS) -- --mostlyclean-tags: -+dist-bzip2: distdir -+ $(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2 -+ $(am__remove_distdir) - --clean-tags: -+dist-tarZ: distdir -+ $(AMTAR) chof - $(distdir) | compress -c >$(distdir).tar.Z -+ $(am__remove_distdir) - --distclean-tags: -- -rm -f TAGS ID -+dist-shar: distdir -+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz -+ $(am__remove_distdir) - --maintainer-clean-tags: -+dist-zip: distdir -+ -rm -f $(distdir).zip -+ zip -rq $(distdir).zip $(distdir) -+ $(am__remove_distdir) - --distdir = $(PACKAGE)-$(VERSION) --top_distdir = $(distdir) -+dist dist-all: distdir -+ $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -+ $(am__remove_distdir) - - # This target untars the dist file and tries a VPATH configuration. Then - # it guarantees that the distribution is self-contained by making another - # tarfile. - distcheck: dist -- -rm -rf $(distdir) -- GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz -- mkdir $(distdir)/=build -- mkdir $(distdir)/=inst -- dc_install_base=`cd $(distdir)/=inst && pwd`; \ -- cd $(distdir)/=build \ -- && ../configure --srcdir=.. --prefix=$$dc_install_base \ -+ case '$(DIST_ARCHIVES)' in \ -+ *.tar.gz*) \ -+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - ;;\ -+ *.tar.bz2*) \ -+ bunzip2 -c $(distdir).tar.bz2 | $(AMTAR) xf - ;;\ -+ *.tar.Z*) \ -+ uncompress -c $(distdir).tar.Z | $(AMTAR) xf - ;;\ -+ *.shar.gz*) \ -+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | unshar ;;\ -+ *.zip*) \ -+ unzip $(distdir).zip ;;\ -+ esac -+ chmod -R a-w $(distdir); chmod a+w $(distdir) -+ mkdir $(distdir)/_build -+ mkdir $(distdir)/_inst -+ chmod a-w $(distdir) -+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ -+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ -+ && cd $(distdir)/_build \ -+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ -+ $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ -- && $(MAKE) $(AM_MAKEFLAGS) dist -- -rm -rf $(distdir) -- @banner="$(distdir).tar.gz is ready for distribution"; \ -- dashes=`echo "$$banner" | sed s/./=/g`; \ -- echo "$$dashes"; \ -- echo "$$banner"; \ -- echo "$$dashes" --dist: distdir -- -chmod -R a+r $(distdir) -- GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) -- -rm -rf $(distdir) --dist-all: distdir -- -chmod -R a+r $(distdir) -- GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) -- -rm -rf $(distdir) --distdir: $(DISTFILES) -- -rm -rf $(distdir) -- mkdir $(distdir) -- -chmod 777 $(distdir) -- @for file in $(DISTFILES); do \ -- d=$(srcdir); \ -- if test -d $$d/$$file; then \ -- cp -pr $$d/$$file $(distdir)/$$file; \ -- else \ -- test -f $(distdir)/$$file \ -- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ -- || cp -p $$d/$$file $(distdir)/$$file || :; \ -- fi; \ -- done -- for subdir in $(SUBDIRS); do \ -- if test "$$subdir" = .; then :; else \ -- test -d $(distdir)/$$subdir \ -- || mkdir $(distdir)/$$subdir \ -- || exit 1; \ -- chmod 777 $(distdir)/$$subdir; \ -- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ -- || exit 1; \ -- fi; \ -- done --devtree.o: devtree.c config.h getopt.h devtree.h list.h --lsusb.o: lsusb.c getopt.h usbdevice_fs.h usb.h config.h names.h \ -- devtree.h list.h --names.o: names.c getopt.h config.h names.h --usbmodules.o: usbmodules.c getopt.h usbdevice_fs.h usb.h config.h \ -- usbmodules.h names.h devtree.h list.h -- --info-am: --info: info-recursive --dvi-am: --dvi: dvi-recursive -+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ -+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ -+ distuninstallcheck \ -+ && chmod -R a-w "$$dc_install_base" \ -+ && ({ \ -+ (cd ../.. && $(mkdir_p) "$$dc_destdir") \ -+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ -+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ -+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ -+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ -+ } || { rm -rf "$$dc_destdir"; exit 1; }) \ -+ && rm -rf "$$dc_destdir" \ -+ && $(MAKE) $(AM_MAKEFLAGS) dist \ -+ && rm -rf $(DIST_ARCHIVES) \ -+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck -+ $(am__remove_distdir) -+ @(echo "$(distdir) archives ready for distribution: "; \ -+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ -+ sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' -+distuninstallcheck: -+ @cd $(distuninstallcheck_dir) \ -+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ -+ || { echo "ERROR: files left after uninstall:" ; \ -+ if test -n "$(DESTDIR)"; then \ -+ echo " (check DESTDIR support)"; \ -+ fi ; \ -+ $(distuninstallcheck_listfiles) ; \ -+ exit 1; } >&2 -+distcleancheck: distclean -+ @if test '$(srcdir)' = . ; then \ -+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ -+ exit 1 ; \ -+ fi -+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ -+ || { echo "ERROR: files left in build directory after distclean:" ; \ -+ $(distcleancheck_listfiles) ; \ -+ exit 1; } >&2 - check-am: all-am --check: check-recursive --installcheck-am: --installcheck: installcheck-recursive --all-recursive-am: config.h -- $(MAKE) $(AM_MAKEFLAGS) all-recursive -- --install-exec-am: install-sbinPROGRAMS --install-exec: install-exec-recursive -- --install-data-am: install-man install-dataDATA --install-data: install-data-recursive -+check: check-am -+all-am: Makefile $(PROGRAMS) $(MANS) $(DATA) $(HEADERS) config.h -+installdirs: -+ $(mkdir_p) $(DESTDIR)$(sbindir) $(DESTDIR)$(man8dir) $(DESTDIR)$(datadir) -+install: install-am -+install-exec: install-exec-am -+install-data: install-data-am -+uninstall: uninstall-am - - install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am --install: install-recursive --uninstall-am: uninstall-sbinPROGRAMS uninstall-man uninstall-dataDATA --uninstall: uninstall-recursive --all-am: Makefile $(PROGRAMS) $(MANS) $(DATA) $(HEADERS) config.h --all-redirect: all-recursive-am --install-strip: -- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install --installdirs: installdirs-recursive --installdirs-am: -- $(mkinstalldirs) $(DESTDIR)$(sbindir) $(DESTDIR)$(mandir)/man8 \ -- $(DESTDIR)$(datadir) -- - -+installcheck: installcheck-am -+install-strip: -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ `test -z '$(STRIP)' || \ -+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install - mostlyclean-generic: - - clean-generic: - - distclean-generic: -- -rm -f Makefile $(CONFIG_CLEAN_FILES) -- -rm -f config.cache config.log stamp-h stamp-h[0-9]* -+ -rm -f $(CONFIG_CLEAN_FILES) - - maintainer-clean-generic: --mostlyclean-am: mostlyclean-hdr mostlyclean-sbinPROGRAMS \ -- mostlyclean-compile mostlyclean-tags \ -- mostlyclean-generic -+ @echo "This command is intended for maintainers to use" -+ @echo "it deletes files that may require special tools to rebuild." -+clean: clean-am - --mostlyclean: mostlyclean-recursive -+clean-am: clean-generic clean-libtool clean-sbinPROGRAMS \ -+ mostlyclean-am - --clean-am: clean-hdr clean-sbinPROGRAMS clean-compile clean-tags \ -- clean-generic mostlyclean-am -+distclean: distclean-am -+ -rm -f $(am__CONFIG_DISTCLEAN_FILES) -+ -rm -rf $(DEPDIR) ./$(DEPDIR) -+ -rm -f Makefile -+distclean-am: clean-am distclean-compile distclean-generic \ -+ distclean-hdr distclean-libtool distclean-tags - --clean: clean-recursive -+dvi: dvi-am - --distclean-am: distclean-hdr distclean-sbinPROGRAMS distclean-compile \ -- distclean-tags distclean-generic clean-am -+dvi-am: - --distclean: distclean-recursive -- -rm -f config.status -+html: html-am - --maintainer-clean-am: maintainer-clean-hdr maintainer-clean-sbinPROGRAMS \ -- maintainer-clean-compile maintainer-clean-tags \ -- maintainer-clean-generic distclean-am -- @echo "This command is intended for maintainers to use;" -- @echo "it deletes files that may require special tools to rebuild." -+info: info-am - --maintainer-clean: maintainer-clean-recursive -- -rm -f config.status -+info-am: - --.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ --mostlyclean-sbinPROGRAMS distclean-sbinPROGRAMS clean-sbinPROGRAMS \ --maintainer-clean-sbinPROGRAMS uninstall-sbinPROGRAMS \ --install-sbinPROGRAMS mostlyclean-compile distclean-compile \ --clean-compile maintainer-clean-compile install-man8 uninstall-man8 \ --install-man uninstall-man uninstall-dataDATA install-dataDATA \ --install-data-recursive uninstall-data-recursive install-exec-recursive \ --uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ --all-recursive check-recursive installcheck-recursive info-recursive \ --dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ --maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ --distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ --dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \ --install-exec-am install-exec install-data-am install-data install-am \ --install uninstall-am uninstall all-redirect all-am all installdirs-am \ --installdirs mostlyclean-generic distclean-generic clean-generic \ --maintainer-clean-generic clean mostlyclean distclean maintainer-clean -+install-data-am: install-dataDATA install-man -+ -+install-exec-am: install-sbinPROGRAMS -+ -+install-info: install-info-am -+ -+install-man: install-man8 -+ -+installcheck-am: -+ -+maintainer-clean: maintainer-clean-am -+ -rm -f $(am__CONFIG_DISTCLEAN_FILES) -+ -rm -rf $(top_srcdir)/autom4te.cache -+ -rm -rf $(DEPDIR) ./$(DEPDIR) -+ -rm -f Makefile -+maintainer-clean-am: distclean-am maintainer-clean-generic -+ -+mostlyclean: mostlyclean-am -+ -+mostlyclean-am: mostlyclean-compile mostlyclean-generic \ -+ mostlyclean-libtool - -+pdf: pdf-am -+ -+pdf-am: -+ -+ps: ps-am -+ -+ps-am: -+ -+uninstall-am: uninstall-dataDATA uninstall-info-am uninstall-man \ -+ uninstall-sbinPROGRAMS -+ -+uninstall-man: uninstall-man8 -+ -+.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \ -+ clean-generic clean-libtool clean-sbinPROGRAMS ctags dist \ -+ dist-all dist-bzip2 dist-gzip dist-shar dist-tarZ dist-zip \ -+ distcheck distclean distclean-compile distclean-generic \ -+ distclean-hdr distclean-libtool distclean-tags distcleancheck \ -+ distdir distuninstallcheck dvi dvi-am html html-am info \ -+ info-am install install-am install-data install-data-am \ -+ install-dataDATA install-exec install-exec-am install-info \ -+ install-info-am install-man install-man8 install-sbinPROGRAMS \ -+ install-strip installcheck installcheck-am installdirs \ -+ maintainer-clean maintainer-clean-generic mostlyclean \ -+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ -+ pdf pdf-am ps ps-am tags uninstall uninstall-am \ -+ uninstall-dataDATA uninstall-info-am uninstall-man \ -+ uninstall-man8 uninstall-sbinPROGRAMS - - # Tell versions [3.59,3.63) of GNU make to not export all variables. - # Otherwise a system limit (for SysV at least) may be exceeded. ---- usbutils-0.11/configure.in~configure 2002-08-06 02:37:21.000000000 -0400 -+++ usbutils-0.11/configure.in 2004-01-26 17:15:58.000000000 -0500 -@@ -1,5 +1,6 @@ --AC_INIT(lsusb.c) --AC_CANONICAL_SYSTEM -+AC_INIT -+AC_CONFIG_SRCDIR([lsusb.c]) -+AC_CANONICAL_TARGET([]) - - AM_INIT_AUTOMAKE(usbutils, 0.11) - AM_CONFIG_HEADER(config.h) -@@ -10,6 +11,7 @@ - AC_ISC_POSIX - AC_PROG_CC - AM_PROG_CC_STDC -+AC_PROG_LIBTOOL - dnl AC_PROG_RANLIB - AC_C_CONST - AC_C_INLINE -@@ -20,8 +22,11 @@ - AC_CHECK_PROG(AS, as, as, as, as) - AC_CHECK_PROG(AR, ar, ar, ar, ar) - --AC_CHECK_HEADERS(getopt.h sys/ioctl.h syslog.h errno.h linux/usb.h linux/usbdevice_fs.h) --AC_CHECK_FUNCS(getopt_long,,LIBOBJS="$LIBOBJS getopt.o getopt1.o") -+AC_CHECK_HEADERS([getopt.h sys/ioctl.h syslog.h errno.h linux/usb.h linux/usbdevice_fs.h]) -+AC_CHECK_FUNCS(getopt_long,,[ -+ AC_LIBOBJ([getopt]) -+ AC_LIBOBJ([getopt1]) -+]) - - dnl set USBIDS_FILE in config.h. - if test "x${datadir}" = 'x${prefix}/share'; then -@@ -34,7 +39,5 @@ - AC_DEFINE_UNQUOTED(USBIDS_FILE, "${datadir}/usb.ids") - fi - --AC_CONFIG_SUBDIRS([libusb]) -- --AC_SUBST(LIBOBJS) --AC_OUTPUT([Makefile]) -+AC_CONFIG_FILES([Makefile]) -+AC_OUTPUT diff --git a/usbutils/usbutils_0.11+cvs20041108.bb b/usbutils/usbutils_0.11+cvs20041108.bb deleted file mode 100644 index e69de29bb2..0000000000 --- a/usbutils/usbutils_0.11+cvs20041108.bb +++ /dev/null diff --git a/usbutils/usbutils_0.11.bb b/usbutils/usbutils_0.11.bb deleted file mode 100644 index e69de29bb2..0000000000 --- a/usbutils/usbutils_0.11.bb +++ /dev/null |