summaryrefslogtreecommitdiff
path: root/usbutils
diff options
context:
space:
mode:
authorChris Larson <clarson@kergoth.com>2004-12-09 09:47:41 +0000
committerChris Larson <clarson@kergoth.com>2004-12-09 09:47:41 +0000
commit2c5b8ec6d95cf68650265941530e5ce38c8dd6d9 (patch)
treebf879bea7ef8517ba8c3d1286ef300401d3d484c /usbutils
parent101e2f1623def0a355d20aacb8bd93810703e834 (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.patch7817
-rw-r--r--usbutils/usbutils-0.11/configure.patch1121
-rw-r--r--usbutils/usbutils_0.11+cvs20041108.bb0
-rw-r--r--usbutils/usbutils_0.11.bb0
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