Tizen 2.1 base tizen_2.1 2.1b_release 2.2_release accepted/tizen_2.1/20130425.025058 submit/tizen_2.1/20130424.233330 submit/tizen_2.2/20130714.154656
authorJinkun Jang <jinkun.jang@samsung.com>
Tue, 12 Mar 2013 16:52:04 +0000 (01:52 +0900)
committerJinkun Jang <jinkun.jang@samsung.com>
Tue, 12 Mar 2013 16:52:04 +0000 (01:52 +0900)
47 files changed:
AUTHORS [new file with mode: 0644]
COPYING [new file with mode: 0644]
ChangeLog [new file with mode: 0644]
INSTALL [new file with mode: 0644]
Makefile.am [new file with mode: 0644]
Makefile.in [new file with mode: 0644]
NEWS [new file with mode: 0644]
README [new file with mode: 0644]
aclocal.m4 [new file with mode: 0644]
config.h.in [new file with mode: 0644]
configure [new file with mode: 0755]
configure.ac [new file with mode: 0644]
debian/README.Debian [new file with mode: 0644]
debian/bkup/usbutils-udeb.dirs [new file with mode: 0644]
debian/bkup/usbutils-udeb.substvars [new file with mode: 0644]
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/control.org [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/rules [new file with mode: 0755]
debian/rules.org [new file with mode: 0755]
debian/update-usbids.8 [new file with mode: 0644]
debian/usbutils.dirs [new file with mode: 0644]
debian/usbutils.links [new file with mode: 0644]
debian/usbutils.manpages [new file with mode: 0644]
depcomp [new file with mode: 0755]
devtree.c [new file with mode: 0644]
devtree.h [new file with mode: 0644]
install-sh [new file with mode: 0755]
list.h [new file with mode: 0644]
lsusb-t.c [new file with mode: 0644]
lsusb.8.in [new file with mode: 0644]
lsusb.c [new file with mode: 0644]
missing [new file with mode: 0755]
names.c [new file with mode: 0644]
names.h [new file with mode: 0644]
packaging/usbutils-rpmlintrc [new file with mode: 0644]
packaging/usbutils.spec [new file with mode: 0644]
packaging/usbutils_debian.patch [new file with mode: 0644]
update-usbids.sh.in [new file with mode: 0755]
usb-devices [new file with mode: 0755]
usb-devices.1.in [new file with mode: 0644]
usb.ids [new file with mode: 0644]
usbmisc.c [new file with mode: 0644]
usbmisc.h [new file with mode: 0644]
usbutils.pc.in [new file with mode: 0644]

diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..6a60e24
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,4 @@
+Thomas Sailer, <t.sailer@alumni.ethz.ch>
+Johannes Erdfelt
+David Brownell
+Aurelien Jarno
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..d60c31a
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,340 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..8ac9183
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,227 @@
+2009 Greg Kroah-Hartman <greg@kroah.com>
+       * switched over to git, look at the changelog there
+         instead of here.
+
+2007-12-03 David Brownell <dbrownell@users.sourceforge.net>
+       * configure, configure.h.in: autoreconf
+       * usb.ids: update to current version
+       * lsusb.c: fix minor layout glitch
+
+2007-11-14 Joe Peterson <lavajoe@gentoo.org>
+       * configure.in, lsusb.c: use AC_C_BIGENDIAN
+
+2007-11-05 David Brownell <dbrownell@users.sourceforge.net>
+       * configure, config.h.in: autoreconf
+       * usb.ids: update to current version
+
+2007-11-05 Joe Peterson <lavajoe@gentoo.org>
+       * configure.in, lsusb.c: use autotools instead of hard-coded
+         check for __FreeBSD__.
+
+2007-10-31 Joe Peterson <lavajoe@gentoo.org>
+       * lsusb.c: compile on FreeBSD
+
+2007-10-29 Robin H. Johnson <robbat2@gentoo.org>
+       * update-usbids.sh: add "-q" (quiet) option for cron jobs;
+         skip filesystems that are readonly
+
+2007-10-23 David Brownell <dbrownell@users.sourceforge.net>
+       * usb.ids: update to current version (with new maintainer)
+       * lsusb.c: Stop hiding unrecognized/misplaced class specific
+         descriptors.  Don't require compressed format for usb.ids
+         files; when an uncompressed one is there (probably installed
+         by hand), prefer it.
+       * Makefile.am: remove broken uninstall code, 2.4-only usbmodules
+       * configure.in, lsusb.8: version 0.73; syntax fix for disble-zlib
+         helpstring
+       * Makefile.in, configure: autoreconf
+
+2007-08-28 Brandon Philips <brandon@ifup.org>
+       * lsusb.c: Fix the offsets for the video class descriptors.
+
+2007-07-17 David Brownell <dbrownell@users.sourceforge.net>
+       * lsusb.c: use correct endpoint maxpacket mask
+
+2006-12-10 Aurelien Jarno <aurelien@aurel32.net> 
+       * lsusb.c, names.c, Makefile.am, configure.in: gzipped usb.ids
+       * configure, other autoconf stuff: regenerate 
+
+2006-12-10 David Brownell <dbrownell@users.sourceforge.net>
+       * lsusb.c: bugfix GUID printing; byteorder matches rfc 4122 
+       * usb.ids: update to current version
+
+2006-05-03 David Brownell <dbrownell@users.sourceforge.net>
+       * lsusb.c: handle another cdc descriptor type; endianness fix
+         for config descriptor length and endpoint maxpacket
+       * usb.ids: update to current version
+
+2006-02-28 David Brownell <dbrownell@users.sourceforge.net>
+       * configure.in, lsusb.8: version 0.72
+       * configure, other autoconf stuff: regenerate 
+
+2006-02-18 David Brownell <dbrownell@users.sourceforge.net>
+       * usbutils.spec: minor corrections; we still don't use this though.
+       * usbmodules.c, usbmodules.8: obsolete, don't build or distribute
+         it any more.  Any 2.4 based systems should use old usbutils.
+
+2006-02-13 Bjorn Augustsson <august@chalmers.se>
+       * lsusb.c: (HID) prettyprinting of Unit and Unit Exponent Global items
+
+2006-02-13 David Brownell <dbrownell@users.sourceforge.net>
+       * lsusb.c: whitespace fixes
+
+2006-02-06 Laurent Pinchart <laurent.pinchart@skynet.be>
+       * lsusb.c: update video support, show camera info
+
+2006-02-06 Vojtech Pavlik <vojtech@suse.cz>
+       * usb.ids: updated 
+
+2006-02-01 David Brownell <dbrownell@users.sourceforge.net>
+       * lsusb.c: allow longer variable length bitfields in hub descriptors;
+         ignore all clearly-broken hub descriptors
+
+2006-01-17  NIIBE Yutaka  <gniibe@fsij.org>
+       * lsusb.c (dump_hub): Format string fix.
+         (do_hub): Allocate enough space for the hub descriptor.
+         Check return value in different way.
+
+2005-11-03 David Brownell <dbrownell@users.sourceforge.net>
+       * lsusb.c: better diagnostics: for invalid CDC descriptors of a
+         type we know, show that type with the message.
+
+2005-10-21 Laurent Pinchart <laurent.pinchart@skynet.be>
+       * lsusb.c: add Video Class support, standard GUID printing
+       * names.c: support video terminal tags
+       * usb.ids: updated with video terminal tags
+
+2005-10-08 David Brownell <dbrownell@users.sourceforge.net>
+       * lsusb.c: dump interface associations
+
+2005-09-26 David Brownell <dbrownell@users.sourceforge.net>
+       * lsusb.c: dump device status; start dumping wireless info.  don't
+         yet dump security, BOS, "endpoint companion", or other new
+         descriptors.  (Security can work without wireles support...)
+       * usb.ids: update to current version
+
+2005-06-19 Aurelien Jarno <aurelien@aurel32.net> 
+       * lsusb.c: correct dump of CCID supported voltages
+
+2005-05-14 David Brownell <dbrownell@users.sourceforge.net>
+       Label as version 0.71
+       * usb.ids: update to current version
+
+2005-05-13 Toby Ernst <tee@sgi.com>
+       * lsusb.c: /proc/bus/usb/BBB/DDD numbers are decimal not octal
+       * lsusb.8: ditto
+
+2005-04-29 Olaf Hering <olh@suse.de>
+       * lsusb.c: fix some compiler warnings
+
+2005-04-14 David Brownell <dbrownell@users.sourceforge.net>
+       * lsusb.c: add some more CDC WHCM dumping, matching a Sony 3G phone
+
+2005-03-28 Aurelien Jarno <aurelien@aurel32.net> 
+       * lsusb.c: disallow decimal product and vendor codes (hex only)
+
+2005-03-05 David Brownell <dbrownell@users.sourceforge.net>
+       * lsusb.c: add basic CDC MDLM dumping, to cope with new CDC
+         conformance lies from a Zaurus C-860
+
+2005-02-11 Thierry Vignaud <tvignaud@mandrakesoft.com>
+       * usbmodules.8: fix --device /proc/usb/usb/BBB/DDD typo
+
+2005-02-02 David Brownell <dbrownell@users.sourceforge.net>
+       * configure.in: fix typo, recommend libusb 0.1.8 not 1.8
+
+2005-01-30 David Brownell <dbrownell@users.sourceforge.net>
+       Fix some more warnings reported by Aurelian, and configure
+       gcc for "-W -Wunused" to discourage more from appearing.
+
+2005-01-27 Aurelien Jarno <aurelien@aurel32.net> 
+       Fix "configure --enable-usbmodules" glitch, and remove
+       some warnings reported by GCC 4.0 (and "gcc -Wall -W").
+
+2005-01-22 David Brownell <dbrownell@users.sourceforge.net>
+       * lsusb.c:  for hubs, dump port status.
+       * AUTHORS, NEWS, README, lsusb.8:  update/correct
+       * configure.in, Makefile.am: bumped version, use more current
+         autotools, disable usbmodules by default.
+
+2005-01-05 David Brownell <dbrownell@users.sourceforge.net>
+       * lsusb.c:  handle more descriptors; misplaced comm descriptors
+         get interpreted; some minor fixes.
+       * usb.ids: update to current version
+
+2004-12-11 David Brownell <dbrownell@users.sourceforge.net>
+       * update-usbids.sh:  add, based on update-pciids.sh
+
+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.
+
+2002-08-02 Pedro Lopez-Cabanillas <plcl@users.sourceforge.net>
+       * lsusb.c: (against 0.10) recognize USB MIDI class specific descriptors.
+
+2000-11-06  Thomas Sailer  <sailer@eldrich.ee.ethz.ch>
+
+       * names.c, lsusb.c: Fixup of Gunther Mayer's patch; do not export
+       internal storage arch out of names.h; formatting beautification;
+       fixed several memory leaks and scribbles
+
+2000-11-05  Gunther Mayer <Gunther.Mayer@t-online.de>
+       * lsusb.c: Hub Descriptor decode
+       * usb.std: New
+       * lsusb.c: HID Report Descriptor decode
+       * lsusb.c: String Descriptors w/ LANGID, assume Unicode-ASCII for the moment
+
+2000-11-03  Adam J. Richter  <adam@yggdrasil.com>
+
+       * lsusb.c: Retry usb_control.
+
+1999-12-03  Thomas Sailer  <sailer@spaceballs.ee.ethz.ch>
+
+       * lsusb.c: bogus error checks for open calls, reported by Matthew Darm
+
+1999-09-17  Thomas Sailer  <sailer@ife.ee.ethz.ch>
+
+       * configure.in: bumped version number.
+
+       * usbutils.spec: likewise.
+
+       * names.c: added parsing routines for terminal types to be listed in usb.ids
+
+       * names.h: likewise.
+
+       * lsusb.c (dump_audiocontrol_interface): likewise.
+
+1999-09-16  Thomas Sailer  <sailer@ife.ee.ethz.ch>
+
+       * lsusb.c (dump_audiocontrol_interface): fixed a couple of forgotten printf arguments
+
+1999-09-13  Thomas Sailer  <sailer@ife.ee.ethz.ch>
+
+       * Created package
+
diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..b42a17a
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,182 @@
+Basic Installation
+==================
+
+   These are generic installation instructions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+   The file `configure.in' is used to create `configure' by a program
+called `autoconf'.  You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.  If you're
+     using `csh' on an old version of System V, you might need to type
+     `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
+
+     Running `configure' takes awhile.  While running, it prints some
+     messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.
+
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  You can give `configure'
+initial values for variables by setting them in the environment.  Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+   If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory.  After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+   By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc.  You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on.  Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+     CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+   If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+     Use and save the results of the tests in FILE instead of
+     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
+     debugging `configure'.
+
+`--help'
+     Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--version'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..cce16b5
--- /dev/null
@@ -0,0 +1,73 @@
+AM_LDFLAGS = \
+       -Wl,--as-needed
+
+data_DATA = \
+       usb.ids
+if HAVE_ZLIB
+data_DATA += usb.ids.gz
+endif
+
+sbin_PROGRAMS = \
+       lsusb
+
+sbin_SCRIPTS = \
+       update-usbids.sh
+
+bin_SCRIPTS = \
+       usb-devices
+
+lsusb_SOURCES = \
+       lsusb.c \
+       lsusb-t.c \
+       list.h \
+       names.c names.h \
+       devtree.c devtree.h \
+       usbmisc.c usbmisc.h
+
+lsusb_CPPFLAGS = \
+       $(AM_CPPFLAGS) \
+       -DDATADIR=\"$(datadir)\"
+
+lsusb_LDADD = \
+       $(LIBUSB_LIBS)
+
+man_MANS = \
+       lsusb.8 \
+       usb-devices.1
+
+EXTRA_DIST = \
+       usb.ids \
+       update-usbids.sh.in \
+       lsusb.8.in \
+       usb-devices.1.in \
+       usb-devices \
+       usbutils.pc.in
+
+usb.ids.gz: $(srcdir)/usb.ids
+       gzip -c -9 $< > $@
+
+update-usbids.sh: $(srcdir)/update-usbids.sh.in
+       sed 's|@usbids@|$(datadir)/usb.ids|g' $< >$@
+       chmod 755 $@
+
+lsusb.8: $(srcdir)/lsusb.8.in
+       sed 's|VERSION|$(VERSION)|g;s|@usbids@|$(datadir)/usb.ids|g' $< >$@
+
+usb-devices.1: $(srcdir)/usb-devices.1.in
+       sed 's|VERSION|$(VERSION)|g' $< >$@
+
+pkgconfigdir = $(datadir)/pkgconfig
+pkgconfig_DATA = usbutils.pc
+
+usbutils.pc: $(srcdir)/usbutils.pc.in
+       sed 's|@usbids@|$(datadir)/usb.ids|g;s|@VERSION[@]|$(VERSION)|g' $< >$@
+
+DISTCLEANFILES = \
+       usb.ids.gz \
+       lsusb.8 \
+       usb-devices.1 \
+       update-usbids.sh \
+       usbutils.pc
+
+distclean-local:
+       rm -rf autom4te.cache
diff --git a/Makefile.in b/Makefile.in
new file mode 100644 (file)
index 0000000..a93a363
--- /dev/null
@@ -0,0 +1,899 @@
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008  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.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+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 = :
+@HAVE_ZLIB_TRUE@am__append_1 = usb.ids.gz
+sbin_PROGRAMS = lsusb$(EXEEXT)
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+       $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
+       depcomp install-sh missing
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(bindir)" \
+       "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man1dir)" \
+       "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(datadir)" \
+       "$(DESTDIR)$(pkgconfigdir)"
+sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(sbin_PROGRAMS)
+am_lsusb_OBJECTS = lsusb-lsusb.$(OBJEXT) lsusb-lsusb-t.$(OBJEXT) \
+       lsusb-names.$(OBJEXT) lsusb-devtree.$(OBJEXT) \
+       lsusb-usbmisc.$(OBJEXT)
+lsusb_OBJECTS = $(am_lsusb_OBJECTS)
+am__DEPENDENCIES_1 =
+lsusb_DEPENDENCIES = $(am__DEPENDENCIES_1)
+binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
+sbinSCRIPT_INSTALL = $(INSTALL_SCRIPT)
+SCRIPTS = $(bin_SCRIPTS) $(sbin_SCRIPTS)
+DEFAULT_INCLUDES = -I.@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+       $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(lsusb_SOURCES)
+DIST_SOURCES = $(lsusb_SOURCES)
+man1dir = $(mandir)/man1
+man8dir = $(mandir)/man8
+NROFF = nroff
+MANS = $(man_MANS)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+dataDATA_INSTALL = $(INSTALL_DATA)
+pkgconfigDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(data_DATA) $(pkgconfig_DATA)
+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 $(distdir).tar.bz2
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBUSB_CFLAGS = @LIBUSB_CFLAGS@
+LIBUSB_LIBS = @LIBUSB_LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+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@
+PKG_CONFIG = @PKG_CONFIG@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AM_LDFLAGS = \
+       -Wl,--as-needed
+
+data_DATA = usb.ids $(am__append_1)
+sbin_SCRIPTS = \
+       update-usbids.sh
+
+bin_SCRIPTS = \
+       usb-devices
+
+lsusb_SOURCES = \
+       lsusb.c \
+       lsusb-t.c \
+       list.h \
+       names.c names.h \
+       devtree.c devtree.h \
+       usbmisc.c usbmisc.h
+
+lsusb_CPPFLAGS = \
+       $(AM_CPPFLAGS) \
+       -DDATADIR=\"$(datadir)\"
+
+lsusb_LDADD = \
+       $(LIBUSB_LIBS)
+
+man_MANS = \
+       lsusb.8 \
+       usb-devices.1
+
+EXTRA_DIST = \
+       usb.ids \
+       update-usbids.sh.in \
+       lsusb.8.in \
+       usb-devices.1.in \
+       usb-devices \
+       usbutils.pc.in
+
+pkgconfigdir = $(datadir)/pkgconfig
+pkgconfig_DATA = usbutils.pc
+DISTCLEANFILES = \
+       usb.ids.gz \
+       lsusb.8 \
+       usb-devices.1 \
+       update-usbids.sh \
+       usbutils.pc
+
+all: config.h
+       $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .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) --foreign '; \
+             cd $(srcdir) && $(AUTOMAKE) --foreign  \
+               && exit 0; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  Makefile'; \
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --foreign  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;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       $(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+       cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+       cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+config.h: stamp-h1
+       @if test ! -f $@; then \
+         rm -f stamp-h1; \
+         $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
+       else :; fi
+
+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) 
+       cd $(top_srcdir) && $(AUTOHEADER)
+       rm -f stamp-h1
+       touch $@
+
+distclean-hdr:
+       -rm -f config.h stamp-h1
+install-sbinPROGRAMS: $(sbin_PROGRAMS)
+       @$(NORMAL_INSTALL)
+       test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
+       @list='$(sbin_PROGRAMS)'; for p in $$list; do \
+         p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+         if test -f $$p \
+         ; then \
+           f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+          echo " $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(sbindir)/$$f'"; \
+          $(INSTALL_PROGRAM_ENV) $(sbinPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(sbindir)/$$f" || exit 1; \
+         else :; fi; \
+       done
+
+uninstall-sbinPROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @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
+
+clean-sbinPROGRAMS:
+       -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
+lsusb$(EXEEXT): $(lsusb_OBJECTS) $(lsusb_DEPENDENCIES) 
+       @rm -f lsusb$(EXEEXT)
+       $(LINK) $(lsusb_OBJECTS) $(lsusb_LDADD) $(LIBS)
+install-binSCRIPTS: $(bin_SCRIPTS)
+       @$(NORMAL_INSTALL)
+       test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+       @list='$(bin_SCRIPTS)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         if test -f $$d$$p; then \
+           f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+           echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+           $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
+         else :; fi; \
+       done
+
+uninstall-binSCRIPTS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(bin_SCRIPTS)'; for p in $$list; do \
+         f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+         echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+         rm -f "$(DESTDIR)$(bindir)/$$f"; \
+       done
+install-sbinSCRIPTS: $(sbin_SCRIPTS)
+       @$(NORMAL_INSTALL)
+       test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
+       @list='$(sbin_SCRIPTS)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         if test -f $$d$$p; then \
+           f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+           echo " $(sbinSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(sbindir)/$$f'"; \
+           $(sbinSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(sbindir)/$$f"; \
+         else :; fi; \
+       done
+
+uninstall-sbinSCRIPTS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(sbin_SCRIPTS)'; for p in $$list; do \
+         f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+         echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \
+         rm -f "$(DESTDIR)$(sbindir)/$$f"; \
+       done
+
+mostlyclean-compile:
+       -rm -f *.$(OBJEXT)
+
+distclean-compile:
+       -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lsusb-devtree.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lsusb-lsusb-t.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lsusb-lsusb.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lsusb-names.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lsusb-usbmisc.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@   $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+lsusb-lsusb.o: lsusb.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lsusb-lsusb.o -MD -MP -MF $(DEPDIR)/lsusb-lsusb.Tpo -c -o lsusb-lsusb.o `test -f 'lsusb.c' || echo '$(srcdir)/'`lsusb.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/lsusb-lsusb.Tpo $(DEPDIR)/lsusb-lsusb.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lsusb.c' object='lsusb-lsusb.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lsusb-lsusb.o `test -f 'lsusb.c' || echo '$(srcdir)/'`lsusb.c
+
+lsusb-lsusb.obj: lsusb.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lsusb-lsusb.obj -MD -MP -MF $(DEPDIR)/lsusb-lsusb.Tpo -c -o lsusb-lsusb.obj `if test -f 'lsusb.c'; then $(CYGPATH_W) 'lsusb.c'; else $(CYGPATH_W) '$(srcdir)/lsusb.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/lsusb-lsusb.Tpo $(DEPDIR)/lsusb-lsusb.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lsusb.c' object='lsusb-lsusb.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lsusb-lsusb.obj `if test -f 'lsusb.c'; then $(CYGPATH_W) 'lsusb.c'; else $(CYGPATH_W) '$(srcdir)/lsusb.c'; fi`
+
+lsusb-lsusb-t.o: lsusb-t.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lsusb-lsusb-t.o -MD -MP -MF $(DEPDIR)/lsusb-lsusb-t.Tpo -c -o lsusb-lsusb-t.o `test -f 'lsusb-t.c' || echo '$(srcdir)/'`lsusb-t.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/lsusb-lsusb-t.Tpo $(DEPDIR)/lsusb-lsusb-t.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lsusb-t.c' object='lsusb-lsusb-t.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lsusb-lsusb-t.o `test -f 'lsusb-t.c' || echo '$(srcdir)/'`lsusb-t.c
+
+lsusb-lsusb-t.obj: lsusb-t.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lsusb-lsusb-t.obj -MD -MP -MF $(DEPDIR)/lsusb-lsusb-t.Tpo -c -o lsusb-lsusb-t.obj `if test -f 'lsusb-t.c'; then $(CYGPATH_W) 'lsusb-t.c'; else $(CYGPATH_W) '$(srcdir)/lsusb-t.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/lsusb-lsusb-t.Tpo $(DEPDIR)/lsusb-lsusb-t.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='lsusb-t.c' object='lsusb-lsusb-t.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lsusb-lsusb-t.obj `if test -f 'lsusb-t.c'; then $(CYGPATH_W) 'lsusb-t.c'; else $(CYGPATH_W) '$(srcdir)/lsusb-t.c'; fi`
+
+lsusb-names.o: names.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lsusb-names.o -MD -MP -MF $(DEPDIR)/lsusb-names.Tpo -c -o lsusb-names.o `test -f 'names.c' || echo '$(srcdir)/'`names.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/lsusb-names.Tpo $(DEPDIR)/lsusb-names.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='names.c' object='lsusb-names.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lsusb-names.o `test -f 'names.c' || echo '$(srcdir)/'`names.c
+
+lsusb-names.obj: names.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lsusb-names.obj -MD -MP -MF $(DEPDIR)/lsusb-names.Tpo -c -o lsusb-names.obj `if test -f 'names.c'; then $(CYGPATH_W) 'names.c'; else $(CYGPATH_W) '$(srcdir)/names.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/lsusb-names.Tpo $(DEPDIR)/lsusb-names.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='names.c' object='lsusb-names.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lsusb-names.obj `if test -f 'names.c'; then $(CYGPATH_W) 'names.c'; else $(CYGPATH_W) '$(srcdir)/names.c'; fi`
+
+lsusb-devtree.o: devtree.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lsusb-devtree.o -MD -MP -MF $(DEPDIR)/lsusb-devtree.Tpo -c -o lsusb-devtree.o `test -f 'devtree.c' || echo '$(srcdir)/'`devtree.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/lsusb-devtree.Tpo $(DEPDIR)/lsusb-devtree.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='devtree.c' object='lsusb-devtree.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lsusb-devtree.o `test -f 'devtree.c' || echo '$(srcdir)/'`devtree.c
+
+lsusb-devtree.obj: devtree.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lsusb-devtree.obj -MD -MP -MF $(DEPDIR)/lsusb-devtree.Tpo -c -o lsusb-devtree.obj `if test -f 'devtree.c'; then $(CYGPATH_W) 'devtree.c'; else $(CYGPATH_W) '$(srcdir)/devtree.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/lsusb-devtree.Tpo $(DEPDIR)/lsusb-devtree.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='devtree.c' object='lsusb-devtree.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lsusb-devtree.obj `if test -f 'devtree.c'; then $(CYGPATH_W) 'devtree.c'; else $(CYGPATH_W) '$(srcdir)/devtree.c'; fi`
+
+lsusb-usbmisc.o: usbmisc.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lsusb-usbmisc.o -MD -MP -MF $(DEPDIR)/lsusb-usbmisc.Tpo -c -o lsusb-usbmisc.o `test -f 'usbmisc.c' || echo '$(srcdir)/'`usbmisc.c
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/lsusb-usbmisc.Tpo $(DEPDIR)/lsusb-usbmisc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='usbmisc.c' object='lsusb-usbmisc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lsusb-usbmisc.o `test -f 'usbmisc.c' || echo '$(srcdir)/'`usbmisc.c
+
+lsusb-usbmisc.obj: usbmisc.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lsusb-usbmisc.obj -MD -MP -MF $(DEPDIR)/lsusb-usbmisc.Tpo -c -o lsusb-usbmisc.obj `if test -f 'usbmisc.c'; then $(CYGPATH_W) 'usbmisc.c'; else $(CYGPATH_W) '$(srcdir)/usbmisc.c'; fi`
+@am__fastdepCC_TRUE@   mv -f $(DEPDIR)/lsusb-usbmisc.Tpo $(DEPDIR)/lsusb-usbmisc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='usbmisc.c' object='lsusb-usbmisc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lsusb_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lsusb-usbmisc.obj `if test -f 'usbmisc.c'; then $(CYGPATH_W) 'usbmisc.c'; else $(CYGPATH_W) '$(srcdir)/usbmisc.c'; fi`
+install-man1: $(man1_MANS) $(man_MANS)
+       @$(NORMAL_INSTALL)
+       test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
+       @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+       l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+       for i in $$l2; do \
+         case "$$i" in \
+           *.1*) list="$$list $$i" ;; \
+         esac; \
+       done; \
+       for i in $$list; do \
+         if test -f $$i; then file=$$i; \
+         else file=$(srcdir)/$$i; fi; \
+         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+         case "$$ext" in \
+           1*) ;; \
+           *) ext='1' ;; \
+         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)$(man1dir)/$$inst'"; \
+         $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
+       done
+uninstall-man1:
+       @$(NORMAL_UNINSTALL)
+       @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+       l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+       for i in $$l2; do \
+         case "$$i" in \
+           *.1*) list="$$list $$i" ;; \
+         esac; \
+       done; \
+       for i in $$list; do \
+         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+         case "$$ext" in \
+           1*) ;; \
+           *) ext='1' ;; \
+         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)$(man1dir)/$$inst'"; \
+         rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
+       done
+install-man8: $(man8_MANS) $(man_MANS)
+       @$(NORMAL_INSTALL)
+       test -z "$(man8dir)" || $(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; \
+       done; \
+       for i in $$list; do \
+         if test -f $$i; then file=$$i; \
+         else file=$(srcdir)/$$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:
+       @$(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-dataDATA: $(data_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(datadir)" || $(MKDIR_P) "$(DESTDIR)$(datadir)"
+       @list='$(data_DATA)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f=$(am__strip_dir) \
+         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 \
+         f=$(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(datadir)/$$f'"; \
+         rm -f "$(DESTDIR)$(datadir)/$$f"; \
+       done
+install-pkgconfigDATA: $(pkgconfig_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
+       @list='$(pkgconfig_DATA)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f=$(am__strip_dir) \
+         echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
+         $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+       done
+
+uninstall-pkgconfigDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(pkgconfig_DATA)'; for p in $$list; do \
+         f=$(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
+       done
+
+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; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+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; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+           $$tags $$unique; \
+       fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       tags=; \
+       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; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$tags $$unique
+
+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)
+       @case `sed 15q $(srcdir)/NEWS` in \
+       *"$(VERSION)"*) : ;; \
+       *) \
+         echo "NEWS not updated; not releasing" 1>&2; \
+         exit 1;; \
+       esac
+       $(am__remove_distdir)
+       test -d $(distdir) || mkdir $(distdir)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           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 \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       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 $(install_sh) -c -m a+r {} {} \; \
+       || chmod -R a+r $(distdir)
+dist-gzip: distdir
+       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       $(am__remove_distdir)
+dist-bzip2: distdir
+       tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+       $(am__remove_distdir)
+
+dist-lzma: distdir
+       tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+       $(am__remove_distdir)
+
+dist-tarZ: distdir
+       tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+       $(am__remove_distdir)
+
+dist-shar: distdir
+       shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+       $(am__remove_distdir)
+
+dist-zip: distdir
+       -rm -f $(distdir).zip
+       zip -rq $(distdir).zip $(distdir)
+       $(am__remove_distdir)
+
+dist dist-all: distdir
+       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+       tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+       $(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
+       case '$(DIST_ARCHIVES)' in \
+       *.tar.gz*) \
+         GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+       *.tar.bz2*) \
+         bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+       *.tar.lzma*) \
+         unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
+       *.tar.Z*) \
+         uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+       *.shar.gz*) \
+         GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.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) uninstall \
+         && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+               distuninstallcheck \
+         && chmod -R a-w "$$dc_install_base" \
+         && ({ \
+              (cd ../.. && umask 077 && mkdir "$$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 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$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-am
+all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(MANS) $(DATA) config.h
+installdirs:
+       for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(datadir)" "$(DESTDIR)$(pkgconfigdir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+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
+
+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:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-sbinPROGRAMS mostlyclean-am
+
+distclean: distclean-am
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+       distclean-hdr distclean-local distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-dataDATA install-man install-pkgconfigDATA
+
+install-dvi: install-dvi-am
+
+install-exec-am: install-binSCRIPTS install-sbinPROGRAMS \
+       install-sbinSCRIPTS
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man: install-man1 install-man8
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f $(am__CONFIG_DISTCLEAN_FILES)
+       -rm -rf $(top_srcdir)/autom4te.cache
+       -rm -rf ./$(DEPDIR)
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binSCRIPTS uninstall-dataDATA uninstall-man \
+       uninstall-pkgconfigDATA uninstall-sbinPROGRAMS \
+       uninstall-sbinSCRIPTS
+
+uninstall-man: uninstall-man1 uninstall-man8
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \
+       clean-generic clean-sbinPROGRAMS ctags dist dist-all \
+       dist-bzip2 dist-gzip dist-lzma dist-shar dist-tarZ dist-zip \
+       distcheck distclean distclean-compile distclean-generic \
+       distclean-hdr distclean-local distclean-tags distcleancheck \
+       distdir distuninstallcheck dvi dvi-am html html-am info \
+       info-am install install-am install-binSCRIPTS install-data \
+       install-data-am install-dataDATA install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-man1 \
+       install-man8 install-pdf install-pdf-am install-pkgconfigDATA \
+       install-ps install-ps-am install-sbinPROGRAMS \
+       install-sbinSCRIPTS install-strip installcheck installcheck-am \
+       installdirs maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \
+       ps ps-am tags uninstall uninstall-am uninstall-binSCRIPTS \
+       uninstall-dataDATA uninstall-man uninstall-man1 uninstall-man8 \
+       uninstall-pkgconfigDATA uninstall-sbinPROGRAMS \
+       uninstall-sbinSCRIPTS
+
+
+usb.ids.gz: $(srcdir)/usb.ids
+       gzip -c -9 $< > $@
+
+update-usbids.sh: $(srcdir)/update-usbids.sh.in
+       sed 's|@usbids@|$(datadir)/usb.ids|g' $< >$@
+       chmod 755 $@
+
+lsusb.8: $(srcdir)/lsusb.8.in
+       sed 's|VERSION|$(VERSION)|g;s|@usbids@|$(datadir)/usb.ids|g' $< >$@
+
+usb-devices.1: $(srcdir)/usb-devices.1.in
+       sed 's|VERSION|$(VERSION)|g' $< >$@
+
+usbutils.pc: $(srcdir)/usbutils.pc.in
+       sed 's|@usbids@|$(datadir)/usb.ids|g;s|@VERSION[@]|$(VERSION)|g' $< >$@
+
+distclean-local:
+       rm -rf autom4te.cache
+# 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.
+.NOEXPORT:
diff --git a/NEWS b/NEWS
new file mode 100644 (file)
index 0000000..62955fe
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,48 @@
+usbutils 0.86
+=============
+HID device robust fix
+
+usbutils 0.85
+=============
+usb-devices bugfixes
+build fixes
+
+usbutils 0.84
+=============
+Sync up usb.ids file from upstream
+
+usbutils 0.83
+=============
+HID descriptor bugfixes
+usb-devices script to emulate the /proc/bus/usb/devices file
+new device ids
+
+usbutils 0.82
+=============
+Wireless USB device support
+better autoconf support.
+automatic handling for usb.ids
+bugfixes
+
+usbutils 0.81
+=============
+fixed '-t' option if usbfs is not mounted
+added DFU parsing
+updated the man page
+
+usbutils 0.80
+=============
+Updated usb.ids.
+Updated autotools logic.
+Removed obsolete usbmodules.
+
+usbutils 0.73 (and older)
+=============
+Thanks to a patch from Aurelien Jarno, usbutils now uses the system's
+libusb to access USB devices, not a private (old) copy of that library.
+
+The "usbmodules" program is now deprecated, and no longer built by default.
+If your Linux 2.4 based system needs it to handle the "coldplug" processing
+(handling devices that exist before the OS is fully operational), you
+can "configure --enable-usbmodules".
+
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..39ce782
--- /dev/null
+++ b/README
@@ -0,0 +1,3 @@
+initialize autobuild with:
+  autoreconf --install --symlink
+  ./configure
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644 (file)
index 0000000..6cccc51
--- /dev/null
@@ -0,0 +1,1033 @@
+# generated automatically by aclocal 1.10.2 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# This file 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.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],,
+[m4_warning([this file was generated for autoconf 2.63.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+# 
+# Copyright Â© 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+       AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+       _pkg_min_version=m4_default([$1], [0.9.0])
+       AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+               AC_MSG_RESULT([yes])
+       else
+               AC_MSG_RESULT([no])
+               PKG_CONFIG=""
+       fi
+               
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists.  Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure to call
+# PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+  m4_ifval([$2], [$2], [:])
+m4_ifvaln([$3], [else
+  $3])dnl
+fi])
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+    pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+    PKG_CHECK_EXISTS([$3],
+                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+                    [pkg_failed=yes])
+ else
+    pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+        _PKG_SHORT_ERRORS_SUPPORTED
+        if test $_pkg_short_errors_supported = yes; then
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1`
+        else 
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+       ifelse([$4], , [AC_MSG_ERROR(dnl
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT
+])],
+               [AC_MSG_RESULT([no])
+                $4])
+elif test $pkg_failed = untried; then
+       ifelse([$4], , [AC_MSG_FAILURE(dnl
+[The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
+               [$4])
+else
+       $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+       $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        AC_MSG_RESULT([yes])
+       ifelse([$3], , :, [$3])
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+#
+# This file 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.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.10'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.10.2], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.10.2])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file 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.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 8
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+# Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 9
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
+       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                   [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file 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.
+
+#serial 4
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[# Autoconf 2.62 quotes --file arguments for eval, but not when files
+# are listed without --file.  Let's play safe and only enable the eval
+# if we detect the quoting.
+case $CONFIG_FILES in
+*\'*) eval set x "$CONFIG_FILES" ;;
+*)   set x $CONFIG_FILES ;;
+esac
+shift
+for mf
+do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # Grep'ing the whole file is not good either: AIX grep has a line
+  # limit of 2048, but all sed's we know have understand at least 4000.
+  if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+    dirpart=`AS_DIRNAME("$mf")`
+  else
+    continue
+  fi
+  # Extract the definition of DEPDIR, am__include, and am__quote
+  # from the Makefile without running `make'.
+  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  am__include=`sed -n 's/^am__include = //p' < "$mf"`
+  test -z "am__include" && continue
+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n 's/^U = //p' < "$mf"`
+  # Find all dependency output files, they are included files with
+  # $(DEPDIR) in their names.  We invoke sed twice because it is the
+  # simplest approach to changing $(DEPDIR) to its actual value in the
+  # expansion.
+  for file in `sed -n "
+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`AS_DIRNAME(["$file"])`
+    AS_MKDIR_P([$dirpart/$fdir])
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 13
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.60])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+              [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+                            [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                  [_AM_DEPENDENCIES(CC)],
+                  [define([AC_PROG_CC],
+                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                  [_AM_DEPENDENCIES(CXX)],
+                  [define([AC_PROG_CXX],
+                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+                  [_AM_DEPENDENCIES(OBJC)],
+                  [define([AC_PROG_OBJC],
+                          defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file 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.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes.                 -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 3
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 5
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
+#
+# This file 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.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+  [[\\/$]]* | ?:[[\\/]]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008  Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 4
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 4
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$[*]" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$[*]" != "X $srcdir/configure conftest.file" \
+      && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file 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.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006  Free Software Foundation, Inc.
+#
+# This file 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.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [m4_case([$1], [ustar],, [pax],,
+              [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+  case $_am_tool in
+  gnutar)
+    for _am_tar in tar gnutar gtar;
+    do
+      AM_RUN_LOG([$_am_tar --version]) && break
+    done
+    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+    am__untar="$_am_tar -xf -"
+    ;;
+  plaintar)
+    # Must skip GNU tar: if it does not support --format= it doesn't create
+    # ustar tarball either.
+    (tar --version) >/dev/null 2>&1 && continue
+    am__tar='tar chf - "$$tardir"'
+    am__tar_='tar chf - "$tardir"'
+    am__untar='tar xf -'
+    ;;
+  pax)
+    am__tar='pax -L -x $1 -w "$$tardir"'
+    am__tar_='pax -L -x $1 -w "$tardir"'
+    am__untar='pax -r'
+    ;;
+  cpio)
+    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+    am__untar='cpio -i -H $1 -d'
+    ;;
+  none)
+    am__tar=false
+    am__tar_=false
+    am__untar=false
+    ;;
+  esac
+
+  # If the value was cached, stop now.  We just wanted to have am__tar
+  # and am__untar set.
+  test -n "${am_cv_prog_tar_$1}" && break
+
+  # tar/untar a dummy directory, and stop if the command works
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  echo GrepMe > conftest.dir/file
+  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  rm -rf conftest.dir
+  if test -s conftest.tar; then
+    AM_RUN_LOG([$am__untar <conftest.tar])
+    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+  fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
diff --git a/config.h.in b/config.h.in
new file mode 100644 (file)
index 0000000..7142cca
--- /dev/null
@@ -0,0 +1,93 @@
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `z' library (-lz). */
+#undef HAVE_LIBZ
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
+/* Version number of package */
+#undef VERSION
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Define for large files, on AIX-style hosts. */
+#undef _LARGE_FILES
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
diff --git a/configure b/configure
new file mode 100755 (executable)
index 0000000..48ac6d9
--- /dev/null
+++ b/configure
@@ -0,0 +1,6469 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.63 for usbutils 0.86.
+#
+# Report bugs to <linux-usb@vger.kernel.org>.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+if test "x$CONFIG_SHELL" = x; then
+  if (eval ":") 2>/dev/null; then
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+
+  if test $as_have_required = yes &&    (eval ":
+(as_func_return () {
+  (exit \$1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0) || { (exit 1); exit 1; }
+
+(
+  as_lineno_1=\$LINENO
+  as_lineno_2=\$LINENO
+  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
+  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
+") 2> /dev/null; then
+  :
+else
+  as_candidate_shells=
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  case $as_dir in
+        /*)
+          for as_base in sh bash ksh sh5; do
+            as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+          done;;
+       esac
+done
+IFS=$as_save_IFS
+
+
+      for as_shell in $as_candidate_shells $SHELL; do
+        # Try only shells that exist, to save several forks.
+        if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+               { ("$as_shell") 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+_ASEOF
+}; then
+  CONFIG_SHELL=$as_shell
+              as_have_required=yes
+              if { "$as_shell" 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+(as_func_return () {
+  (exit $1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = "$1" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test $exitcode = 0) || { (exit 1); exit 1; }
+
+(
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
+
+_ASEOF
+}; then
+  break
+fi
+
+fi
+
+      done
+
+      if test "x$CONFIG_SHELL" != x; then
+  for as_var in BASH_ENV ENV
+       do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+       done
+       export CONFIG_SHELL
+       exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+
+    if test $as_have_required = no; then
+  echo This script requires a shell more modern than all the
+      echo shells that I found on your system.  Please install a
+      echo modern shell, or manually run the script under such a
+      echo shell if you do have one.
+      { (exit 1); exit 1; }
+fi
+
+
+fi
+
+fi
+
+
+
+(eval "as_func_return () {
+  (exit \$1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0") || {
+  echo No shell found that supports shell functions.
+  echo Please tell bug-autoconf@gnu.org about your system,
+  echo including any error possibly output before this message.
+  echo This can help us improve future autoconf versions.
+  echo Configuration will now proceed without shell functions.
+}
+
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line after each line using $LINENO; the second 'sed'
+  # does the real work.  The second script uses 'N' to pair each
+  # line-number line with the line containing $LINENO, and appends
+  # trailing '-' during substitution so that $LINENO is not a special
+  # case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee
+  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+
+exec 7<&0 </dev/null 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Identity of this package.
+PACKAGE_NAME='usbutils'
+PACKAGE_TARNAME='usbutils'
+PACKAGE_VERSION='0.86'
+PACKAGE_STRING='usbutils 0.86'
+PACKAGE_BUGREPORT='linux-usb@vger.kernel.org'
+
+ac_default_prefix=/usr
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+LIBUSB_LIBS
+LIBUSB_CFLAGS
+PKG_CONFIG
+HAVE_ZLIB_FALSE
+HAVE_ZLIB_TRUE
+EGREP
+GREP
+CPP
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_dependency_tracking
+enable_largefile
+enable_zlib
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP
+PKG_CONFIG
+LIBUSB_CFLAGS
+LIBUSB_LIBS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *)   ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2
+   { (exit 1); exit 1; }; }
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) { $as_echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { $as_echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2
+   { (exit 1); exit 1; }; } ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
+               datadir sysconfdir sharedstatedir localstatedir includedir \
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+               libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; }
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  { $as_echo "$as_me: error: working directory cannot be determined" >&2
+   { (exit 1); exit 1; }; }
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  { $as_echo "$as_me: error: pwd does not report name of working directory" >&2
+   { (exit 1); exit 1; }; }
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_myself" : 'X\(//\)[^/]' \| \
+        X"$as_myself" : 'X\(//\)$' \| \
+        X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+       cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2
+   { (exit 1); exit 1; }; }
+       pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures usbutils 0.86 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/usbutils]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of usbutils 0.86:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors
+  --disable-largefile     omit support for large files
+  --disable-zlib          disable support for zlib
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CPP         C preprocessor
+  PKG_CONFIG  path to pkg-config utility
+  LIBUSB_CFLAGS
+              C compiler flags for LIBUSB, overriding pkg-config
+  LIBUSB_LIBS linker flags for LIBUSB, overriding pkg-config
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <linux-usb@vger.kernel.org>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+usbutils configure 0.86
+generated by GNU Autoconf 2.63
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by usbutils $as_me 0.86, which was
+generated by GNU Autoconf 2.63.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  $as_echo "PATH: $as_dir"
+done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    2)
+      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+       ac_must_keep_next=false # Got value, back to normal.
+      else
+       case $ac_arg in
+         *=* | --config-cache | -C | -disable-* | --disable-* \
+         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+         | -with-* | --with-* | -without-* | --without-* | --x)
+           case "$ac_configure_args0 " in
+             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+           esac
+           ;;
+         -* ) ac_must_keep_next=true ;;
+       esac
+      fi
+      ac_configure_args="$ac_configure_args '$ac_arg'"
+      ;;
+    esac
+  done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) $as_unset $ac_var ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+       "s/'\''/'\''\\\\'\'''\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+       eval ac_val=\$$ac_var
+       case $ac_val in
+       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+       esac
+       $as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  ac_site_file1=$CONFIG_SITE
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test -r "$ac_site_file"; then
+    { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+       # differences in whitespace do not lead to failure.
+       ac_old_val_w=`echo x $ac_old_val`
+       ac_new_val_w=`echo x $ac_new_val`
+       if test "$ac_old_val_w" != "$ac_new_val_w"; then
+         { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+         ac_cache_corrupted=:
+       else
+         { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+         eval $ac_var=\$ac_old_val
+       fi
+       { $as_echo "$as_me:$LINENO:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+       { $as_echo "$as_me:$LINENO:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+am__api_version='1.10'
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
+$as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+       if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+         if test $ac_prog = install &&
+           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # AIX install.  It has an incompatible calling convention.
+           :
+         elif test $ac_prog = install &&
+           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+           # program-specific install script used by HP pwplus--don't use.
+           :
+         else
+           rm -rf conftest.one conftest.two conftest.dir
+           echo one > conftest.one
+           echo two > conftest.two
+           mkdir conftest.dir
+           if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+             test -s conftest.one && test -s conftest.two &&
+             test -s conftest.dir/conftest.one &&
+             test -s conftest.dir/conftest.two
+           then
+             ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+             break 3
+           fi
+         fi
+       fi
+      done
+    done
+    ;;
+esac
+
+done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$*" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$*" != "X $srcdir/configure conftest.file" \
+      && test "$*" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&5
+$as_echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&2;}
+   { (exit 1); exit 1; }; }
+   fi
+
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+$as_echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if test "${ac_cv_path_mkdir+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in mkdir gmkdir; do
+        for ac_exec_ext in '' $ac_executable_extensions; do
+          { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+          case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+            'mkdir (GNU coreutils) '* | \
+            'mkdir (coreutils) '* | \
+            'mkdir (fileutils) '4.1*)
+              ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+              break 3;;
+          esac
+        done
+       done
+done
+IFS=$as_save_IFS
+
+fi
+
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    test -d ./--version && rmdir ./--version
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+  [\\/$]* | ?:[\\/]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:$LINENO: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+       @echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='usbutils'
+ VERSION='0.86'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:$LINENO: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+
+
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+       @echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+
+
+{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:$LINENO: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:$LINENO: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { (ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+       ;;
+    [ab].out )
+       # We found the default executable, but exeext='' is most
+       # certainly right.
+       break;;
+    *.* )
+        if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       then :; else
+          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+       fi
+       # We set ac_cv_exeext here because the later test for it is not
+       # safe: cross compilers may not add the suffix if given an `-o'
+       # argument, so we may need to know it at that point already.
+       # Even if this section looks crufty: it has the advantage of
+       # actually working.
+       break;;
+    * )
+       break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+
+{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+if test -z "$ac_file"; then
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+       { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+         break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_compiler_gnu=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       CFLAGS=""
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_g=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_c89=$ac_arg
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:$LINENO: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:$LINENO: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:$LINENO: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  :
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    ac_count=`expr $ac_count + 1`
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:$LINENO: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    ac_count=`expr $ac_count + 1`
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_header_stdc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_header_stdc=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+                  (('a' <= (c) && (c) <= 'i') \
+                    || ('j' <= (c) && (c) <= 'r') \
+                    || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+       || toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -rf conftest.dSYM
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                 inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+$as_echo_n "checking for $ac_header... " >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_ac_Header=yes"
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+              { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+as_val=`eval 'as_val=${'$as_ac_Header'}
+                $as_echo "$as_val"'`
+   if test "x$as_val" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+  if test "${ac_cv_header_minix_config_h+set}" = set; then
+  { $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5
+$as_echo_n "checking for minix/config.h... " >&6; }
+if test "${ac_cv_header_minix_config_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
+$as_echo "$ac_cv_header_minix_config_h" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:$LINENO: checking minix/config.h usability" >&5
+$as_echo_n "checking minix/config.h usability... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <minix/config.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:$LINENO: checking minix/config.h presence" >&5
+$as_echo_n "checking minix/config.h presence... " >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <minix/config.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: minix/config.h:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: minix/config.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5
+$as_echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;}
+    { $as_echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5
+$as_echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ---------------------------------------- ##
+## Report this to linux-usb@vger.kernel.org ##
+## ---------------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ $as_echo "$as_me:$LINENO: checking for minix/config.h" >&5
+$as_echo_n "checking for minix/config.h... " >&6; }
+if test "${ac_cv_header_minix_config_h+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_header_minix_config_h=$ac_header_preproc
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
+$as_echo "$ac_cv_header_minix_config_h" >&6; }
+
+fi
+if test "x$ac_cv_header_minix_config_h" = x""yes; then
+  MINIX=yes
+else
+  MINIX=
+fi
+
+
+  if test "$MINIX" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define _POSIX_SOURCE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define _POSIX_1_SOURCE 2
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define _MINIX 1
+_ACEOF
+
+  fi
+
+
+
+  { $as_echo "$as_me:$LINENO: checking whether it is safe to define __EXTENSIONS__" >&5
+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if test "${ac_cv_safe_to_define___extensions__+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#        define __EXTENSIONS__ 1
+         $ac_includes_default
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_safe_to_define___extensions__=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_safe_to_define___extensions__=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_safe_to_define___extensions__" >&5
+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+  test $ac_cv_safe_to_define___extensions__ = yes &&
+    cat >>confdefs.h <<\_ACEOF
+#define __EXTENSIONS__ 1
+_ACEOF
+
+  cat >>confdefs.h <<\_ACEOF
+#define _ALL_SOURCE 1
+_ACEOF
+
+  cat >>confdefs.h <<\_ACEOF
+#define _GNU_SOURCE 1
+_ACEOF
+
+  cat >>confdefs.h <<\_ACEOF
+#define _POSIX_PTHREAD_SEMANTICS 1
+_ACEOF
+
+  cat >>confdefs.h <<\_ACEOF
+#define _TANDEM_SOURCE 1
+_ACEOF
+
+
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then
+  enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+  { $as_echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5
+$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+if test "${ac_cv_sys_largefile_CC+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_sys_largefile_CC=no
+     if test "$GCC" != yes; then
+       ac_save_CC=$CC
+       while :; do
+        # IRIX 6.2 and later do not support large files by default,
+        # so use the C compiler's -n32 option if that helps.
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+        rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+        CC="$CC -n32"
+        rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_sys_largefile_CC=' -n32'; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+        break
+       done
+       CC=$ac_save_CC
+       rm -f conftest.$ac_ext
+    fi
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5
+$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+  if test "$ac_cv_sys_largefile_CC" != no; then
+    CC=$CC$ac_cv_sys_largefile_CC
+  fi
+
+  { $as_echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if test "${ac_cv_sys_file_offset_bits+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  while :; do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_sys_file_offset_bits=no; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_sys_file_offset_bits=64; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_cv_sys_file_offset_bits=unknown
+  break
+done
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5
+$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+;;
+esac
+rm -rf conftest*
+  if test $ac_cv_sys_file_offset_bits = unknown; then
+    { $as_echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5
+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+if test "${ac_cv_sys_large_files+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  while :; do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_sys_large_files=no; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_sys_large_files=1; break
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_cv_sys_large_files=unknown
+  break
+done
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5
+$as_echo "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+;;
+esac
+rm -rf conftest*
+  fi
+fi
+
+
+USE_ZLIB=yes
+# Check whether --enable-zlib was given.
+if test "${enable_zlib+set}" = set; then
+  enableval=$enable_zlib;
+               if eval "test x$enable_zlib = xno"; then
+                       USE_ZLIB=
+               fi
+
+fi
+
+if test "$USE_ZLIB" = "yes" ; then
+
+{ $as_echo "$as_me:$LINENO: checking for inflateEnd in -lz" >&5
+$as_echo_n "checking for inflateEnd in -lz... " >&6; }
+if test "${ac_cv_lib_z_inflateEnd+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lz  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char inflateEnd ();
+int
+main ()
+{
+return inflateEnd ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then
+  ac_cv_lib_z_inflateEnd=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_cv_lib_z_inflateEnd=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_z_inflateEnd" >&5
+$as_echo "$ac_cv_lib_z_inflateEnd" >&6; }
+if test "x$ac_cv_lib_z_inflateEnd" = x""yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBZ 1
+_ACEOF
+
+  LIBS="-lz $LIBS"
+
+fi
+
+       if test "${ac_cv_lib_z_inflateEnd}" = "yes" ; then
+               HAVE_ZLIB="yes"
+       fi
+fi
+ if test x$HAVE_ZLIB = xyes; then
+  HAVE_ZLIB_TRUE=
+  HAVE_ZLIB_FALSE='#'
+else
+  HAVE_ZLIB_TRUE='#'
+  HAVE_ZLIB_FALSE=
+fi
+
+
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+       if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  case $ac_pt_PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKG_CONFIG=$ac_pt_PKG_CONFIG
+  fi
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+       _pkg_min_version=0.9.0
+       { $as_echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+       else
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+               PKG_CONFIG=""
+       fi
+
+fi
+
+pkg_failed=no
+{ $as_echo "$as_me:$LINENO: checking for LIBUSB" >&5
+$as_echo_n "checking for LIBUSB... " >&6; }
+
+if test -n "$LIBUSB_CFLAGS"; then
+    pkg_cv_LIBUSB_CFLAGS="$LIBUSB_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libusb >= 0.1.12\"") >&5
+  ($PKG_CONFIG --exists --print-errors "libusb >= 0.1.12") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_LIBUSB_CFLAGS=`$PKG_CONFIG --cflags "libusb >= 0.1.12" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$LIBUSB_LIBS"; then
+    pkg_cv_LIBUSB_LIBS="$LIBUSB_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libusb >= 0.1.12\"") >&5
+  ($PKG_CONFIG --exists --print-errors "libusb >= 0.1.12") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_LIBUSB_LIBS=`$PKG_CONFIG --libs "libusb >= 0.1.12" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               LIBUSB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libusb >= 0.1.12" 2>&1`
+        else
+               LIBUSB_PKG_ERRORS=`$PKG_CONFIG --print-errors "libusb >= 0.1.12" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$LIBUSB_PKG_ERRORS" >&5
+
+       { { $as_echo "$as_me:$LINENO: error: Package requirements (libusb >= 0.1.12) were not met:
+
+$LIBUSB_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables LIBUSB_CFLAGS
+and LIBUSB_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&5
+$as_echo "$as_me: error: Package requirements (libusb >= 0.1.12) were not met:
+
+$LIBUSB_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+Alternatively, you may set the environment variables LIBUSB_CFLAGS
+and LIBUSB_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+" >&2;}
+   { (exit 1); exit 1; }; }
+elif test $pkg_failed = untried; then
+       { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables LIBUSB_CFLAGS
+and LIBUSB_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&5
+$as_echo "$as_me: error: The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables LIBUSB_CFLAGS
+and LIBUSB_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }; }
+else
+       LIBUSB_CFLAGS=$pkg_cv_LIBUSB_CFLAGS
+       LIBUSB_LIBS=$pkg_cv_LIBUSB_LIBS
+        { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+       :
+fi
+
+
+
+ac_config_headers="$ac_config_headers config.h"
+
+ac_config_files="$ac_config_files Makefile"
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) $as_unset $ac_var ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+       "s/'/'\\\\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    test "x$cache_file" != "x/dev/null" &&
+      { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+    cat confcache >$cache_file
+  else
+    { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${HAVE_ZLIB_TRUE}" && test -z "${HAVE_ZLIB_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ZLIB\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"HAVE_ZLIB\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line after each line using $LINENO; the second 'sed'
+  # does the real work.  The second script uses 'N' to pair each
+  # line-number line with the line containing $LINENO, and appends
+  # trailing '-' during substitution so that $LINENO is not a special
+  # case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee
+  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+
+# Save the log message, to keep $[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by usbutils $as_me 0.86, which was
+generated by GNU Autoconf 2.63.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTION]... [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf@gnu.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_version="\\
+usbutils config.status 0.86
+configured by $0, generated by GNU Autoconf 2.63,
+  with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2008 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    CONFIG_FILES="$CONFIG_FILES '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    { $as_echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { $as_echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+
+  *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp=
+  trap 'exit_status=$?
+  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} ||
+{
+   $as_echo "$as_me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr='\r'
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\).*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\).*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = "\a"
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+  || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5
+$as_echo "$as_me: error: could not setup config files machinery" >&2;}
+   { (exit 1); exit 1; }; }
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[         ]*VPATH[        ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[    ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[      ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_t=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_t"; then
+    break
+  elif $ac_last_try; then
+    { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5
+$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;}
+   { (exit 1); exit 1; }; }
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[    ]*#[    ]*define[       ][      ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = "\a"
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5
+$as_echo "$as_me: error: could not setup config headers machinery" >&2;}
+   { (exit 1); exit 1; }; }
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5
+$as_echo "$as_me: error: invalid tag $ac_tag" >&2;}
+   { (exit 1); exit 1; }; };;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+        # (if the path is not absolute).  The absolute path cannot be DOS-style,
+        # because $ac_f cannot contain `:'.
+        test -f "$ac_f" ||
+          case $ac_f in
+          [\\/$]*) false;;
+          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+          esac ||
+          { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+   { (exit 1); exit 1; }; };;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      ac_file_inputs="$ac_file_inputs '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+       `' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:$LINENO: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$tmp/stdin" \
+      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; } ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$ac_file" : 'X\(//\)[^/]' \| \
+        X"$ac_file" : 'X\(//\)$' \| \
+        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  { as_dir="$ac_dir"
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+   { (exit 1); exit 1; }; }; }
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p
+'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+    s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&2;}
+
+  rm -f "$tmp/stdin"
+  case $ac_file in
+  -) cat "$tmp/out" && rm -f "$tmp/out";;
+  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  esac \
+  || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
+    } >"$tmp/config.h" \
+      || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$tmp/config.h" "$ac_file" \
+       || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5
+$as_echo "$as_me: error: could not create $ac_file" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+      || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5
+$as_echo "$as_me: error: could not create -" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$_am_arg" : 'X\(//\)[^/]' \| \
+        X"$_am_arg" : 'X\(//\)$' \| \
+        X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+  :C)  { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || # Autoconf 2.62 quotes --file arguments for eval, but not when files
+# are listed without --file.  Let's play safe and only enable the eval
+# if we detect the quoting.
+case $CONFIG_FILES in
+*\'*) eval set x "$CONFIG_FILES" ;;
+*)   set x $CONFIG_FILES ;;
+esac
+shift
+for mf
+do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # Grep'ing the whole file is not good either: AIX grep has a line
+  # limit of 2048, but all sed's we know have understand at least 4000.
+  if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+    dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$mf" : 'X\(//\)[^/]' \| \
+        X"$mf" : 'X\(//\)$' \| \
+        X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  else
+    continue
+  fi
+  # Extract the definition of DEPDIR, am__include, and am__quote
+  # from the Makefile without running `make'.
+  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  am__include=`sed -n 's/^am__include = //p' < "$mf"`
+  test -z "am__include" && continue
+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n 's/^U = //p' < "$mf"`
+  # Find all dependency output files, they are included files with
+  # $(DEPDIR) in their names.  We invoke sed twice because it is the
+  # simplest approach to changing $(DEPDIR) to its actual value in the
+  # expansion.
+  for file in `sed -n "
+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$file" : 'X\(//\)[^/]' \| \
+        X"$file" : 'X\(//\)$' \| \
+        X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+    { as_dir=$dirpart/$fdir
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+$as_echo "$as_me: error: cannot create directory $as_dir" >&2;}
+   { (exit 1); exit 1; }; }; }
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+ ;;
+
+  esac
+done # for ac_tag
+
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+{ $as_echo "$as_me:$LINENO: result:
+       usbutils $VERSION
+       =============
+
+       prefix:                 ${prefix}
+       datarootdir:            ${datarootdir}
+       datadir:                ${datadir}
+       mandir:                 ${mandir}
+
+       usb.ids:                ${datadir}/usb.ids
+       zlib:                   ${USE_ZLIB}
+
+       compiler:               ${CC}
+       cflags:                 ${CFLAGS}
+       ldflags:                ${LDFLAGS}
+" >&5
+$as_echo "
+       usbutils $VERSION
+       =============
+
+       prefix:                 ${prefix}
+       datarootdir:            ${datarootdir}
+       datadir:                ${datadir}
+       mandir:                 ${mandir}
+
+       usb.ids:                ${datadir}/usb.ids
+       zlib:                   ${USE_ZLIB}
+
+       compiler:               ${CC}
+       cflags:                 ${CFLAGS}
+       ldflags:                ${LDFLAGS}
+" >&6; }
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..15917e9
--- /dev/null
@@ -0,0 +1,53 @@
+AC_INIT([usbutils],
+       [0.86],
+       [linux-usb@vger.kernel.org])
+AC_PREREQ(2.60)
+AM_INIT_AUTOMAKE([check-news foreign 1.9 dist-bzip2])
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+AC_PREFIX_DEFAULT([/usr])
+
+AC_USE_SYSTEM_EXTENSIONS
+AC_SYS_LARGEFILE
+
+USE_ZLIB=yes
+AC_ARG_ENABLE(zlib,
+       AS_HELP_STRING(--disable-zlib,disable support for zlib),
+       [
+               if eval "test x$enable_zlib = xno"; then
+                       USE_ZLIB=
+               fi
+       ])
+if test "$USE_ZLIB" = "yes" ; then
+       AC_CHECK_LIB(z, inflateEnd)
+       if test "${ac_cv_lib_z_inflateEnd}" = "yes" ; then
+               HAVE_ZLIB="yes"
+       fi
+fi
+AM_CONDITIONAL(HAVE_ZLIB, test x$HAVE_ZLIB = xyes)
+
+PKG_CHECK_MODULES(LIBUSB, libusb >= 0.1.12)
+AC_SUBST(LIBUSB_CFLAGS)
+AC_SUBST(LIBUSB_LIBS)
+
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_FILES([
+       Makefile
+])
+
+AC_OUTPUT
+AC_MSG_RESULT([
+       usbutils $VERSION
+       =============
+
+       prefix:                 ${prefix}
+       datarootdir:            ${datarootdir}
+       datadir:                ${datadir}
+       mandir:                 ${mandir}
+
+       usb.ids:                ${datadir}/usb.ids
+       zlib:                   ${USE_ZLIB}
+
+       compiler:               ${CC}
+       cflags:                 ${CFLAGS}
+       ldflags:                ${LDFLAGS}
+])
diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644 (file)
index 0000000..a26c3c7
--- /dev/null
@@ -0,0 +1,9 @@
+README.Debian for usbutils
+--------------------------
+
+The USB ID's database (/var/lib/usbutils/usb.ids) comes from
+http://linux-usb.sourceforge.net/usb.ids.  In case one of your USB devices
+does not appear in the database you can submit the USB ID's and the 
+corresponding description to Stephen J. Gowdy <sgowdy+usb.ids@gmail.com>.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Wed, 13 Aug 2008 01:02:52 +0200
diff --git a/debian/bkup/usbutils-udeb.dirs b/debian/bkup/usbutils-udeb.dirs
new file mode 100644 (file)
index 0000000..9ec9899
--- /dev/null
@@ -0,0 +1,2 @@
+usr/bin
+usr/share/misc
diff --git a/debian/bkup/usbutils-udeb.substvars b/debian/bkup/usbutils-udeb.substvars
new file mode 100644 (file)
index 0000000..f9308f1
--- /dev/null
@@ -0,0 +1 @@
+shlibs:Depends=libusb-0.1-udeb (>= 2:0.1.12), zlib1g
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..8313349
--- /dev/null
@@ -0,0 +1,541 @@
+usbutils (0.86-7slp2) unstable; urgency=low
+
+  * Change datadir from /var to /usr for usb.ids* files to be installed under /usr.
+  * Git: 165.213.180.234:/git/slp/pkgs/xorg/miscs/usbutils
+  * Tag: usbutils_0.86-7slp2
+
+ -- Sung-Jin Park <sj76.park@samsung.com>  Mon, 19 Mar 2012 19:32:37 +0900
+
+usbutils (0.86-6slp2) unstable; urgency=low
+
+  * Modify debian/changelog to put Git and Tag info
+  * Git: 165.213.180.234:/git/slp/pkgs/xorg/miscs/usbutils
+  * Tag: usbutils_0.86-6slp2
+
+ -- Sung-Jin Park <sj76.park@samsung.com>  Thu, 25 Nov 2010 12:57:12 +0900
+
+usbutils (0.86-5slp2) unstable; urgency=low
+
+  * Import Debian Package
+
+ -- Sung-Jin Park <sj76.park@samsung.com>  Mon, 17 May 2010 11:09:32 +0900
+
+usbutils (0.86-4) unstable; urgency=low
+
+  * Correctly dump CCID info now that it is an official USB class and
+    that devices start to use it with non-tagged descriptors.  Closes:
+    bug#569783.
+  * Update usb.ids.
+  * Bumped Standards-Version to 3.8.4 (no changes).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sun, 14 Feb 2010 15:51:01 +0100
+
+usbutils (0.86-3) unstable; urgency=low
+
+  * Update usb.ids:
+    - Add Logitech Webcam C200 (046d:0802).  Closes: bug#564035.
+    - Add Verbatim External Hard Drive (18a5:0216).  Closes: bug#563085.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sun, 17 Jan 2010 21:18:36 +0100
+
+usbutils (0.86-2) unstable; urgency=low
+
+  * Install the usbutils.pc in the correct directory.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sun, 23 Aug 2009 23:42:04 +0200
+
+usbutils (0.86-1) unstable; urgency=low
+
+  * New upstream version:
+    - usb-devices has been to /usr/bin (closes: bug#539582).
+  * Update usb.ids from upstream.
+  * Bumped Standards-Version to 3.8.3 (no changes).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Tue, 18 Aug 2009 06:55:29 +0200
+
+usbutils (0.84-1) unstable; urgency=low
+
+  * New upstream version (closes: bug#539484).
+  * Bumped Standards-Version to 3.8.2 (no changes).
+  * Add 147a:e017 and 14b2:3c05 entries to usb.ids (closes: bug#531274).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sat, 01 Aug 2009 16:40:48 +0200
+
+usbutils (0.82-1) unstable; urgency=low
+
+  * New upstream version.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Wed, 13 May 2009 08:59:51 +0000
+
+usbutils (0.81-1) unstable; urgency=low
+
+  * New upstream version.
+    - Device tree option works with usbfs not mounted (closes: bug#498723).
+  * Improve manpage (closes: bug#506800).
+  * usb.ids:
+    - Fix entry about Netgear WG111 (0846:4240) (closes: bug#500706).
+    - Add Hewlett-Packard LaserJet P1005 (03f0:3d17) (closes: bug#525629).
+    - Add Benq X120 Internet Keyboard Pro (0d62:001c) (closes: bug#525628).
+    - Add Dexon Mouse (15d9:0a33) (closes: bug#525582).
+  * Bumped Standards-Version to 3.8.1 (no changes).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Tue, 28 Apr 2009 23:24:30 +0200
+
+usbutils (0.73-10) unstable; urgency=low
+
+  * Fix a typo in README.Debian.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Wed, 13 Aug 2008 01:03:10 +0200
+
+usbutils (0.73-9) unstable; urgency=low
+
+  * Update usb.ids.
+  * Add a README.Debian explaining how to submit new USB ID's.
+  * Bumped Standards-Version to 3.8.0 (no changes).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Wed, 06 Aug 2008 22:47:04 +0200
+
+usbutils (0.73-8) unstable; urgency=low
+
+  * Update usb.ids.
+  * Add CCU-550 USB modem to usb.ids (closes: bug#480484).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sat, 10 May 2008 14:24:32 +0200
+
+usbutils (0.73-7) unstable; urgency=low
+
+  * Fix the last changelog entry, no code change.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Mon, 03 Mar 2008 14:42:52 +0100
+
+usbutils (0.73-6) unstable; urgency=low
+
+  * Bumped Standards-Version to 3.7.3 (no changes).
+  * Relax build-dependency on libusb-dev.
+  * Rework debian/copyright.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sun, 02 Mar 2008 19:06:45 +0100
+
+usbutils (0.73-5) unstable; urgency=low
+
+  * Fix broken link in /usr/share/misc/ (closes: bug#453363).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Thu, 29 Nov 2007 10:11:17 +0100
+
+usbutils (0.73-4) unstable; urgency=low
+
+  * Don't gzip usb.ids for the .deb package, as hal will use this file
+    and relies on it being non-gzipped (closes: bug#448803).
+  * usb.ids is still gzipped in the .udeb package.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Thu, 08 Nov 2007 14:33:14 +0100
+
+usbutils (0.73-3) unstable; urgency=low
+
+  * Use endian.h instead of asm/byteorder.h. Fix build on non-linux
+    systems.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Wed, 24 Oct 2007 15:01:21 +0200
+
+usbutils (0.73-2) unstable; urgency=low
+
+  * Reupload the correct version (closes: bug#447851).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Wed, 24 Oct 2007 11:51:20 +0200
+
+usbutils (0.73-1) unstable; urgency=low
+
+  * New upstream version.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Wed, 24 Oct 2007 00:44:38 +0200
+
+usbutils (0.72-9) unstable; urgency=low
+
+  * Update usb.ids.
+  * Add Bison Acer Orbicam to usb.ids (closes: bug#425717).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Wed, 12 Sep 2007 11:53:14 +0200
+
+usbutils (0.72-8) unstable; urgency=low
+
+  * Remove support for 2.4 kernels.
+  * Update the description (closes: bug#415411).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Fri, 13 Apr 2007 16:18:51 +0200
+
+usbutils (0.72-7) unstable; urgency=medium
+
+  * Fix a typo in usb.ids.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Tue, 10 Oct 2006 11:30:48 +0200
+
+usbutils (0.72-6) unstable; urgency=low
+
+  * Added "HP DeskJet 6840" to usb.ids (closes: bug#382487).
+  * Added "Topro USB Mouse" and "Creative Labs Optical Mouse"
+    to usb.ids (closes: bug#387120).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sun,  8 Oct 2006 18:01:44 +0200
+
+usbutils (0.72-5) unstable; urgency=low
+
+  * Added support for gzipped usb.ids files. This reduces the udeb unpacked
+    size by 100 kB.
+  * Updated usb.ids.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Wed,  2 Aug 2006 11:52:27 +0200
+
+usbutils (0.72-4) unstable; urgency=low
+
+  * Fix the parsing of bus number >= 08 in tree mode (closes: bug#373764).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sat, 17 Jun 2006 16:15:32 +0200
+
+usbutils (0.72-3) unstable; urgency=low
+
+  * This time, don't ship an empty deb package (closes: bug#368014).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Fri, 19 May 2006 17:08:30 +0000
+
+usbutils (0.72-2) unstable; urgency=high
+
+  * Don't ship an empty udeb package.
+  * Bumped Standards-Version to 3.7.2 (no changes).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Wed, 17 May 2006 00:23:07 +0000
+
+usbutils (0.72-1) unstable; urgency=low
+
+  * New upstream version:
+    - usbmodules has been removed from upstream tarball. Continue to
+      maintain it in Debian, to support Sarge -> Etch upgrades.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sun, 23 Apr 2006 11:36:11 +0200
+
+usbutils (0.71+cvs20051029-5) unstable; urgency=low
+
+  * Use the new debhelper features to set dependencies for udeb. Thanks
+    to Frans Pop for the patch (closes: bug#360350).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sat,  1 Apr 2006 23:48:35 +0200
+
+usbutils (0.71+cvs20051029-4) unstable; urgency=low
+
+  * Updated usb.ids.
+  * Added "HL-1430 Laser Printer".
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sat,  3 Dec 2005 00:15:41 +0100
+
+usbutils (0.71+cvs20051029-3) unstable; urgency=low
+
+  * Added a note that usbmodules is not useful on 2.4 kernels (closes:
+    bug#340548).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Thu, 24 Nov 2005 20:07:13 +0100
+
+usbutils (0.71+cvs20051029-2) unstable; urgency=low
+
+  * Fix usb.ids location in lsusb man page (closes: bug#338854).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sun, 13 Nov 2005 15:52:08 +0100
+
+usbutils (0.71+cvs20051029-1) unstable; urgency=low
+
+  * CVS snapshot:
+    - Support for video terminal tag added (closes: bug#336296).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sat, 29 Oct 2005 12:36:07 +0200
+
+usbutils (0.71-7) unstable; urgency=low
+
+  * Fixed URL in debian/copyright (closes: bug#336039).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Fri, 28 Oct 2005 01:20:54 +0200
+
+usbutils (0.71-6) unstable; urgency=low
+
+  * README.Debian is not really useful, remove it (closes: bug#329261).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Tue, 20 Sep 2005 23:12:47 +0200
+
+usbutils (0.71-5) unstable; urgency=low
+
+  * Fixed parsing of bVoltageSupport. Thanks to Ludovic Rousseau for the patch
+    (closes: bug#314478).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Mon, 20 Jun 2005 07:44:33 +0200
+
+usbutils (0.71-4) unstable; urgency=low
+
+  * Added KOBIL to usb.ids (closes: bug#314454).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Fri, 17 Jun 2005 15:04:43 +0200
+
+usbutils (0.71-3) unstable; urgency=low
+
+  * Makes udeb depending on libusb-0.1-udeb instead of libusb-0.1-udeb
+    instead of libusb-0.1-4.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sun,  5 Jun 2005 22:55:54 +0200
+
+usbutils (0.71-2) unstable; urgency=low
+
+  * Also produce an udeb package. Patch by Colin Watson (closes:
+    bug#311653).
+  * Added fix for dpkg-dev >= 1.13.2 (closes: bug#311655).
+  * Added HP OfficeJet 5510 to usb.ids (closes: bug#311656).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Thu,  2 Jun 2005 17:15:02 +0200
+
+usbutils (0.71-1) unstable; urgency=low
+
+  * New upstream version.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Thu, 19 May 2005 00:28:37 +0200
+
+usbutils (0.70-8) unstable; urgency=low
+
+  * Added some webcams to usb.ids (closes: bug#305022).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Fri, 22 Apr 2005 19:14:16 +0200
+
+usbutils (0.70-7) unstable; urgency=low
+
+  * Fixed USB IDs for Zaurus C-860 (closes: bug#304818).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sat, 16 Apr 2005 00:24:19 +0200
+
+usbutils (0.70-6) unstable; urgency=low
+
+  * Added Labtec Wireless Optical Mouse to usb.ids.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Fri, 15 Apr 2005 12:15:59 +0200
+
+usbutils (0.70-5) unstable; urgency=low
+
+  * Only suggests wget or lynx instead of depending on it
+    (closes: bug#30492).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Fri,  1 Apr 2005 08:04:08 +0200
+
+usbutils (0.70-4) unstable; urgency=low
+
+  * Fixed manpage (closes: bug#302144).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Wed, 30 Mar 2005 12:19:08 +0200
+
+usbutils (0.70-3) unstable; urgency=low
+
+  * Updated usb.ids
+  * Read USB IDs as hexa instead of autodetecting.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Mon, 28 Mar 2005 19:58:24 +0200
+
+usbutils (0.70-2) unstable; urgency=low
+
+  * Only build usbmodules on systems using a Linux kernel.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Thu, 17 Mar 2005 18:13:49 +0100
+
+usbutils (0.70-1) unstable; urgency=medium
+
+  * New upstream version. This is basically the same as the CVS version
+    used before, with some autoconf/automake update as well as gcc 4.0
+    fixes. It only makes official changes that were already in the Debian
+    package.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sun, 23 Jan 2005 14:54:53 +0100
+
+usbutils (0.11+cvs20041108-1) unstable; urgency=medium
+
+  * New CVS version.
+  * Set umask before downloading a new usb.ids (closes: bug#280232).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Mon,  8 Nov 2004 16:33:32 +0000
+
+usbutils (0.11+cvs20041016-5) unstable; urgency=high
+
+  * Fixed postinst so no error message is output (closes: bug#279217).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Mon,  1 Nov 2004 14:36:20 +0000
+
+usbutils (0.11+cvs20041016-4) unstable; urgency=high
+
+  * Fixed update-usbids (closes: bug#278935).
+  * Move /usr/share/misc/usb.ids.old to /var/lib/usbutils during postinst
+    (closes: bug#278936).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sat, 30 Oct 2004 19:45:29 +0000
+
+usbutils (0.11+cvs20041016-3) unstable; urgency=high
+
+  * Moved usb.ids to /var/lib/usbutils to be FHS compliant (closes:
+    bug#278480).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Wed, 27 Oct 2004 09:54:27 +0000
+
+usbutils (0.11+cvs20041016-2) unstable; urgency=high
+
+  * Moved usb.ids to /var/share/misc (closes: bug#278480).
+  * Added a symlink in /usr/share/misc for backward compatibility.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Wed, 27 Oct 2004 07:55:06 +0000
+
+usbutils (0.11+cvs20041016-1) unstable; urgency=low
+
+  * New CVS version:
+    - 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 updated.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sat, 16 Oct 2004 14:28:18 +0200
+
+usbutils (0.11+cvs20040318-3) unstable; urgency=low
+
+  * Read the HID descriptors table using USB_RECIP_INTERFACE instead of
+    USB_RECIP_DEVICE (closes: bug#247726).
+  * Claim an interface before reading data from it.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Fri, 11 Jun 2004 23:27:39 +0200
+
+usbutils (0.11+cvs20040318-2) unstable; urgency=low
+
+  * Added symlinks for manpages:
+    - lsusb(1) -> lsusb(8)
+    - usbmodules(1) -> usbmodules(8)
+
+ -- Aurelien Jarno <aurel32@debian.org>  Wed,  5 May 2004 08:59:01 +0200
+
+usbutils (0.11+cvs20040318-1) unstable; urgency=medium
+
+  * New CVS version including the previous changes.
+  * Allow empty line in map files (closes: bug#247264).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Tue,  4 May 2004 11:32:53 +0200
+
+usbutils (0.11+cvs20040313-2) unstable; urgency=low
+
+  * Fixed a typo in the help message (closes: bug#245414).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Fri, 23 Apr 2004 09:25:03 +0200
+
+usbutils (0.11+cvs20040313-1) unstable; urgency=low
+
+  * New version from CVS.
+  * Applied patch from Lee Maguire to support reporting of keyboard
+    country type (closes: bug#237015).
+  * Updated usb.ids.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sun, 14 Mar 2004 00:32:59 +0100
+
+usbutils (0.11-8) unstable; urgency=low
+
+  * Applied patch from David Brownell to dump more information on HUB
+    devices.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sun, 15 Feb 2004 12:05:39 +0100
+
+usbutils (0.11-7) unstable; urgency=low
+
+  * Added a dependency on wget (>= 1.8.1-6) | lynx (>= 2.8.4.1b-3) as
+    update-usbids needs to download files (closes: bug#224679).
+  * Updated usb.ids.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Mon, 29 Dec 2003 14:36:37 +0100
+
+usbutils (0.11-6) unstable; urgency=low
+
+  * Added a patch to access the USB devices through libusb instead of
+    directly through the kernel (closes: bug#135288). The patch has
+    also been integrated by the upstream in his repository.
+  * Updated manpages consequently (closes: bug#222237).
+  * Added symlinks to /usr/bin, as usbmodules and lsusb can now be run
+    by an unprivileged user, even the verbosity is higher in root mode.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sat,  6 Dec 2003 19:54:44 +0100
+
+usbutils (0.11-5) unstable; urgency=low
+
+  * Fixed a bug which could occurs when getting descriptors from HID
+    devices.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sun, 16 Nov 2003 20:18:14 +0100
+
+usbutils (0.11-4) unstable; urgency=low
+
+  * Don't query language IDs descriptors if the device doesn't contains
+    any string.
+  * Fixed some typos in manpages.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sun, 16 Nov 2003 18:56:28 +0100
+
+usbutils (0.11-3) unstable; urgency=low
+
+  * Moved usb.ids to /usr/share/misc so that other packages could use it.
+    (closes: bug#184894).
+  * Added a script to update usb.ids (closes: bug#204879).
+  * Don't build libusb. This is better than building it and removing the
+    corresponding files later. That remove the call of an old configure
+    file (closes: bug#201934).
+
+ -- Aurelien Jarno <aurel32@debian.org>  Fri, 24 Oct 2003 23:24:14 +0200
+
+usbutils (0.11-2) unstable; urgency=low
+
+  * New maintainer (closes: bug#217119).
+  * Fixed a bug causing a "cannot get report descriptor" error on hid
+    devices. Thanks to Loïc Dachary for the patch (closes: #215907).
+  * Updated usb.ids.
+  * debian/control
+    + Depends on ${misc:Depends}
+  * Uses autotools-dev to update config.{guess,sub}.
+  * Uses debian/compat instead of DH_COMPAT.
+  * Upgraded policy compliance to 3.6.1.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Thu, 23 Oct 2003 20:36:01 +0200
+
+usbutils (0.11-1) unstable; urgency=low
+
+  * Special Thanks to Andreas Metzler <ametzler@downhill.at.eu.org> for
+    this update.
+  * New upstream 0.11: (Closes: #62182) - "lsusb don't work under ordinary
+    user"
+  * update usb.ids from master file http://linux-usb.sourceforge.net/usb.ids
+    (Closes: #147851) - "usb.ids very very old" and (Closes: #79574) "MOTU
+    FastLane not included in usb.ids file".
+  * patch manpage to list correct location of usb.ids-file on Debian.
+    (Closes: #130682)
+
+ -- Christopher L Cheney <ccheney@debian.org>  Thu, 13 Mar 2003 20:00:00 -0600
+
+usbutils (0.9-1) unstable; urgency=high
+
+  * New Upstream.
+  * Bug was in users usb.usermap file (Closes: #102881)
+  * Fixed config.guess config.sub (Closes: #111469)
+
+ -- Christopher L Cheney <ccheney@debian.org>  Fri, 23 Nov 2001 21:59:19 -0600
+
+usbutils (0.8-1) unstable; urgency=low
+
+  * New Maintainer.
+
+ -- Christopher L Cheney <ccheney@debian.org>  Wed, 13 Jun 2001 11:20:06 -0500
+
+usbutils (0.6-2) unstable; urgency=low
+
+  * Added #!/bin/sh to postinst of libusb0. (closes: #58588)
+
+ -- Raphael Bossek <bossekr@debian.org>  Tue,  7 Mar 2000 16:10:14 +0100
+
+usbutils (0.6-1) unstable; urgency=low
+
+  * New upstream version.
+
+ -- Raphael Bossek <bossekr@debian.org>  Sun,  9 Jan 2000 13:13:30 +0100
+
+Local variables:
+mode: debian-changelog
+End:
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..6913e50
--- /dev/null
@@ -0,0 +1,39 @@
+Source: usbutils
+Section: utils
+Priority: optional
+Maintainer: Sung-Jin Park <sj76.park@samsung.com>, Aurelien Jarno <aurel32@debian.org>
+Uploaders: Sung-Jin Park <sj76.park@samsung.com>
+Build-Depends: debhelper (>> 5.0.22), autotools-dev, libusb-dev (>= 0.1.6), pkg-config, zlib1g-dev
+Standards-Version: 3.8.4
+
+Package: usbutils
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Suggests: wget (>= 1.8.1-6) | lynx (>= 2.8.4.1b-3)
+Description: Linux USB utilities 
+ This package contains the lsusb utility for inspecting the devices 
+ connected to the USB bus. It shows a graphical representation of the
+ devices that are currently plugged in, showing the topology of the 
+ USB bus. It also displays information on each individual device on
+ the bus.
+ .
+ More information can be found at the Linux USB web site
+ http://www.linux-usb.org/ .
+
+#Package: usbutils-udeb
+#XC-Package-Type: udeb
+#Section: debian-installer
+#Priority: optional
+#Architecture: any
+#Depends: ${shlibs:Depends}
+#Description: Linux USB utilities 
+# This package contains the lsusb utility for inspecting the devices 
+# connected to the USB bus. It shows a graphical representation of the
+# devices that are currently plugged in, showing the topology of the 
+# USB bus. It also displays information on each individual device on
+# the bus.
+# .
+# More information can be found at the Linux USB web site
+# http://www.linux-usb.org/ .
+# .
+# This is a minimal package for use in debian-installer.
diff --git a/debian/control.org b/debian/control.org
new file mode 100644 (file)
index 0000000..a697c22
--- /dev/null
@@ -0,0 +1,38 @@
+Source: usbutils
+Section: utils
+Priority: optional
+Maintainer: Aurelien Jarno <aurel32@debian.org>
+Build-Depends: debhelper (>> 5.0.22), autotools-dev, libusb-dev (>= 0.1.6), pkg-config, zlib1g-dev
+Standards-Version: 3.8.4
+
+Package: usbutils
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Suggests: wget (>= 1.8.1-6) | lynx (>= 2.8.4.1b-3)
+Description: Linux USB utilities 
+ This package contains the lsusb utility for inspecting the devices 
+ connected to the USB bus. It shows a graphical representation of the
+ devices that are currently plugged in, showing the topology of the 
+ USB bus. It also displays information on each individual device on
+ the bus.
+ .
+ More information can be found at the Linux USB web site
+ http://www.linux-usb.org/ .
+
+Package: usbutils-udeb
+XC-Package-Type: udeb
+Section: debian-installer
+Priority: optional
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: Linux USB utilities 
+ This package contains the lsusb utility for inspecting the devices 
+ connected to the USB bus. It shows a graphical representation of the
+ devices that are currently plugged in, showing the topology of the 
+ USB bus. It also displays information on each individual device on
+ the bus.
+ .
+ More information can be found at the Linux USB web site
+ http://www.linux-usb.org/ .
+ .
+ This is a minimal package for use in debian-installer.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..363246f
--- /dev/null
@@ -0,0 +1,34 @@
+This package was debianized by Christopher L Cheney <ccheney@debian.org> on
+Wed, 13 Jun 2001 11:20:06 -0500.
+
+It was downloaded from http://www.linux-usb.org/
+
+Upstream Authors:
+  Thomas Sailer <sailer@ife.ee.ethz.ch>
+  Johannes Erdfelt <johannes@sventech.com>
+
+Copyright:
+  Copyright (C) 1999-2001, 2003 Thomas Sailer (t.sailer@alumni.ethz.ch)
+  Copyright (C) 2003-2005 David Brownell
+  Copyright (C) 2003  Aurelien Jarno (aurelien@aurel32.net)
+
+License:
+
+  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., 51 Franklin St, Fifth Floor, Boston,
+  MA 02110-1301 USA.
+
+On Debian systems, the complete text of the GNU General Public
+License, version 2, can be found in /usr/share/common-licenses/GPL-2.
+
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..976ca57
--- /dev/null
@@ -0,0 +1,126 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# GNU copyright 1997 to 1999 by Joey Hess.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# These are used for cross-compiling and for saving the configure script
+# from having to guess our platform (since we know it already)
+DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+DEB_HOST_ARCH_OS    ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)
+
+ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -g
+endif
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+       INSTALL_PROGRAM += -s
+endif
+
+CFLAGS_UDEB = $(CFLAGS)
+CFLAGS_UDEB += -Os
+
+clean:
+       dh_testdir
+       dh_testroot
+       -rm -f *-stamp
+       -rm -rf build-deb build-udeb
+       -rm -f config.guess config.sub
+       dh_clean
+
+update-config: update-config-stamp
+update-config-stamp:
+       -test -r /usr/share/misc/config.sub && \
+       cp -f /usr/share/misc/config.sub config.sub
+       -test -r /usr/share/misc/config.guess && \
+       cp -f /usr/share/misc/config.guess config.guess
+
+       touch $@
+
+build-deb/config.status: update-config-stamp
+       dh_testdir
+
+       mkdir -p build-deb
+
+       cd build-deb && CFLAGS="$(CFLAGS)" ../configure \
+               --host=$(DEB_HOST_GNU_TYPE) \
+               --build=$(DEB_BUILD_GNU_TYPE) \
+               --prefix=/usr \
+               --datadir=/usr/lib/usbutils \
+               --mandir=\$${prefix}/share/man \
+               --infodir=\$${prefix}/share/info
+
+build-udeb/config.status: update-config-stamp
+       dh_testdir
+
+       mkdir -p build-udeb
+
+       cd build-udeb && CFLAGS="$(CFLAGS_UDEB)" ../configure \
+               --host=$(DEB_HOST_GNU_TYPE) \
+               --build=$(DEB_BUILD_GNU_TYPE) \
+               --prefix=/usr \
+               --datadir=/usr/share/misc \
+               --mandir=\$${prefix}/share/man \
+               --infodir=\$${prefix}/share/info
+
+build: build-deb-stamp build-udeb-stamp
+build-deb-stamp: build-deb/config.status
+       dh_testdir
+
+       $(MAKE) -C build-deb
+       touch $@
+
+build-udeb-stamp: build-udeb/config.status
+       dh_testdir
+
+       $(MAKE) -C build-udeb
+       touch $@
+
+install: install-deb-stamp install-udeb-stamp
+install-deb-stamp: build-deb-stamp
+       dh_testdir
+       dh_testroot
+       dh_installdirs -a
+
+       $(MAKE) -C build-deb install DESTDIR=$(CURDIR)/debian/usbutils pkgconfigdir=/usr/share/pkgconfig
+#      mv $(CURDIR)/debian/usbutils/usr/sbin/update-usbids.sh $(CURDIR)/debian/usbutils/usr/sbin/update-usbids
+#      rm $(CURDIR)/debian/usbutils/var/lib/usbutils/usb.ids.gz
+#      touch $@
+
+install-udeb-stamp: build-udeb-stamp
+       dh_testdir
+       dh_testroot
+       dh_installdirs -a
+
+#      install -m 755 -o root -g root build-udeb/lsusb $(CURDIR)/debian/usbutils-udeb/usr/bin/
+#      gzip -9 -n -c usb.ids > $(CURDIR)/debian/usbutils-udeb/usr/share/misc/usb.ids.gz
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+#      dh_installdebconf
+       dh_installdocs
+       dh_installexamples
+       dh_installman
+       dh_installinfo
+       dh_installchangelogs ChangeLog
+       dh_link
+       dh_strip
+       dh_compress
+       dh_fixperms
+#      dh_makeshlibs
+       dh_installdeb
+#      dh_perl
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install
diff --git a/debian/rules.org b/debian/rules.org
new file mode 100755 (executable)
index 0000000..c10ae01
--- /dev/null
@@ -0,0 +1,126 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# GNU copyright 1997 to 1999 by Joey Hess.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# These are used for cross-compiling and for saving the configure script
+# from having to guess our platform (since we know it already)
+DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+DEB_HOST_ARCH_OS    ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)
+
+ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -g
+endif
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+       INSTALL_PROGRAM += -s
+endif
+
+CFLAGS_UDEB = $(CFLAGS)
+CFLAGS_UDEB += -Os
+
+clean: 
+       dh_testdir
+       dh_testroot
+       -rm -f *-stamp
+       -rm -rf build-deb build-udeb
+       -rm -f config.guess config.sub
+       dh_clean
+
+update-config: update-config-stamp
+update-config-stamp:
+       -test -r /usr/share/misc/config.sub && \
+       cp -f /usr/share/misc/config.sub config.sub
+       -test -r /usr/share/misc/config.guess && \
+       cp -f /usr/share/misc/config.guess config.guess
+       
+       touch $@
+
+build-deb/config.status: update-config-stamp
+       dh_testdir
+
+       mkdir -p build-deb
+
+       cd build-deb && CFLAGS="$(CFLAGS)" ../configure \
+               --host=$(DEB_HOST_GNU_TYPE) \
+               --build=$(DEB_BUILD_GNU_TYPE) \
+               --prefix=/usr \
+               --datadir=/var/lib/usbutils \
+               --mandir=\$${prefix}/share/man \
+               --infodir=\$${prefix}/share/info
+
+build-udeb/config.status: update-config-stamp
+       dh_testdir
+
+       mkdir -p build-udeb
+
+       cd build-udeb && CFLAGS="$(CFLAGS_UDEB)" ../configure \
+               --host=$(DEB_HOST_GNU_TYPE) \
+               --build=$(DEB_BUILD_GNU_TYPE) \
+               --prefix=/usr \
+               --datadir=/usr/share/misc \
+               --mandir=\$${prefix}/share/man \
+               --infodir=\$${prefix}/share/info
+
+build: build-deb-stamp build-udeb-stamp 
+build-deb-stamp: build-deb/config.status
+       dh_testdir
+
+       $(MAKE) -C build-deb
+       touch $@
+
+build-udeb-stamp: build-udeb/config.status
+       dh_testdir
+
+       $(MAKE) -C build-udeb
+       touch $@
+
+install: install-deb-stamp install-udeb-stamp
+install-deb-stamp: build-deb-stamp
+       dh_testdir
+       dh_testroot
+       dh_installdirs -a
+
+       $(MAKE) -C build-deb install DESTDIR=$(CURDIR)/debian/usbutils pkgconfigdir=/usr/share/pkgconfig
+       mv $(CURDIR)/debian/usbutils/usr/sbin/update-usbids.sh $(CURDIR)/debian/usbutils/usr/sbin/update-usbids
+       rm $(CURDIR)/debian/usbutils/var/lib/usbutils/usb.ids.gz
+       touch $@
+
+install-udeb-stamp: build-udeb-stamp
+       dh_testdir
+       dh_testroot
+       dh_installdirs -a
+
+       install -m 755 -o root -g root build-udeb/lsusb $(CURDIR)/debian/usbutils-udeb/usr/bin/
+       gzip -9 -n -c usb.ids > $(CURDIR)/debian/usbutils-udeb/usr/share/misc/usb.ids.gz
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+#      dh_installdebconf       
+       dh_installdocs
+       dh_installexamples
+       dh_installman
+       dh_installinfo
+       dh_installchangelogs ChangeLog
+       dh_link
+       dh_strip 
+       dh_compress 
+       dh_fixperms
+#      dh_makeshlibs
+       dh_installdeb
+#      dh_perl
+       dh_shlibdeps 
+       dh_gencontrol
+       dh_md5sums 
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install
diff --git a/debian/update-usbids.8 b/debian/update-usbids.8
new file mode 100644 (file)
index 0000000..5dd48f2
--- /dev/null
@@ -0,0 +1,27 @@
+.TH update-usbids 8 "13 May 2009" "usbutils-0.82" "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.gz
+Here we install the new list.
+
+.SH SEE ALSO
+.BR lsusb(8).
+
+.SH AUTHOR
+Thomas Sailer, <sailer@ife.ee.ethz.ch>.
diff --git a/debian/usbutils.dirs b/debian/usbutils.dirs
new file mode 100644 (file)
index 0000000..b174b44
--- /dev/null
@@ -0,0 +1,2 @@
+usr/sbin
+usr/share/man/man8
diff --git a/debian/usbutils.links b/debian/usbutils.links
new file mode 100644 (file)
index 0000000..5ae5e60
--- /dev/null
@@ -0,0 +1,3 @@
+usr/sbin/lsusb usr/bin/lsusb
+usr/share/man/man8/lsusb.8 usr/share/man/man1/lsusb.1
+var/lib/usbutils/usb.ids usr/share/misc/usb.ids
diff --git a/debian/usbutils.manpages b/debian/usbutils.manpages
new file mode 100644 (file)
index 0000000..69875cd
--- /dev/null
@@ -0,0 +1 @@
+debian/update-usbids.8
diff --git a/depcomp b/depcomp
new file mode 100755 (executable)
index 0000000..e5f9736
--- /dev/null
+++ b/depcomp
@@ -0,0 +1,589 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2007-03-29.01
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software
+# Foundation, Inc.
+
+# 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, 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., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+  '')
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by `PROGRAMS ARGS'.
+  object      Object file output by `PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputing dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> $depfile
+    echo >> $depfile
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> $depfile
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$base.u
+    tmpdepfile3=$dir.libs/$base.u
+    "$@" -Wc,-M
+  else
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$dir$base.u
+    tmpdepfile3=$dir$base.u
+    "$@" -M
+  fi
+  stat=$?
+
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+    # That's a tab and a space in the [].
+    sed -e 's,^.*\.[a-z]*:[     ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using \ :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add `dependent.h:' lines.
+    sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
+  else
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      # With Tru64 cc, shared objects can also be used to make a
+      # static library.  This mechanism is used in libtool 1.4 series to
+      # handle both shared and static libraries in a single compilation.
+      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+      #
+      # With libtool 1.5 this exception was removed, and libtool now
+      # generates 2 separate objects for the 2 libraries.  These two
+      # compilations output dependencies in $dir.libs/$base.o.d and
+      # in $dir$base.o.d.  We have to check for both files, because
+      # one of the two compilations can be disabled.  We should prefer
+      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+      # automatically cleaned when .libs/ is deleted, while ignoring
+      # the former would cause a distcleancheck panic.
+      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
+      tmpdepfile2=$dir$base.o.d          # libtool 1.5
+      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
+      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1=$dir$base.o.d
+      tmpdepfile2=$dir$base.d
+      tmpdepfile3=$dir$base.d
+      tmpdepfile4=$dir$base.d
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+      exit $stat
+   fi
+
+   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+   do
+     test -f "$tmpdepfile" && break
+   done
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a tab and a space in the [].
+      sed -e 's,^.*\.[a-z]*:[   ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for `:'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no
+  for arg in "$@"; do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix="`echo $object | sed 's/^.*\././'`"
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o,
+  # because we must use -o when running libtool.
+  "$@" || exit $?
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+       set fnord "$@"
+       shift
+       shift
+       ;;
+    *)
+       set fnord "$@" "$arg"
+       shift
+       shift
+       ;;
+    esac
+  done
+  "$@" -E |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::   \1 \\:p' >> "$depfile"
+  echo "       " >> "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/devtree.c b/devtree.c
new file mode 100644 (file)
index 0000000..a3cb900
--- /dev/null
+++ b/devtree.c
@@ -0,0 +1,335 @@
+/*****************************************************************************/
+
+/*
+ *      devtree.c  --  USB device tree.
+ *
+ *      Copyright (C) 1999 Thomas Sailer, sailer@ife.ee.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
+ *      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.
+ *
+ *  Please note that the GPL allows you to use the driver, NOT the radio.
+ *  In order to use the radio, you need a license from the communications
+ *  authority of your country.
+ *
+ */
+
+/*****************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <sys/types.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "devtree.h"
+
+/* ---------------------------------------------------------------------- */
+
+LIST_HEAD(usbbuslist);
+
+/* ---------------------------------------------------------------------- */
+
+static void freedev(struct usbdevnode *dev)
+{
+       free(dev);
+}
+
+static void freebus(struct usbbusnode *bus)
+{
+       free(bus);
+}
+
+/* ---------------------------------------------------------------------- */
+
+static void markdel(struct list_head *list)
+{
+       struct usbdevnode *dev;
+       struct list_head *list2;
+
+       for (list2 = list->next; list2 != list; list2 = list2->next) {
+               dev = list_entry(list2, struct usbdevnode, list);
+               dev->flags |= USBFLG_DELETED;
+               markdel(&dev->childlist);
+       }
+}
+
+void devtree_markdeleted(void)
+{
+       struct usbbusnode *bus;
+       struct list_head *list;
+       
+       for(list = usbbuslist.next; list != &usbbuslist; list = list->next) {
+               bus = list_entry(list, struct usbbusnode, list);
+               markdel(&bus->childlist);
+       }
+}
+
+struct usbbusnode *devtree_findbus(unsigned int busn)
+{
+       struct usbbusnode *bus;
+       struct list_head *list;
+       
+       for(list = usbbuslist.next; list != &usbbuslist; list = list->next) {
+               bus = list_entry(list, struct usbbusnode, list);
+               if (bus->busnum == busn)
+                       return bus;
+       }
+       return NULL;
+}
+
+static struct usbdevnode *findsubdevice(struct list_head *list, unsigned int devn)
+{
+       struct usbdevnode *dev, *dev2;
+       struct list_head *list2;
+
+       for (list2 = list->next; list2 != list; list2 = list2->next) {
+               dev = list_entry(list2, struct usbdevnode, list);
+               if (dev->devnum == devn)
+                       return dev;
+               dev2 = findsubdevice(&dev->childlist, devn);
+               if (dev2)
+                       return dev2;
+       }
+       return NULL;
+}
+
+struct usbdevnode *devtree_finddevice(struct usbbusnode *bus, unsigned int devn)
+{
+       return findsubdevice(&bus->childlist, devn);
+}
+
+/* ---------------------------------------------------------------------- */
+
+void devtree_parsedevfile(int fd)
+{
+       char buf[16384];
+       char *start, *end, *lineend, *cp;
+       int ret;
+       unsigned int devnum = 0, busnum = 0, parentdevnum = 0, level = 0;
+       unsigned int class = 0xff, vendor = 0xffff, prodid = 0xffff, speed = 0;
+       struct usbbusnode *bus;
+       struct usbdevnode *dev, *dev2;
+
+       devtree_markdeleted();
+       if (lseek(fd, 0, SEEK_SET) == (off_t)-1)
+               lprintf(0, "lseek: %s (%d)\n", strerror(errno), errno);
+       ret = read(fd, buf, sizeof(buf)-1);
+       if (ret == -1)
+               lprintf(0, "read: %s (%d)\n", strerror(errno), errno);
+       end = buf + ret;
+       *end = 0;
+       start = buf;
+       while (start < end) {
+               lineend = strchr(start, '\n');
+               if (!lineend)
+                       break;
+               *lineend = 0;
+               switch (start[0]) {
+               case 'T':  /* topology line */
+                       if ((cp = strstr(start, "Dev#="))) {
+                               devnum = strtoul(cp + 5, NULL, 0);
+                       } else
+                               devnum = 0;
+                       if ((cp = strstr(start, "Bus="))) {
+                               busnum = strtoul(cp + 4, NULL, 10);
+                       } else
+                               busnum = 0;
+                       if ((cp = strstr(start, "Prnt="))) {
+                               parentdevnum = strtoul(cp + 5, NULL, 10);
+                       } else
+                               parentdevnum = 0;
+                       if ((cp = strstr(start, "Lev="))) {
+                               level = strtoul(cp + 4, NULL, 10);
+                       } else
+                               level = 0;
+                       if (strstr(start, "Spd=1.5"))
+                               speed = 1;
+                       else if (strstr(start, "Spd=12"))
+                               speed = 2;
+                       else 
+                               speed = 0;
+                       break;
+
+               case 'D':
+                       if ((cp = strstr(start, "Cls="))) {
+                               class = strtoul(cp + 4, NULL, 16);
+                       } else
+                               class = 0xff;
+                       break;
+
+               case 'P':
+                       if ((cp = strstr(start, "Vendor="))) {
+                               vendor = strtoul(cp + 7, NULL, 16);
+                       } else
+                               vendor = 0xffff;
+                       if ((cp = strstr(start, "ProdID="))) {
+                               prodid = strtoul(cp + 7, NULL, 16);
+                       } else
+                               prodid = 0xffff;
+                       /* print device */
+#if 0
+                       printf("Device %3d Vendor %04x Product ID %04x Class %02x Speed %s\n",
+                              devnum, vendor, prodid, class, speed == 2 ? "12 MBPS" : speed == 1 ? "1.5 MBPS" : "unknown");
+#endif
+                       if (!(bus = devtree_findbus(busnum))) {
+                               if (!(bus = malloc(sizeof(struct usbbusnode))))
+                                       lprintf(0, "Out of memory\n");
+                               bus->busnum = busnum;
+                               bus->flags = USBFLG_NEW;
+                               INIT_LIST_HEAD(&bus->childlist);
+                               list_add_tail(&bus->list, &usbbuslist);
+                       } else {
+                               bus->flags &= ~USBFLG_DELETED;
+                       }
+                       if (!(dev = devtree_finddevice(bus, devnum)) || dev->vendorid != vendor || dev->productid != prodid) {
+                               if (!(dev = malloc(sizeof(struct usbdevnode))))
+                                       lprintf(0, "Out of memory\n");
+                               dev->devnum = devnum;
+                               dev->flags = USBFLG_NEW;
+                               dev->bus = bus;
+                               dev->vendorid = vendor;
+                               dev->productid = prodid;
+                               INIT_LIST_HEAD(&dev->childlist);
+                               if (level == 0 && parentdevnum == 0) {
+                                       list_add_tail(&dev->list, &bus->childlist);
+                                       dev->parent = NULL;
+                               } else {
+                                       if (!(dev2 = devtree_finddevice(bus, parentdevnum)))
+                                               lprintf(0, "Bus %d Device %d Parent Device %d not found\n", busnum, devnum, parentdevnum);
+                                       dev->parent = dev2;
+                                       list_add_tail(&dev->list, &dev2->childlist);
+                               }
+                       } else {
+                               dev->flags &= ~USBFLG_DELETED;
+                       }
+                       break;
+
+               default:
+                       break;
+               }
+#if 0
+               printf("line: %s\n", start);
+#endif
+               start = lineend + 1;
+       }
+}
+
+/* ---------------------------------------------------------------------- */
+
+static void deletetree(struct list_head *list, unsigned int force)
+{
+       struct usbdevnode *dev;
+       struct list_head *list2;
+
+       for (list2 = list->next; list2 != list;) {
+               dev = list_entry(list2, struct usbdevnode, list);
+               list2 = list2->next;
+               deletetree(&dev->childlist, force || dev->flags & USBFLG_DELETED);
+               if (!force && !(dev->flags & USBFLG_DELETED))
+                       continue;
+               list_del(&dev->list);
+               INIT_LIST_HEAD(&dev->list);
+               devtree_devdisconnect(dev);
+               freedev(dev);
+       }
+}
+
+static void newtree(struct list_head *list)
+{
+       struct usbdevnode *dev;
+       struct list_head *list2;
+
+       for (list2 = list->next; list2 != list; list2 = list2->next) {
+               dev = list_entry(list2, struct usbdevnode, list);
+               if (dev->flags & USBFLG_NEW)
+                       devtree_devconnect(dev);
+               dev->flags &= ~USBFLG_NEW;
+               newtree(&dev->childlist);
+       }
+}
+
+void devtree_processchanges(void)
+{
+       struct list_head *list;
+       struct usbbusnode *bus;
+
+       for (list = usbbuslist.next; list != &usbbuslist;) {
+               bus = list_entry(list, struct usbbusnode, list);
+               list = list->next;
+               deletetree(&bus->childlist, bus->flags & USBFLG_DELETED);
+               if (!(bus->flags & USBFLG_DELETED))
+                       continue;
+               list_del(&bus->list);
+               INIT_LIST_HEAD(&bus->list);
+               devtree_busdisconnect(bus);
+               freebus(bus);
+       }
+       for (list = usbbuslist.next; list != &usbbuslist; list = list->next) {
+               bus = list_entry(list, struct usbbusnode, list);
+               if (bus->flags & USBFLG_NEW)
+                       devtree_busconnect(bus);
+               bus->flags &= ~USBFLG_NEW;
+               newtree(&bus->childlist);
+       }
+}
+
+/* ---------------------------------------------------------------------- */
+
+static void dumpdevlist(struct list_head *list, unsigned int level, unsigned int mask)
+{
+       struct usbdevnode *dev;
+       struct list_head *list2;
+       char buf[512];
+       char *cp;
+       unsigned int i;
+
+       for (list2 = list->next; list2 != list; ) {
+               dev = list_entry(list2, struct usbdevnode, list);
+               list2 = list2->next;
+               for (cp = buf, i = 0; i < level; i++) {
+                       *cp++ = (mask & (1 << i)) ? '|' : ' ';
+                       *cp++ = ' ';
+               }
+               if (list2 != list) {
+                       mask |= (1 << level);
+                       *cp++ = '|';
+               } else {
+                       mask &= ~(1 << level);
+                       *cp++ = '`';
+               }
+               *cp++ = '-';
+               snprintf(cp, buf + sizeof(buf) - cp, "Dev# %3d Vendor 0x%04x Product 0x%04x",
+                        dev->devnum, dev->vendorid, dev->productid);
+               lprintf(1, "%s\n", buf);
+               dumpdevlist(&dev->childlist, level+1, mask);
+       }
+}
+
+void devtree_dump(void)
+{
+       struct list_head *list;
+       struct usbbusnode *bus;
+
+       for (list = usbbuslist.next; list != &usbbuslist; list = list->next) {
+               bus = list_entry(list, struct usbbusnode, list);
+               lprintf(1, "Bus# %2d\n", bus->busnum);
+               dumpdevlist(&bus->childlist, 0, 0);
+       }
+}
diff --git a/devtree.h b/devtree.h
new file mode 100644 (file)
index 0000000..4a453b3
--- /dev/null
+++ b/devtree.h
@@ -0,0 +1,87 @@
+/*****************************************************************************/
+
+/*
+ *      devtree.h  --  USB device tree.
+ *
+ *      Copyright (C) 1999 Thomas Sailer, sailer@ife.ee.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
+ *      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.
+ *
+ *  Please note that the GPL allows you to use the driver, NOT the radio.
+ *  In order to use the radio, you need a license from the communications
+ *  authority of your country.
+ *
+ */
+
+/*****************************************************************************/
+
+#ifndef _DEVTREE_H
+#define _DEVTREE_H
+
+/* ---------------------------------------------------------------------- */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "list.h"
+
+/* ---------------------------------------------------------------------- */
+
+#define USBFLG_DELETED    1
+#define USBFLG_NEW        2
+
+/* ---------------------------------------------------------------------- */
+
+struct usbbusnode {
+       struct list_head list;
+       struct list_head childlist;
+       unsigned int flags;
+
+       unsigned int busnum;
+};
+
+struct usbdevnode {
+       struct list_head list;
+       struct list_head childlist;
+       unsigned int flags;
+
+       struct usbbusnode *bus;
+       struct usbdevnode *parent;
+
+       unsigned int devnum;
+       unsigned int vendorid;
+       unsigned int productid;
+};
+
+extern struct list_head usbbuslist;
+
+/* ---------------------------------------------------------------------- */
+
+extern void devtree_markdeleted(void);
+extern struct usbbusnode *devtree_findbus(unsigned int busn);
+extern struct usbdevnode *devtree_finddevice(struct usbbusnode *bus, unsigned int devn);
+extern void devtree_parsedevfile(int fd);
+extern void devtree_busconnect(struct usbbusnode *bus);
+extern void devtree_busdisconnect(struct usbbusnode *bus);
+extern void devtree_devconnect(struct usbdevnode *dev);
+extern void devtree_devdisconnect(struct usbdevnode *dev);
+extern void devtree_processchanges(void);
+extern void devtree_dump(void);
+
+extern int lprintf(unsigned int vl, const char *format, ...) __attribute__ ((format (printf, 2, 3)));
+
+/* ---------------------------------------------------------------------- */
+#endif /* _DEVTREE_H */
diff --git a/install-sh b/install-sh
new file mode 100755 (executable)
index 0000000..a5897de
--- /dev/null
@@ -0,0 +1,519 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2006-12-25.00
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" ""       $nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+  doit_exec=exec
+else
+  doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+  test "$posix_glob" != "?" || {
+    if (set -f) 2>/dev/null; then
+      posix_glob=
+    else
+      posix_glob=:
+    fi
+  }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+     --help     display this help and exit.
+     --version  display version info and exit.
+
+  -c            (ignored)
+  -C            install only if different (preserve the last data modification time)
+  -d            create directories instead of installing files.
+  -g GROUP      $chgrpprog installed files to GROUP.
+  -m MODE       $chmodprog installed files to MODE.
+  -o USER       $chownprog installed files to USER.
+  -s            $stripprog installed files.
+  -t DIRECTORY  install into DIRECTORY.
+  -T            report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+  RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+  case $1 in
+    -c) ;;
+
+    -C) copy_on_change=true;;
+
+    -d) dir_arg=true;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+       shift;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) mode=$2
+       case $mode in
+         *' '* | *'    '* | *'
+'*       | *'*'* | *'?'* | *'['*)
+           echo "$0: invalid mode: $mode" >&2
+           exit 1;;
+       esac
+       shift;;
+
+    -o) chowncmd="$chownprog $2"
+       shift;;
+
+    -s) stripcmd=$stripprog;;
+
+    -t) dst_arg=$2
+       shift;;
+
+    -T) no_target_directory=true;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    --)        shift
+       break;;
+
+    -*)        echo "$0: invalid option: $1" >&2
+       exit 1;;
+
+    *)  break;;
+  esac
+  shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+  # When -d is used, all remaining arguments are directories to create.
+  # When -t is used, the destination is already specified.
+  # Otherwise, the last argument is the destination.  Remove it from $@.
+  for arg
+  do
+    if test -n "$dst_arg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dst_arg"
+      shift # fnord
+    fi
+    shift # arg
+    dst_arg=$arg
+  done
+fi
+
+if test $# -eq 0; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call `install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+if test -z "$dir_arg"; then
+  trap '(exit $?); exit' 1 2 13 15
+
+  # Set umask so as not to create temps with too-generous modes.
+  # However, 'strip' requires both read and write access to temps.
+  case $mode in
+    # Optimize common cases.
+    *644) cp_umask=133;;
+    *755) cp_umask=22;;
+
+    *[0-7])
+      if test -z "$stripcmd"; then
+       u_plus_rw=
+      else
+       u_plus_rw='% 200'
+      fi
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+    *)
+      if test -z "$stripcmd"; then
+       u_plus_rw=
+      else
+       u_plus_rw=,u+rw
+      fi
+      cp_umask=$mode$u_plus_rw;;
+  esac
+fi
+
+for src
+do
+  # Protect names starting with `-'.
+  case $src in
+    -*) src=./$src;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
+  else
+
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dst_arg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+
+    dst=$dst_arg
+    # Protect names starting with `-'.
+    case $dst in
+      -*) dst=./$dst;;
+    esac
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+       echo "$0: $dst_arg: Is a directory" >&2
+       exit 1
+      fi
+      dstdir=$dst
+      dst=$dstdir/`basename "$src"`
+      dstdir_status=0
+    else
+      # Prefer dirname, but fall back on a substitute if dirname fails.
+      dstdir=`
+       (dirname "$dst") 2>/dev/null ||
+       expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+            X"$dst" : 'X\(//\)[^/]' \| \
+            X"$dst" : 'X\(//\)$' \| \
+            X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+       echo X"$dst" |
+           sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)[^/].*/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\).*/{
+                  s//\1/
+                  q
+                }
+                s/.*/./; q'
+      `
+
+      test -d "$dstdir"
+      dstdir_status=$?
+    fi
+  fi
+
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+       # Create intermediate dirs using mode 755 as modified by the umask.
+       # This is like FreeBSD 'install' as of 1997-10-28.
+       umask=`umask`
+       case $stripcmd.$umask in
+         # Optimize common cases.
+         *[2367][2367]) mkdir_umask=$umask;;
+         .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+         *[0-7])
+           mkdir_umask=`expr $umask + 22 \
+             - $umask % 100 % 40 + $umask % 20 \
+             - $umask % 10 % 4 + $umask % 2
+           `;;
+         *) mkdir_umask=$umask,go-w;;
+       esac
+
+       # With -d, create the new directory with the user-specified mode.
+       # Otherwise, rely on $mkdir_umask.
+       if test -n "$dir_arg"; then
+         mkdir_mode=-m$mode
+       else
+         mkdir_mode=
+       fi
+
+       posix_mkdir=false
+       case $umask in
+         *[123567][0-7][0-7])
+           # POSIX mkdir -p sets u+wx bits regardless of umask, which
+           # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+           ;;
+         *)
+           tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+           trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+           if (umask $mkdir_umask &&
+               exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+           then
+             if test -z "$dir_arg" || {
+                  # Check for POSIX incompatibilities with -m.
+                  # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+                  # other-writeable bit of parent directory when it shouldn't.
+                  # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+                  ls_ld_tmpdir=`ls -ld "$tmpdir"`
+                  case $ls_ld_tmpdir in
+                    d????-?r-*) different_mode=700;;
+                    d????-?--*) different_mode=755;;
+                    *) false;;
+                  esac &&
+                  $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+                    ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+                    test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+                  }
+                }
+             then posix_mkdir=:
+             fi
+             rmdir "$tmpdir/d" "$tmpdir"
+           else
+             # Remove any dirs left behind by ancient mkdir implementations.
+             rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+           fi
+           trap '' 0;;
+       esac;;
+    esac
+
+    if
+      $posix_mkdir && (
+       umask $mkdir_umask &&
+       $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
+
+      # The umask is ridiculous, or mkdir does not conform to POSIX,
+      # or it failed possibly due to a race condition.  Create the
+      # directory the slow way, step by step, checking for races as we go.
+
+      case $dstdir in
+       /*) prefix='/';;
+       -*) prefix='./';;
+       *)  prefix='';;
+      esac
+
+      eval "$initialize_posix_glob"
+
+      oIFS=$IFS
+      IFS=/
+      $posix_glob set -f
+      set fnord $dstdir
+      shift
+      $posix_glob set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+       test -z "$d" && continue
+
+       prefix=$prefix$d
+       if test -d "$prefix"; then
+         prefixes=
+       else
+         if $posix_mkdir; then
+           (umask=$mkdir_umask &&
+            $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+           # Don't fail if two instances are running concurrently.
+           test -d "$prefix" || exit 1
+         else
+           case $prefix in
+             *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+             *) qprefix=$prefix;;
+           esac
+           prefixes="$prefixes '$qprefix'"
+         fi
+       fi
+       prefix=$prefix/
+      done
+
+      if test -n "$prefixes"; then
+       # Don't fail if two instances are running concurrently.
+       (umask $mkdir_umask &&
+        eval "\$doit_exec \$mkdirprog $prefixes") ||
+         test -d "$dstdir" || exit 1
+       obsolete_mkdir_used=true
+      fi
+    fi
+  fi
+
+  if test -n "$dir_arg"; then
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+  else
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+    # Copy the file name to the temp name.
+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+    # If -C, don't bother to copy if it wouldn't change the file.
+    if $copy_on_change &&
+       old=`LC_ALL=C ls -dlL "$dst"    2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+
+       eval "$initialize_posix_glob" &&
+       $posix_glob set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       $posix_glob set +f &&
+
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # Rename the file to the real destination.
+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+      # The rename failed, perhaps because mv can't rename something else
+      # to itself, or perhaps because mv is so ancient that it does not
+      # support -f.
+      {
+       # Now remove or move aside any old file at destination location.
+       # We try this two ways since rm can't unlink itself on some
+       # systems and the destination file might be busy for other
+       # reasons.  In this case, the final cleanup might fail but the new
+       # file should still install successfully.
+       {
+         test ! -f "$dst" ||
+         $doit $rmcmd -f "$dst" 2>/dev/null ||
+         { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+           { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+         } ||
+         { echo "$0: cannot unlink or rename $dst" >&2
+           (exit 1); exit 1
+         }
+       } &&
+
+       # Now rename the file to the real destination.
+       $doit $mvcmd "$dsttmp" "$dst"
+      }
+    fi || exit 1
+
+    trap '' 0
+  fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/list.h b/list.h
new file mode 100644 (file)
index 0000000..9ed03f3
--- /dev/null
+++ b/list.h
@@ -0,0 +1,105 @@
+#ifndef _LINUX_LIST_H
+#define _LINUX_LIST_H
+
+/*
+ * Simple doubly linked list implementation.
+ *
+ * Some of the internal functions ("__xxx") are useful when
+ * manipulating whole lists rather than single entries, as
+ * sometimes we already know the next/prev entries and we can
+ * generate better code by using them directly rather than
+ * using the generic single-entry routines.
+ */
+
+struct list_head {
+       struct list_head *next, *prev;
+};
+
+#define LIST_HEAD_INIT(name) { &(name), &(name) }
+
+#define LIST_HEAD(name) \
+       struct list_head name = LIST_HEAD_INIT(name)
+
+#define INIT_LIST_HEAD(ptr) do { \
+       (ptr)->next = (ptr); (ptr)->prev = (ptr); \
+} while (0)
+
+/*
+ * Insert a new entry between two known consecutive entries. 
+ *
+ * This is only for internal list manipulation where we know
+ * the prev/next entries already!
+ */
+static __inline__ void __list_add(struct list_head * new,
+       struct list_head * prev,
+       struct list_head * next)
+{
+       next->prev = new;
+       new->next = next;
+       new->prev = prev;
+       prev->next = new;
+}
+
+/*
+ * Insert a new entry after the specified head..
+ */
+static __inline__ void list_add(struct list_head *new, struct list_head *head)
+{
+       __list_add(new, head, head->next);
+}
+
+/*
+ * Insert a new entry before the specified head..
+ */
+static __inline__ void list_add_tail(struct list_head *new, struct list_head *head)
+{
+       __list_add(new, head->prev, head);
+}
+
+/*
+ * Delete a list entry by making the prev/next entries
+ * point to each other.
+ *
+ * This is only for internal list manipulation where we know
+ * the prev/next entries already!
+ */
+static __inline__ void __list_del(struct list_head * prev,
+                                 struct list_head * next)
+{
+       next->prev = prev;
+       prev->next = next;
+}
+
+static __inline__ void list_del(struct list_head *entry)
+{
+       __list_del(entry->prev, entry->next);
+}
+
+static __inline__ int list_empty(struct list_head *head)
+{
+       return head->next == head;
+}
+
+/*
+ * Splice in "list" into "head"
+ */
+static __inline__ void list_splice(struct list_head *list, struct list_head *head)
+{
+       struct list_head *first = list->next;
+
+       if (first != list) {
+               struct list_head *last = list->prev;
+               struct list_head *at = head->next;
+
+               first->prev = head;
+               head->next = first;
+
+               last->next = at;
+               at->prev = last;
+       }
+}
+
+#define list_entry(ptr, type, member) \
+       ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
+
+#endif
diff --git a/lsusb-t.c b/lsusb-t.c
new file mode 100644 (file)
index 0000000..f604155
--- /dev/null
+++ b/lsusb-t.c
@@ -0,0 +1,710 @@
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <dirent.h>
+#include <string.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <stddef.h>
+
+#include "list.h"
+
+#define MY_SYSFS_FILENAME_LEN 255
+#define MY_PATH_MAX 4096
+
+struct usbinterface {
+       struct list_head list;
+       struct usbinterface *next;
+       struct usbdevice *parent;
+       unsigned int configuration;
+       unsigned int ifnum;
+
+       unsigned int bAlternateSetting;
+       unsigned int bInterfaceClass;
+       unsigned int bInterfaceNumber;
+       unsigned int bInterfaceProtocol;
+       unsigned int bInterfaceSubClass;
+       unsigned int bNumEndpoints;
+
+       char name[MY_SYSFS_FILENAME_LEN];
+       char driver[MY_SYSFS_FILENAME_LEN];
+};
+
+struct usbdevice {
+       struct list_head list;  /* connect devices independant of the bus */
+       struct usbdevice *next; /* next port on this hub */
+       struct usbinterface *first_interface;   /* list of interfaces */
+       struct usbdevice *first_child;  /* connect devices on this port */
+       struct usbdevice *parent;       /* hub this device is connected to */
+       unsigned int busnum;
+       unsigned int parent_portnum;
+       unsigned int portnum;
+
+       unsigned int bConfigurationValue;
+       unsigned int bDeviceClass;
+       unsigned int bDeviceProtocol;
+       unsigned int bDeviceSubClass;
+       unsigned int bMaxPacketSize0;
+       char bMaxPower[64];
+       unsigned int bNumConfigurations;
+       unsigned int bNumInterfaces;
+       unsigned int bcdDevice;
+       unsigned int bmAttributes;
+       unsigned int configuration;
+       unsigned int devnum;
+       unsigned int idProduct;
+       unsigned int idVendor;
+       unsigned int maxchild;
+       char manufacturer[64];
+       char product[64];
+       char serial[64];
+       char version[64];
+       char speed[4 + 1];      /* '1.5','12','480' + '\n' */
+
+       char name[MY_SYSFS_FILENAME_LEN];
+       char driver[MY_SYSFS_FILENAME_LEN];
+};
+
+struct usbbusnode {
+       struct usbbusnode *next;
+       struct usbinterface *first_interface;   /* list of interfaces */
+       struct usbdevice *first_child;  /* connect childs belonging to this bus */
+       unsigned int busnum;
+
+       unsigned int bDeviceClass;
+       unsigned int devnum;
+       unsigned int maxchild;
+       char speed[4 + 1];      /* '1.5','12','480' + '\n' */
+
+       char driver[MY_SYSFS_FILENAME_LEN];
+};
+
+#define SYSFS_INTu(de,tgt, name) do { tgt->name = read_sysfs_file_int(de,#name,10); } while(0)
+#define SYSFS_INTx(de,tgt, name) do { tgt->name = read_sysfs_file_int(de,#name,16); } while(0)
+#define SYSFS_STR(de,tgt, name) do { read_sysfs_file_string(de, #name, tgt->name, MY_SYSFS_FILENAME_LEN); } while(0)
+
+LIST_HEAD(interfacelist);
+LIST_HEAD(usbdevlist);
+static struct usbbusnode *usbbuslist;
+
+static const char sys_bus_usb_devices[] = "/sys/bus/usb/devices";
+static int indent;
+
+#if 0
+static void dump_usbbusnode(struct usbbusnode *b)
+{
+       printf(" B %p:'%u': n %p fi %p fc %p driver '%s'\n", b, b->busnum, b->next, b->first_interface, b->first_child, b->driver);
+}
+
+static void dump_usbdevice(struct usbdevice *d)
+{
+       printf
+           (" D %p:'%s': n %p fi %p fc %p bn %u ppn %u pn %u p %p bCV %u bDC %02x bDP %02x bDSC %02x bMPS %02x bMP '%s' bNC %u bNI %u bcdD %02x bmA %02x c %u dn %u idP %04x idV %04x mc %u m '%s' p '%s' s '%s' v '%s' sp '%s' driver '%s'\n",
+            d, d->name, d->next, d->first_interface, d->first_child, d->busnum, d->parent_portnum, d->portnum, d->parent, d->bConfigurationValue, d->bDeviceClass,
+            d->bDeviceProtocol, d->bDeviceSubClass, d->bMaxPacketSize0, d->bMaxPower, d->bNumConfigurations, d->bNumInterfaces, d->bcdDevice, d->bmAttributes,
+            d->configuration, d->devnum, d->idProduct, d->idVendor, d->maxchild, d->manufacturer, d->product, d->serial, d->version, d->speed, d->driver);
+}
+
+static void dump_usbinterface(struct usbinterface *i)
+{
+       printf(" I %p:'%s': n %p c %u if %u bAS %u bIC %02x bIN %02x bIP %02x bISC %02x bNE %u d '%s'\n", i, i->name, i->next, i->configuration, i->ifnum,
+              i->bAlternateSetting, i->bInterfaceClass, i->bInterfaceNumber, i->bInterfaceProtocol, i->bInterfaceSubClass, i->bNumEndpoints, i->driver);
+}
+#endif
+
+static char tmp_str[128];
+static const char *bInterfaceClass_to_str(unsigned int dc)
+{
+       const char *s;
+       switch (dc) {
+       case 0:
+               s = ">ifc";
+               break;
+       case 1:
+               s = "audio";
+               break;
+       case 2:
+               s = "comm.";
+               break;
+       case 3:
+               s = "HID";
+               break;
+       case 5:
+               s = "PID";
+               break;
+       case 6:
+               s = "still";
+               break;
+       case 7:
+               s = "print";
+               break;
+       case 8:
+               s = "stor.";
+               break;
+       case 9:
+               s = "hub";
+               break;
+       case 10:
+               s = "data";
+               break;
+       case 11:
+               s = "scard";
+               break;
+       case 13:
+               s = "c-sec";
+               break;
+       case 254:
+               s = "app.";
+               break;
+       case 255:
+               s = "vend.";
+               break;
+       default:
+               snprintf(tmp_str, 128, "'bInterfaceClass 0x%02x not yet handled'", dc);;
+               s = tmp_str;
+       }
+       return s;
+}
+static const char *bDeviceClass_to_str(unsigned int dc)
+{
+       const char *s;
+       switch (dc) {
+       case 9:
+               s = "root_hub";
+               break;
+       default:
+               snprintf(tmp_str, 128, "'bDeviceClass 0x%02x not yet handled'", dc);;
+               s = tmp_str;
+       }
+       return s;
+}
+static void print_usbbusnode(struct usbbusnode *b)
+{
+       printf("/:  Bus %02u.Port %u: Dev %u, Class=%s, Driver=%s/%up, %sM\n", b->busnum, 1,
+              b->devnum, bDeviceClass_to_str(b->bDeviceClass), b->driver, b->maxchild, b->speed);
+}
+
+static void print_usbdevice(struct usbdevice *d, struct usbinterface *i)
+{
+       if (i->bInterfaceClass == 9)
+               printf("Port %u: Dev %u, If %u, Class=%s, Driver=%s/%up, %sM\n", d->portnum, d->devnum, i->ifnum, bInterfaceClass_to_str(i->bInterfaceClass),
+                      i->driver, d->maxchild, d->speed);
+       else
+               printf("Port %u: Dev %u, If %u, Class=%s, Driver=%s, %sM\n", d->portnum, d->devnum, i->ifnum, bInterfaceClass_to_str(i->bInterfaceClass), i->driver,
+                      d->speed);
+}
+
+static unsigned int read_sysfs_file_int(const char *d_name, const char *file, int base)
+{
+       char buf[12], path[MY_PATH_MAX];
+       int fd;
+       ssize_t r;
+       unsigned long ret;
+       snprintf(path, MY_PATH_MAX, "%s/%s/%s", sys_bus_usb_devices, d_name, file);
+       path[MY_PATH_MAX - 1] = '\0';
+       fd = open(path, O_RDONLY);
+       if (fd < 0)
+               goto error;
+       memset(buf, 0, sizeof(buf));
+       r = read(fd, buf, sizeof(buf) - 1);
+       close(fd);
+       if (r < 0)
+               goto error;
+       buf[sizeof(buf) - 1] = '\0';
+       ret = strtoul(buf, NULL, base);
+       return (unsigned int)ret;
+
+      error:
+       perror(path);
+       return 0;
+}
+
+static void read_sysfs_file_string(const char *d_name, const char *file, char *buf, int len)
+{
+       char path[MY_PATH_MAX];
+       int fd;
+       ssize_t r;
+       fd = snprintf(path, MY_PATH_MAX, "%s/%s/%s", sys_bus_usb_devices, d_name, file);
+       if (fd < 0 || fd >= MY_PATH_MAX)
+               goto error;
+       path[fd] = '\0';
+       fd = open(path, O_RDONLY);
+       if (fd < 0)
+               goto error;
+       r = read(fd, buf, len);
+       close(fd);
+       if (r >= 0 && r < len) {
+               buf[r] = '\0';
+               r--;
+               while (buf[r] == '\n') {
+                       buf[r] = '\0';
+                       r--;
+               }
+               while (r) {
+                       if (buf[r] == '\n')
+                               buf[r] = ' ';
+                       r--;
+               }
+               return;
+       }
+      error:
+       buf[0] = '\0';
+}
+
+static void append_dev_interface(struct usbinterface *i, struct usbinterface *new)
+{
+       while (i->next)
+               i = i->next;
+       i->next = new;
+}
+
+static void append_dev_sibling(struct usbdevice *d, struct usbdevice *new)
+{
+       while (d->next)
+               d = d->next;
+       d->next = new;
+}
+
+static void append_businterface(unsigned int busnum, struct usbinterface *new)
+{
+       struct usbbusnode *b = usbbuslist;
+       struct usbinterface *i;
+       while (b) {
+               if (b->busnum == busnum) {
+                       i = b->first_interface;
+                       if (i) {
+                               while (i->next)
+                                       i = i->next;
+                               i->next = new;
+                       } else
+                               b->first_interface = new;
+                       break;
+               }
+               b = b->next;
+       }
+}
+
+static void append_busnode(struct usbbusnode *new)
+{
+       struct usbbusnode *b = usbbuslist;
+       if (b) {
+               while (b->next)
+                       b = b->next;
+               b->next = new;
+       } else
+               usbbuslist = new;
+}
+
+static void add_usb_interface(const char *d_name)
+{
+       struct usbinterface *e;
+       const char *p;
+       char *pn, link[MY_PATH_MAX];
+       unsigned long i;
+       int l;
+       p = strchr(d_name, ':');
+       p++;
+       i = strtoul(p, &pn, 10);
+       if (!pn || p == pn)
+               return;
+       e = malloc(sizeof(struct usbinterface));
+       if (!e)
+               return;
+       memset(e, 0, sizeof(struct usbinterface));
+       e->configuration = i;
+       p = pn + 1;
+       i = strtoul(p, &pn, 10);
+       if (!pn || p == pn)
+               return;
+       e->ifnum = i;
+       if (snprintf(e->name, MY_SYSFS_FILENAME_LEN, "%s", d_name) >= MY_SYSFS_FILENAME_LEN)
+               printf("warning: '%s' truncated to '%s'\n", e->name, d_name);
+       SYSFS_INTu(d_name, e, bAlternateSetting);
+       SYSFS_INTx(d_name, e, bInterfaceClass);
+       SYSFS_INTx(d_name, e, bInterfaceNumber);
+       SYSFS_INTx(d_name, e, bInterfaceProtocol);
+       SYSFS_INTx(d_name, e, bInterfaceSubClass);
+       SYSFS_INTx(d_name, e, bNumEndpoints);
+       l = snprintf(link, MY_PATH_MAX, "%s/%s/driver", sys_bus_usb_devices, d_name);
+       if (l > 0 && l < MY_PATH_MAX) {
+               l = readlink(link, link, MY_PATH_MAX);
+               if (l < 0)
+                       perror(d_name);
+               else {
+                       if (l < MY_PATH_MAX - 1)
+                               link[l] = '\0';
+                       else
+                               link[0] = '\0';
+                       p = strrchr(link, '/');
+                       if (p)
+                               snprintf(e->driver, sizeof(e->driver), "%s", p + 1);
+               }
+       } else
+               printf("Can not read driver link for '%s': %d\n", d_name, l);
+       list_add_tail(&e->list, &interfacelist);
+}
+
+static void add_usb_device(const char *d_name)
+{
+       struct usbdevice *d;
+       const char *p;
+       char *pn, link[MY_PATH_MAX];
+       unsigned long i;
+       int l;
+       p = d_name;
+       i = strtoul(p, &pn, 10);
+       if (!pn || p == pn)
+               return;
+       d = malloc(sizeof(struct usbdevice));
+       if (!d)
+               return;
+       memset(d, 0, sizeof(struct usbdevice));
+       d->busnum = i;
+       while (pn) {
+               p = pn + 1;
+               i = strtoul(p, &pn, 10);
+               if (p == pn)
+                       break;
+               d->parent_portnum = d->portnum;
+               d->portnum = i;
+       }
+       if (snprintf(d->name, MY_SYSFS_FILENAME_LEN, "%s", d_name) >= MY_SYSFS_FILENAME_LEN)
+               printf("warning: '%s' truncated to '%s'\n", d->name, d_name);
+       SYSFS_INTu(d_name, d, bConfigurationValue);
+       SYSFS_INTx(d_name, d, bDeviceClass);
+       SYSFS_INTx(d_name, d, bDeviceProtocol);
+       SYSFS_INTx(d_name, d, bDeviceSubClass);
+       SYSFS_INTx(d_name, d, bMaxPacketSize0);
+       SYSFS_STR(d_name, d, bMaxPower);
+       SYSFS_INTu(d_name, d, bNumConfigurations);
+       SYSFS_INTx(d_name, d, bNumInterfaces);
+       SYSFS_INTx(d_name, d, bcdDevice);
+       SYSFS_INTx(d_name, d, bmAttributes);
+       SYSFS_INTu(d_name, d, configuration);
+       SYSFS_INTu(d_name, d, devnum);
+       SYSFS_INTx(d_name, d, idProduct);
+       SYSFS_INTx(d_name, d, idVendor);
+       SYSFS_INTu(d_name, d, maxchild);
+       SYSFS_STR(d_name, d, manufacturer);
+       SYSFS_STR(d_name, d, product);
+       SYSFS_STR(d_name, d, serial);
+       SYSFS_STR(d_name, d, version);
+       SYSFS_STR(d_name, d, speed);
+       l = snprintf(link, MY_PATH_MAX, "%s/%s/driver", sys_bus_usb_devices, d_name);
+       if (l > 0 && l < MY_PATH_MAX) {
+               l = readlink(link, link, MY_PATH_MAX);
+               if (l < 0)
+                       perror(d_name);
+               else {
+                       if (l < MY_PATH_MAX - 1)
+                               link[l] = '\0';
+                       else
+                               link[0] = '\0';
+                       p = strrchr(link, '/');
+                       if (p)
+                               snprintf(d->driver, sizeof(d->driver), "%s", p + 1);
+               }
+       } else
+               printf("Can not read driver link for '%s': %d\n", d_name, l);
+       list_add_tail(&d->list, &usbdevlist);
+}
+
+static void get_roothub_driver(struct usbbusnode *b, const char *d_name)
+{
+       char *p, path[MY_PATH_MAX];
+       int l;
+       l = snprintf(path, MY_PATH_MAX, "%s/%s/../driver", sys_bus_usb_devices, d_name);
+       if (l > 0 && l < MY_PATH_MAX) {
+               l = readlink(path, path, MY_PATH_MAX);
+               if (l < 0)
+                       perror(d_name);
+               else {
+                       if (l < MY_PATH_MAX - 1)
+                               path[l] = '\0';
+                       else
+                               path[0] = '\0';
+                       p = strrchr(path, '/');
+                       if (p)
+                               snprintf(b->driver, sizeof(b->driver), "%s", p + 1);
+               }
+       } else
+               printf("Can not read driver link for '%s': %d\n", d_name, l);
+}
+
+static void add_usb_bus(const char *d_name)
+{
+       struct usbbusnode *bus;
+       bus = malloc(sizeof(struct usbbusnode));
+       if (bus) {
+               memset(bus, 0, sizeof(struct usbbusnode));
+               bus->busnum = strtoul(d_name + 3, NULL, 10);
+               SYSFS_INTu(d_name, bus, devnum);
+               SYSFS_INTx(d_name, bus, bDeviceClass);
+               SYSFS_INTu(d_name, bus, maxchild);
+               SYSFS_STR(d_name, bus, speed);
+               append_busnode(bus);
+               get_roothub_driver(bus, d_name);
+       }
+}
+
+static void inspect_bus_entry(const char *d_name)
+{
+       if (d_name[0] == '.' && (!d_name[1] || (d_name[1] == '.' && !d_name[2])))
+               return;
+       if (d_name[0] == 'u' && d_name[1] == 's' && d_name[2] == 'b' && isdigit(d_name[3])) {
+               add_usb_bus(d_name);
+       } else if (isdigit(d_name[0])) {
+               if (strchr(d_name, ':'))
+                       add_usb_interface(d_name);
+               else
+                       add_usb_device(d_name);
+       } else
+               fprintf(stderr, "ignoring '%s'\n", d_name);
+}
+
+static void walk_usb_devices(DIR * sbud)
+{
+       struct dirent *de;
+       while ((de = readdir(sbud)))
+               inspect_bus_entry(de->d_name);
+}
+
+static void assign_dev_to_bus(struct usbdevice *d)
+{
+       struct usbbusnode *b = usbbuslist;
+       while (b) {
+               if (b->busnum == d->busnum) {
+                       if (b->first_child)
+                               append_dev_sibling(b->first_child, d);
+                       else
+                               b->first_child = d;
+               }
+               b = b->next;
+       }
+}
+
+static void assign_dev_to_parent(struct usbdevice *d)
+{
+       struct list_head *l;
+       struct usbdevice *pd;
+       char n[MY_SYSFS_FILENAME_LEN], *p;
+       for (l = usbdevlist.next; l != &usbdevlist; l = l->next) {
+               pd = list_entry(l, struct usbdevice, list);
+               if (pd == d)
+                       continue;
+               if (pd->busnum == d->busnum && pd->portnum == d->parent_portnum) {
+                       strcpy(n, d->name);
+                       p = strrchr(n, '.');
+                       if (p) {
+                               *p = '\0';
+                               if (strcmp(n, pd->name)) {
+                                       continue;
+                               }
+                               d->parent = pd;
+                               if (pd->first_child)
+                                       append_dev_sibling(pd->first_child, d);
+                               else
+                                       pd->first_child = d;
+                               break;
+                       }
+               }
+       }
+}
+
+static void assign_interface_to_parent(struct usbdevice *d, struct usbinterface *i)
+{
+       const char *p;
+       char *pn, name[MY_SYSFS_FILENAME_LEN];
+       ptrdiff_t l;
+       unsigned int busnum;
+
+       p = strchr(i->name, ':');
+       if (p) {
+               l = p - i->name;
+               if (l < MY_SYSFS_FILENAME_LEN) {
+                       memcpy(name, i->name, l);
+                       name[l] = '\0';
+               } else
+                       name[0] = '\0';
+               if (strcmp(d->name, name) == 0) {
+                       i->parent = d;
+                       if (d->first_interface)
+                               append_dev_interface(d->first_interface, i);
+                       else
+                               d->first_interface = i;
+               } else {
+                       busnum = strtoul(name, &pn, 10);
+                       if (pn && pn != name) {
+                               if (p[1] == '0')
+                                       append_businterface(busnum, i);
+                       }
+               }
+       }
+}
+
+static void connect_devices(void)
+{
+       struct list_head *ld, *li;
+       struct usbdevice *d;
+       struct usbinterface *e;
+       for (ld = usbdevlist.next; ld != &usbdevlist; ld = ld->next) {
+               d = list_entry(ld, struct usbdevice, list);
+               if (d->parent_portnum)
+                       assign_dev_to_parent(d);
+               else
+                       assign_dev_to_bus(d);
+               for (li = interfacelist.next; li != &interfacelist; li = li->next) {
+                       e = list_entry(li, struct usbinterface, list);
+                       if (!e->parent)
+                               assign_interface_to_parent(d, e);
+               }
+       }
+       for (li = interfacelist.next; li != &interfacelist; li = li->next) {
+               e = list_entry(li, struct usbinterface, list);
+       }
+}
+
+static void sort_dev_interfaces(struct usbinterface **i)
+{
+       struct usbinterface *t, *p, **pp;
+       int swapped;
+       p = *i;
+       pp = i;
+       do {
+               p = *i;
+               pp = i;
+               swapped = 0;
+               while (p->next) {
+                       if (p->configuration > p->next->configuration) {
+                               t = p->next;
+                               p->next = t->next;
+                               t->next = p;
+                               *pp = t;
+                               swapped = 1;
+                               p = t;
+                       }
+                       if (p->ifnum > p->next->ifnum) {
+                               t = p->next;
+                               p->next = t->next;
+                               t->next = p;
+                               *pp = t;
+                               swapped = 1;
+                               p = t;
+                       }
+                       pp = &p->next;
+                       p = p->next;
+               }
+       } while (swapped);
+}
+
+static void sort_dev_siblings(struct usbdevice **d)
+{
+       struct usbdevice *t, *p, **pp;
+       int swapped;
+       p = *d;
+       pp = d;
+       if (p->first_child)
+               sort_dev_siblings(&p->first_child);
+       if (p->first_interface)
+               sort_dev_interfaces(&p->first_interface);
+       do {
+               p = *d;
+               pp = d;
+               swapped = 0;
+               while (p->next) {
+                       if (p->portnum > p->next->portnum) {
+                               t = p->next;
+                               p->next = t->next;
+                               t->next = p;
+                               *pp = t;
+                               swapped = 1;
+                               p = t;
+                       }
+                       pp = &p->next;
+                       p = p->next;
+               }
+       } while (swapped);
+}
+
+static void sort_devices(void)
+{
+       struct usbbusnode *b = usbbuslist;
+       while (b) {
+               if (b->first_child)
+                       sort_dev_siblings(&b->first_child);
+               b = b->next;
+       }
+}
+
+static void sort_busses(void)
+{
+       /* need to reverse sort bus numbers */
+       struct usbbusnode *t, *p, **pp;
+       int swapped;
+       do {
+               p = usbbuslist;
+               pp = &usbbuslist;
+               swapped = 0;
+               while (p->next) {
+                       if (p->busnum < p->next->busnum) {
+                               t = p->next;
+                               p->next = t->next;
+                               t->next = p;
+                               *pp = t;
+                               swapped = 1;
+                               p = t;
+                       }
+                       pp = &p->next;
+                       p = p->next;
+               }
+       } while (swapped);
+}
+
+static void print_tree_dev_interface(struct usbdevice *d, struct usbinterface *i)
+{
+       indent += 3;
+       while (i) {
+               printf(" %*s", indent, "|__ ");
+               print_usbdevice(d, i);
+               i = i->next;
+       }
+       indent -= 3;
+}
+static void print_tree_dev_children(struct usbdevice *d)
+{
+       indent += 4;
+       while (d) {
+               print_tree_dev_interface(d, d->first_interface);
+               print_tree_dev_children(d->first_child);
+               d = d->next;
+       }
+       indent -= 4;
+}
+
+static void print_tree(void)
+{
+       struct usbbusnode *b = usbbuslist;
+       while (b) {
+               print_usbbusnode(b);
+               if (b->first_child)
+                       print_tree_dev_children(b->first_child);
+               b = b->next;
+       }
+}
+
+int lsusb_t(void)
+{
+       DIR *sbud = opendir(sys_bus_usb_devices);
+       if (sbud) {
+               walk_usb_devices(sbud);
+               closedir(sbud);
+               connect_devices();
+               sort_devices();
+               sort_busses();
+               print_tree();
+       } else
+               perror(sys_bus_usb_devices);
+       return sbud == NULL;
+}
diff --git a/lsusb.8.in b/lsusb.8.in
new file mode 100644 (file)
index 0000000..f381749
--- /dev/null
@@ -0,0 +1,67 @@
+.TH lsusb 8 "6 May 2009" "usbutils-VERSION" "Linux USB Utilities"
+.IX lsusb
+.SH NAME
+lsusb \- list USB devices
+.SH SYNOPSIS
+.B lsusb
+[
+.I options
+]
+.SH DESCRIPTION
+.B lsusb
+is a utility for displaying information about USB buses in the system and
+the devices connected to them.
+
+.SH OPTIONS
+.TP
+.B \-v, \-\-verbose
+Tells
+.I lsusb
+to be verbose and display detailed information about the devices shown.
+This includes configuration descriptors for the device's current speed.
+Class descriptors will be shown, when available, for USB device classes
+including hub, audio, HID, communications, and chipcard.
+.TP
+\fB\-s\fP [[\fIbus\fP]\fB:\fP][\fIdevnum\fP]
+Show only devices in specified
+.I bus
+and/or
+.I devnum.
+Both ID's are given in decimal and may be omitted.
+.TP
+\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.
+.TP
+.B \-D \fIdevice\fP
+Do not scan the /dev/bus/usb directory,
+instead display only information
+about the device whose device file is given.
+The device file should be something like /dev/bus/usb/001/001.
+This option displays detailed information like the \fBv\fP option;
+you must be root to do this.
+.TP
+.B \-t
+Tells
+.I lsusb
+to dump the physical USB device hierarchy as a tree. This overrides the
+\fBv\fP option.
+.TP
+.B \-V, \-\-version
+Print  version information on standard output,
+then exit successfully.
+
+.SH RETURN VALUE
+If the specified device is not found, a non-zero exit code is returned.
+
+.SH FILES
+.TP
+.B @usbids@
+A list of all known USB ID's (vendors, products, classes, subclasses and protocols).
+
+.SH SEE ALSO
+.BR lspci (8),
+.BR usbview (8).
+
+.SH AUTHOR
+Thomas Sailer, <sailer@ife.ee.ethz.ch>.
diff --git a/lsusb.c b/lsusb.c
new file mode 100644 (file)
index 0000000..b3b6cb1
--- /dev/null
+++ b/lsusb.c
@@ -0,0 +1,3085 @@
+/*****************************************************************************/
+
+/*
+ *      lsusb.c  --  lspci like utility for the USB bus
+ *
+ *      Copyright (C) 1999-2001, 2003
+ *        Thomas Sailer (t.sailer@alumni.ethz.ch)
+ *      Copyright (C) 2003-2005 David Brownell
+ *
+ *      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 "config.h"
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <string.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <byteswap.h>
+#include <usb.h>
+
+#include "names.h"
+#include "devtree.h"
+#include "usbmisc.h"
+
+#include <getopt.h>
+
+#if (__BYTE_ORDER == __LITTLE_ENDIAN)
+  #define le16_to_cpu(x) (x)
+#elif (__BYTE_ORDER == __BIG_ENDIAN)
+  #define le16_to_cpu(x) bswap_16(x)
+#else
+  #error missing BYTE_ORDER
+#endif
+
+/* 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
+#define USB_DT_SECURITY                        0x0c
+#define USB_DT_KEY                     0x0d
+#define USB_DT_ENCRYPTION_TYPE         0x0e
+#define USB_DT_BOS                     0x0f
+#define USB_DT_DEVICE_CAPABILITY       0x10
+#define USB_DT_WIRELESS_ENDPOINT_COMP  0x11
+#define USB_DT_WIRE_ADAPTER            0x21
+#define USB_DT_RPIPE                   0x22
+
+#define USB_DT_RC_INTERFACE            0x23
+
+/* Conventional codes for class-specific descriptors.  The convention is
+ * defined in the USB "Common Class" Spec (3.11).  Individual class specs
+ * are authoritative for their usage, not the "common class" writeup.
+ */
+#define USB_DT_CS_DEVICE               (USB_TYPE_CLASS | USB_DT_DEVICE)
+#define USB_DT_CS_CONFIG               (USB_TYPE_CLASS | USB_DT_CONFIG)
+#define USB_DT_CS_STRING               (USB_TYPE_CLASS | USB_DT_STRING)
+#define USB_DT_CS_INTERFACE            (USB_TYPE_CLASS | USB_DT_INTERFACE)
+#define USB_DT_CS_ENDPOINT             (USB_TYPE_CLASS | USB_DT_ENDPOINT)
+
+#ifndef USB_CLASS_CCID
+#define USB_CLASS_CCID                 0x0b
+#endif
+
+#ifndef USB_CLASS_VIDEO
+#define USB_CLASS_VIDEO                        0x0e
+#endif
+
+#ifndef USB_CLASS_APPLICATION
+#define USB_CLASS_APPLICATION          0xfe
+#endif
+
+#define VERBLEVEL_DEFAULT 0    /* 0 gives lspci behaviour; 1, lsusb-0.9 */
+
+#define CTRL_RETRIES    2
+#define CTRL_TIMEOUT   (5*1000)        /* milliseconds */
+
+#define        HUB_STATUS_BYTELEN      3       /* max 3 bytes status = hub + 23 ports */
+
+extern int lsusb_t(void);
+static const char *procbususb = "/proc/bus/usb";
+static unsigned int verblevel = VERBLEVEL_DEFAULT;
+static int do_report_desc = 1;
+static const char *encryption_type[] = {"UNSECURE", "WIRED", "CCM_1", "RSA_1", "RESERVED"};
+
+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(unsigned char *buf);
+static void dump_midistreaming_interface(struct usb_dev_handle *dev, unsigned char *buf);
+static void dump_videocontrol_interface(struct usb_dev_handle *dev, unsigned char *buf);
+static void dump_videostreaming_interface(unsigned char *buf);
+static void dump_dfu_interface(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(unsigned char *buf);
+static void dump_midistreaming_endpoint(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);
+}
+
+/* ---------------------------------------------------------------------- */
+
+/* workaround libusb API goofs:  "byte" should never be sign extended;
+ * using "char" is trouble.  Likewise, sizes should never be negative.
+ */
+
+static inline int typesafe_control_msg(usb_dev_handle *dev,
+       unsigned char requesttype, unsigned char request,
+       int value, int index,
+       unsigned char *bytes, unsigned size, int timeout)
+{
+       return usb_control_msg(dev, requesttype, request, value, index,
+               (char *) bytes, (int) size, timeout);
+}
+
+#define usb_control_msg                typesafe_control_msg
+
+/* ---------------------------------------------------------------------- */
+
+int lprintf(unsigned int vl, const char *format, ...)
+{
+       va_list ap;
+       int r;
+
+       if (vl > verblevel)
+               return 0;
+       va_start(ap, format);
+       r = vfprintf(stderr, format, ap);
+       va_end(ap);
+       if (!vl)
+               exit(1);
+       return r;
+}
+
+/* ---------------------------------------------------------------------- */
+
+static int get_string(struct usb_dev_handle *dev, char* buf, size_t size, u_int8_t id)
+{
+       int ret;
+
+       if (!dev) {
+               buf[0] = 0;
+               return 0;
+       }
+
+       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;
+       }
+}
+
+static int get_vendor_string(char *buf, size_t size, u_int16_t vid)
+{
+       const char *cp;
+
+       if (size < 1)
+               return 0;
+       *buf = 0;
+       if (!(cp = names_vendor(vid)))
+               return 0;
+       return snprintf(buf, size, "%s", cp);
+}
+
+static int get_product_string(char *buf, size_t size, u_int16_t vid, u_int16_t pid)
+{
+       const char *cp;
+
+       if (size < 1)
+               return 0;
+       *buf = 0;
+       if (!(cp = names_product(vid, pid)))
+               return 0;
+       return snprintf(buf, size, "%s", cp);
+}
+
+static int get_class_string(char *buf, size_t size, u_int8_t cls)
+{
+       const char *cp;
+
+       if (size < 1)
+               return 0;
+       *buf = 0;
+       if (!(cp = names_class(cls)))
+               return 0;
+       return snprintf(buf, size, "%s", cp);
+}
+
+static int get_subclass_string(char *buf, size_t size, u_int8_t cls, u_int8_t subcls)
+{
+       const char *cp;
+
+       if (size < 1)
+               return 0;
+       *buf = 0;
+       if (!(cp = names_subclass(cls, subcls)))
+               return 0;
+       return snprintf(buf, size, "%s", cp);
+}
+
+static int get_protocol_string(char *buf, size_t size, u_int8_t cls, u_int8_t subcls, u_int8_t proto)
+{
+       const char *cp;
+
+       if (size < 1)
+               return 0;
+       *buf = 0;
+       if (!(cp = names_protocol(cls, subcls, proto)))
+               return 0;
+       return snprintf(buf, size, "%s", cp);
+}
+
+static int get_audioterminal_string(char *buf, size_t size, u_int16_t termt)
+{
+       const char *cp;
+
+       if (size < 1)
+               return 0;
+       *buf = 0;
+       if (!(cp = names_audioterminal(termt)))
+               return 0;
+       return snprintf(buf, size, "%s", cp);
+}
+
+static int get_videoterminal_string(char *buf, size_t size, u_int16_t termt)
+{
+       const char *cp;
+
+       if (size < 1)
+               return 0;
+       *buf = 0;
+       if (!(cp = names_videoterminal(termt)))
+               return 0;
+       return snprintf(buf, size, "%s", cp);
+}
+
+static const char *get_guid(unsigned char *buf)
+{
+       static char guid[39];
+
+       /* NOTE:  see RFC 4122 for more information about GUID/UUID
+        * structure.  The first fields fields are historically big
+        * endian numbers, dating from Apollo mc68000 workstations.
+        */
+       sprintf(guid, "{%02x%02x%02x%02x"
+                       "-%02x%02x"
+                       "-%02x%02x"
+                       "-%02x%02x"
+                       "-%02x%02x%02x%02x%02x%02x}",
+              buf[0], buf[1], buf[2], buf[3],
+              buf[4], buf[5],
+              buf[6], buf[7],
+              buf[8], buf[9],
+              buf[10], buf[11], buf[12], buf[13], buf[14], buf[15]);
+       return guid;
+}
+
+/* ---------------------------------------------------------------------- */
+
+static void dump_bytes(unsigned char *buf, unsigned int len)
+{
+       unsigned int i;
+
+       for (i = 0; i < len; i++)
+               printf(" %02x", buf[i]);
+       printf("\n");
+}
+
+static void dump_junk(unsigned char *buf, const char *indent, unsigned int len)
+{
+       unsigned int i;
+
+       if (buf[0] <= len)
+               return;
+       printf("%sjunk at descriptor end:", indent);
+       for (i = len; i < buf[0]; i++)
+               printf(" %02x", buf[i]);
+       printf("\n");
+}
+
+/*
+ * General config descriptor dump
+ */
+
+static void dump_device(
+       struct usb_dev_handle *dev,
+       struct usb_device_descriptor *descriptor
+)
+{
+       char vendor[128], product[128];
+       char cls[128], subcls[128], proto[128];
+       char mfg[128], prod[128], serial[128];
+
+       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"
+              "  bcdUSB              %2x.%02x\n"
+              "  bDeviceClass        %5u %s\n"
+              "  bDeviceSubClass     %5u %s\n"
+              "  bDeviceProtocol     %5u %s\n"
+              "  bMaxPacketSize0     %5u\n"
+              "  idVendor           0x%04x %s\n"
+              "  idProduct          0x%04x %s\n"
+              "  bcdDevice           %2x.%02x\n"
+              "  iManufacturer       %5u %s\n"
+              "  iProduct            %5u %s\n"
+              "  iSerial             %5u %s\n"
+              "  bNumConfigurations  %5u\n",
+              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_wire_adapter(unsigned char *buf)
+{
+
+       printf( "      Wire Adapter Class Descriptor:\n"
+               "        bLength             %5u\n"
+               "        bDescriptorType     %5u\n"
+               "        bcdWAVersion        %2x.%02x\n"
+               "        bNumPorts           %5u\n"
+               "        bmAttributes        %5u\n"
+               "        wNumRPRipes         %5u\n"
+               "        wRPipeMaxBlock      %5u\n"
+               "        bRPipeBlockSize     %5u\n"
+               "        bPwrOn2PwrGood      %5u\n"
+               "        bNumMMCIEs          %5u\n"
+               "        DeviceRemovable     %5u\n",
+               buf[0], buf[1], buf[3],
+               buf[2], buf[4], buf[5],
+               ( buf[6] | buf[7] << 8 ),
+               ( buf[8] | buf[9] << 8 ),
+               buf[10], buf[11], buf[12], buf[13]);
+}
+
+static void dump_rc_interface(unsigned char *buf)
+{
+       printf( "      Radio Control Interface Class Descriptor:\n"
+               "        bLength             %5u\n"
+               "        bDescriptorType     %5u\n"
+               "        bcdRCIVersion       %2x.%02x\n",
+               buf[0], buf[1], buf[3], buf[2]);
+
+}
+
+static void dump_security(unsigned char *buf)
+{
+       printf( "    Security Descriptor:\n"
+               "      bLength             %5u\n"
+               "      bDescriptorType     %5u\n"
+               "      wTotalLength        %5u\n"
+               "      bNumEncryptionTypes %5u\n",
+               buf[0], buf[1],
+               (buf[3]<< 8 | buf[2]),
+               buf[4]);
+}
+
+static void dump_encryption_type(unsigned char *buf)
+{
+       int b_encryption_type = buf[2] & 0x4;
+
+       printf( "    Encryption Type Descriptor:\n"
+               "      bLength             %5u\n"
+               "      bDescriptorType     %5u\n"
+               "      bEncryptionType     %5u %s\n"
+               "      bEncryptionValue    %5u\n"
+               "      bAuthKeyIndex       %5u\n",
+               buf[0], buf[1],
+               buf[2], encryption_type[b_encryption_type],
+               buf[3], buf[4]);
+}
+
+static void dump_association(struct usb_dev_handle *dev, unsigned char *buf)
+{
+       char cls[128], subcls[128], proto[128];
+       char func[128];
+
+       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(dev, func, sizeof(func), buf[7]);
+       printf("    Interface Association:\n"
+              "      bLength             %5u\n"
+              "      bDescriptorType     %5u\n"
+              "      bFirstInterface     %5u\n"
+              "      bInterfaceCount     %5u\n"
+              "      bFunctionClass      %5u %s\n"
+              "      bFunctionSubClass   %5u %s\n"
+              "      bFunctionProtocol   %5u %s\n"
+              "      iFunction           %5u %s\n",
+              buf[0], buf[1],
+              buf[2], buf[3],
+              buf[4], cls,
+              buf[5], subcls,
+              buf[6], proto,
+              buf[7], func);
+}
+
+static void dump_config(struct usb_dev_handle *dev, struct usb_config_descriptor *config)
+{
+       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 %s\n"
+              "    bmAttributes         0x%02x\n",
+              config->bLength, config->bDescriptorType,
+              le16_to_cpu(config->wTotalLength),
+              config->bNumInterfaces, config->bConfigurationValue,
+              config->iConfiguration,
+              cfg, config->bmAttributes);
+       if (!(config->bmAttributes & 0x80))
+               printf("      (Missing must-be-set bit!)\n");
+       if (config->bmAttributes & 0x40)
+               printf("      Self Powered\n");
+       else
+               printf("      (Bus Powered)\n");
+       if (config->bmAttributes & 0x20)
+               printf("      Remote Wakeup\n");
+       if (config->bmAttributes & 0x10)
+               printf("      Battery Powered\n");
+       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;
+                       case USB_DT_INTERFACE_ASSOCIATION:
+                               dump_association(dev, buf);
+                               break;
+                       case USB_DT_SECURITY:
+                               dump_security(buf);
+                               break;
+                       case USB_DT_ENCRYPTION_TYPE:
+                               dump_encryption_type(buf);
+                               break;
+                       default:
+                               /* often a misplaced class descriptor */
+                               printf("    ** UNRECOGNIZED: ");
+                               dump_bytes(buf, buf[0]);
+                               break;
+                       }
+                       size -= buf[0];
+                       buf += buf[0];
+               }
+       }
+       for (i = 0 ; i < config->bNumInterfaces ; i++)
+               dump_interface(dev, &config->interface[i]);
+}
+
+static void dump_altsetting(struct usb_dev_handle *dev, struct usb_interface_descriptor *interface)
+{
+       char cls[128], subcls[128], proto[128];
+       char ifstr[128];
+
+       unsigned char *buf;
+       unsigned size, i;
+
+       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"
+              "      bInterfaceNumber    %5u\n"
+              "      bAlternateSetting   %5u\n"
+              "      bNumEndpoints       %5u\n"
+              "      bInterfaceClass     %5u %s\n"
+              "      bInterfaceSubClass  %5u %s\n"
+              "      bInterfaceProtocol  %5u %s\n"
+              "      iInterface          %5u %s\n",
+              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]) {
+
+                       /* This is the polite way to provide class specific
+                        * descriptors: explicitly tagged, using common class
+                        * spec conventions.
+                        */
+                       case USB_DT_CS_DEVICE:
+                       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(buf);
+                                               break;
+                                       case 3:
+                                               dump_midistreaming_interface(dev, buf);
+                                               break;
+                                       default:
+                                               goto dump;
+                                       }
+                                       break;
+                               case USB_CLASS_COMM:
+                                       dump_comm_descriptor(dev, buf,
+                                               "      ");
+                                       break;
+                               case USB_CLASS_VIDEO:
+                                       switch (interface->bInterfaceSubClass) {
+                                       case 1:
+                                               dump_videocontrol_interface(dev, buf);
+                                               break;
+                                       case 2:
+                                               dump_videostreaming_interface(buf);
+                                               break;
+                                       default:
+                                               goto dump;
+                                       }
+                                       break;
+                               case USB_CLASS_APPLICATION:
+                                       switch (interface->bInterfaceSubClass) {
+                                       case 1:
+                                               dump_dfu_interface(buf);
+                                               break;
+                                       default:
+                                               goto dump;
+                                       }
+                                       break;
+                               case USB_CLASS_HID:
+                                       dump_hid_device(dev, interface, buf);
+                                       break;
+                               case USB_CLASS_CCID:
+                                       dump_ccid_device(buf);
+                                       break;
+                               default:
+                                       goto dump;
+                               }
+                               break;
+
+                       /* This is the ugly way:  implicitly tagged,
+                        * each class could redefine the type IDs.
+                        */
+                       default:
+                               switch (interface->bInterfaceClass) {
+                               case USB_CLASS_HID:
+                                       dump_hid_device(dev, interface, buf);
+                                       break;
+                               case USB_CLASS_CCID:
+                                       dump_ccid_device(buf);
+                                       break;
+                               case 0xe0:      /* wireless */
+                                       switch (interface->bInterfaceSubClass) {
+                                       case 1:
+                                               switch (interface->bInterfaceProtocol) {
+                                               case 2:
+                                                       dump_rc_interface(buf);
+                                                       break;
+                                               default:
+                                                       goto dump;
+                                               }
+                                               break;
+                                       case 2:
+                                               dump_wire_adapter(buf);
+                                               break;
+                                       default:
+                                               goto dump;
+                                       }
+                                       break;
+                               default:
+                                       /* ... not everything is class-specific */
+                                       switch (buf[1]) {
+                                       case USB_DT_OTG:
+                                               /* handled separately */
+                                               break;
+                                       case USB_DT_INTERFACE_ASSOCIATION:
+                                               dump_association(dev, buf);
+                                               break;
+                                       default:
+dump:
+                                               /* often a misplaced class descriptor */
+                                               printf("      ** UNRECOGNIZED: ");
+                                               dump_bytes(buf, buf[0]);
+                                               break;
+                                       }
+                               }
+                       }
+                       size -= buf[0];
+                       buf += buf[0];
+               }
+       }
+
+       for (i = 0 ; i < interface->bNumEndpoints ; i++)
+               dump_endpoint(dev, interface, &interface->endpoint[i]);
+}
+
+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 *usage[] = { "Data", "Feedback", "Implicit feedback Data", "(reserved)" };
+       static const char *hb[] = { "1x", "2x", "3x", "(?\?)" };
+       unsigned char *buf;
+       unsigned size;
+       unsigned wmax = le16_to_cpu(endpoint->wMaxPacketSize);
+
+       printf("      Endpoint Descriptor:\n"
+              "        bLength             %5u\n"
+              "        bDescriptorType     %5u\n"
+              "        bEndpointAddress     0x%02x  EP %u %s\n"
+              "        bmAttributes        %5u\n"
+              "          Transfer Type            %s\n"
+              "          Synch Type               %s\n"
+              "          Usage Type               %s\n"
+              "        wMaxPacketSize     0x%04x  %s %d bytes\n"
+              "        bInterval           %5u\n",
+              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],
+              wmax, hb[(wmax >> 11) & 3], wmax & 0x7ff,
+              endpoint->bInterval);
+       /* only for audio endpoints */
+       if (endpoint->bLength == 9)
+       printf("        bRefresh            %5u\n"
+              "        bSynchAddress       %5u\n",
+              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(buf);
+                               else if (interface->bInterfaceClass == 1 && interface->bInterfaceSubClass == 3)
+                                       dump_midistreaming_endpoint(buf);
+                               break;
+                       case USB_DT_CS_INTERFACE:
+                               /* MISPLACED DESCRIPTOR ... less indent */
+                               switch (interface->bInterfaceClass) {
+                               case USB_CLASS_COMM:
+                               case USB_CLASS_DATA:    // comm data
+                                       dump_comm_descriptor(dev, buf,
+                                               "      ");
+                                       break;
+                               default:
+                                       printf("        INTERFACE CLASS: ");
+                                       dump_bytes(buf, buf[0]);
+                               }
+                               break;
+                       case USB_DT_OTG:
+                               /* handled separately */
+                               break;
+                       case USB_DT_INTERFACE_ASSOCIATION:
+                               dump_association(dev, buf);
+                               break;
+                       default:
+                               /* often a misplaced class descriptor */
+                               printf("        ** UNRECOGNIZED: ");
+                               dump_bytes(buf, buf[0]);
+                               break;
+                       }
+                       size -= buf[0];
+                       buf += buf[0];
+               }
+       }
+}
+
+static void dump_unit(unsigned int data, unsigned int len)
+{
+       char *systems[5] = { "None", "SI Linear", "SI Rotation",
+                       "English Linear", "English Rotation" };
+
+       char *units[5][8] = {
+               { "None", "None", "None", "None", "None",
+                               "None", "None", "None" },
+               { "None", "Centimeter", "Gram", "Seconds", "Kelvin",
+                               "Ampere", "Candela", "None" },
+               { "None", "Radians",    "Gram", "Seconds", "Kelvin",
+                               "Ampere", "Candela", "None" },
+               { "None", "Inch",       "Slug", "Seconds", "Fahrenheit",
+                               "Ampere", "Candela", "None" },
+               { "None", "Degrees",    "Slug", "Seconds", "Fahrenheit",
+                               "Ampere", "Candela", "None" },
+       };
+
+       unsigned int i;
+       unsigned int sys;
+       int earlier_unit = 0;
+
+       /* First nibble tells us which system we're in. */
+       sys = data & 0xf;
+       data >>= 4;
+
+       if(sys > 4) {
+               if(sys == 0xf)
+                       printf("System: Vendor defined, Unit: (unknown)\n");
+               else
+                       printf("System: Reserved, Unit: (unknown)\n");
+               return;
+       } else {
+               printf("System: %s, Unit: ", systems[sys]);
+       }
+       for (i=1 ; i<len*2 ; i++) {
+               char nibble = data & 0xf;
+               data >>= 4;
+               if (nibble != 0) {
+                       if(earlier_unit++ > 0)
+                               printf("*");
+                       printf("%s", units[sys][i]);
+                       if(nibble != 1) {
+                               /* This is a _signed_ nibble(!) */
+
+                               int val = nibble & 0x7;
+                               if(nibble & 0x08)
+                                       val = -((0x7 & ~val) +1);
+                               printf("^%d", val);
+                       }
+               }
+       }
+       if(earlier_unit == 0)
+               printf("(None)");
+       printf("\n");
+}
+
+/* ---------------------------------------------------------------------- */
+
+/*
+ * Audio Class descriptor dump
+ */
+
+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)",
+               "Left Surround (LS)", "Right Surround (RS)", "Left of Center (LC)", "Right of Center (RC)",
+               "Surround (S)", "Side Left (SL)", "Side Right (SR)", "Top (T)"
+       };
+       static const char *chftrcontrols[] = {
+               "Mute", "Volume", "Bass", "Mid", "Treble", "Graphic Equalizer", "Automatic Gain", "Delay", "Bass Boost", "Loudness"
+       };
+       unsigned int i, chcfg, j, k, N, termt;
+       char chnames[128], term[128], termts[128];
+
+       if (buf[1] != USB_DT_CS_INTERFACE)
+               printf("      Warning: Invalid descriptor\n");
+       else if (buf[0] < 3)
+               printf("      Warning: Descriptor too short\n");
+       printf("      AudioControl Interface Descriptor:\n"
+              "        bLength             %5u\n"
+              "        bDescriptorType     %5u\n"
+              "        bDescriptorSubtype  %5u ",
+              buf[0], buf[1], buf[2]);
+       switch (buf[2]) {
+       case 0x01:  /* HEADER */
+               printf("(HEADER)\n");
+               if (buf[0] < 8+buf[7])
+                       printf("      Warning: Descriptor too short\n");
+               printf("        bcdADC              %2x.%02x\n"
+                      "        wTotalLength        %5u\n"
+                      "        bInCollection       %5u\n",
+                      buf[4], buf[3], buf[5] | (buf[6] << 8), buf[7]);
+               for(i = 0; i < buf[7]; i++)
+                       printf("        baInterfaceNr(%2u)   %5u\n", i, buf[8+i]);
+               dump_junk(buf, "        ", 8+buf[7]);
+               break;
+
+       case 0x02:  /* INPUT_TERMINAL */
+               printf("(INPUT_TERMINAL)\n");
+               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)
+                       printf("      Warning: Descriptor too short\n");
+               chcfg = buf[8] | (buf[9] << 8);
+               printf("        bTerminalID         %5u\n"
+                      "        wTerminalType      0x%04x %s\n"
+                      "        bAssocTerminal      %5u\n"
+                      "        bNrChannels         %5u\n"
+                      "        wChannelConfig     0x%04x\n",
+                      buf[3], termt, termts, buf[6], buf[7], chcfg);
+               for (i = 0; i < 12; i++)
+                       if ((chcfg >> i) & 1)
+                               printf("          %s\n", chconfig[i]);
+               printf("        iChannelNames       %5u %s\n"
+                      "        iTerminal           %5u %s\n",
+                      buf[10], chnames, buf[11], term);
+               dump_junk(buf, "        ", 12);
+               break;
+
+       case 0x03:  /* OUTPUT_TERMINAL */
+               printf("(OUTPUT_TERMINAL)\n");
+               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)
+                       printf("      Warning: Descriptor too short\n");
+               printf("        bTerminalID         %5u\n"
+                      "        wTerminalType      0x%04x %s\n"
+                      "        bAssocTerminal      %5u\n"
+                      "        bSourceID           %5u\n"
+                      "        iTerminal           %5u %s\n",
+                      buf[3], termt, termts, buf[6], buf[7], buf[8], term);
+               dump_junk(buf, "        ", 9);
+               break;
+
+       case 0x04:  /* MIXER_UNIT */
+               printf("(MIXER_UNIT)\n");
+               j = buf[4];
+               k = buf[j+5];
+               if (j == 0 || k == 0) {
+                 printf("      Warning: mixer with %5u input and %5u output channels.\n", j, k);
+                 N = 0;
+               } else {
+                 N = 1+(j*k-1)/8;
+               }
+               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);
+               printf("        bUnitID             %5u\n"
+                      "        bNrInPins           %5u\n",
+                      buf[3], buf[4]);
+               for (i = 0; i < j; i++)
+                       printf("        baSourceID(%2u)      %5u\n", i, buf[5+i]);
+               printf("        bNrChannels         %5u\n"
+                      "        wChannelConfig     0x%04x\n",
+                      buf[5+j], chcfg);
+               for (i = 0; i < 12; i++)
+                       if ((chcfg >> i) & 1)
+                               printf("          %s\n", chconfig[i]);
+               printf("        iChannelNames       %5u %s\n",
+                      buf[8+j], chnames);
+               for (i = 0; i < N; i++)
+                       printf("        bmControls         0x%02x\n", buf[9+j+i]);
+               printf("        iMixer              %5u %s\n", buf[9+j+N], term);
+               dump_junk(buf, "        ", 10+j+N);
+               break;
+
+       case 0x05:  /* SELECTOR_UNIT */
+               printf("(SELECTOR_UNIT)\n");
+               if (buf[0] < 6+buf[4])
+                       printf("      Warning: Descriptor too short\n");
+               get_string(dev, term, sizeof(term), buf[5+buf[4]]);
+
+               printf("        bUnitID             %5u\n"
+                      "        bNrInPins           %5u\n",
+                      buf[3], buf[4]);
+               for (i = 0; i < buf[4]; i++)
+                       printf("        baSource(%2u)        %5u\n", i, buf[5+i]);
+               printf("        iSelector           %5u %s\n",
+                      buf[5+buf[4]], term);
+               dump_junk(buf, "        ", 6+buf[4]);
+               break;
+
+       case 0x06:  /* FEATURE_UNIT */
+               printf("(FEATURE_UNIT)\n");
+               j = buf[5];
+               if (!j)
+                       j = 1;
+               k = (buf[0] - 7) / j;
+               if (buf[0] < 7+buf[5]*k)
+                       printf("      Warning: Descriptor too short\n");
+               get_string(dev, term, sizeof(term), buf[6+buf[5]*k]);
+               printf("        bUnitID             %5u\n"
+                      "        bSourceID           %5u\n"
+                      "        bControlSize        %5u\n",
+                      buf[3], buf[4], buf[5]);
+               for (i = 0; i < k; i++) {
+                       chcfg = buf[6+buf[5]*i];
+                       if (buf[5] > 1)
+                               chcfg |= (buf[7+buf[5]*i] << 8);
+                       for (j = 0; j < buf[5]; 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]);
+               }
+               printf("        iFeature            %5u %s\n", buf[6+buf[5]*k], term);
+               dump_junk(buf, "        ", 7+buf[5]*k);
+               break;
+
+       case 0x07:  /* PROCESSING_UNIT */
+               printf("(PROCESSING_UNIT)\n");
+               j = buf[6];
+               k = buf[11+j];
+               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");
+               printf("        bUnitID             %5u\n"
+                      "        wProcessType        %5u\n"
+                      "        bNrPins             %5u\n",
+                      buf[3], buf[4] | (buf[5] << 8), buf[6]);
+               for (i = 0; i < j; i++)
+                       printf("        baSourceID(%2u)      %5u\n", i, buf[7+i]);
+               printf("        bNrChannels         %5u\n"
+                      "        wChannelConfig     0x%04x\n", buf[7+j], chcfg);
+               for (i = 0; i < 12; i++)
+                       if ((chcfg >> i) & 1)
+                               printf("          %s\n", chconfig[i]);
+               printf("        iChannelNames       %5u %s\n"
+                      "        bControlSize        %5u\n", buf[10+j], chnames, buf[11+j]);
+               for (i = 0; i < k; i++)
+                       printf("        bmControls(%2u)       0x%02x\n", i, buf[12+j+i]);
+               if (buf[12+j] & 1)
+                       printf("          Enable Processing\n");
+               printf("        iProcessing         %5u %s\n"
+                      "        Process-Specific    ", buf[12+j+k], term);
+               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(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");
+               printf("        bUnitID             %5u\n"
+                      "        wExtensionCode      %5u\n"
+                      "        bNrPins             %5u\n",
+                      buf[3], buf[4] | (buf[5] << 8), buf[6]);
+               for (i = 0; i < j; i++)
+                       printf("        baSourceID(%2u)      %5u\n", i, buf[7+i]);
+               printf("        bNrChannels         %5u\n"
+                      "        wChannelConfig      %5u\n", buf[7+j], chcfg);
+               for (i = 0; i < 12; i++)
+                       if ((chcfg >> i) & 1)
+                               printf("          %s\n", chconfig[i]);
+               printf("        iChannelNames       %5u %s\n"
+                      "        bControlSize        %5u\n", buf[10+j], chnames, buf[11+j]);
+               for (i = 0; i < k; i++)
+                       printf("        bmControls(%2u)       0x%02x\n", i, buf[12+j+i]);
+               if (buf[12+j] & 1)
+                       printf("          Enable Processing\n");
+               printf("        iExtension          %5u %s\n",
+                      buf[12+j+k], term);
+               dump_junk(buf, "        ", 13+j+k);
+               break;
+
+       default:
+               printf("(unknown)\n"
+                      "        Invalid desc subtype:");
+               dump_bytes(buf+3, buf[0]-3);
+               break;
+       }
+}
+
+static void dump_audiostreaming_interface(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" };
+       static const char *fmtIIItag[] = {
+               "TYPE_III_UNDEFINED", "IEC1937_AC-3", "IEC1937_MPEG-1_Layer1",
+               "IEC1937_MPEG-Layer2/3/NOEXT", "IEC1937_MPEG-2_EXT",
+               "IEC1937_MPEG-2_Layer1_LS", "IEC1937_MPEG-2_Layer2/3_LS" };
+       unsigned int i, j, fmttag;
+       const char *fmtptr = "undefined";
+
+       if (buf[1] != USB_DT_CS_INTERFACE)
+               printf("      Warning: Invalid descriptor\n");
+       else if (buf[0] < 3)
+               printf("      Warning: Descriptor too short\n");
+       printf("      AudioStreaming Interface Descriptor:\n"
+              "        bLength             %5u\n"
+              "        bDescriptorType     %5u\n"
+              "        bDescriptorSubtype  %5u ",
+              buf[0], buf[1], buf[2]);
+       switch (buf[2]) {
+       case 0x01: /* AS_GENERAL */
+               printf("(AS_GENERAL)\n");
+               if (buf[0] < 7)
+                       printf("      Warning: Descriptor too short\n");
+               fmttag = buf[5] | (buf[6] << 8);
+               if (fmttag <= 5)
+                       fmtptr = fmtItag[fmttag];
+               else if (fmttag >= 0x1000 && fmttag <= 0x1002)
+                       fmtptr = fmtIItag[fmttag & 0xfff];
+               else if (fmttag >= 0x2000 && fmttag <= 0x2006)
+                       fmtptr = fmtIIItag[fmttag & 0xfff];
+               printf("        bTerminalLink       %5u\n"
+                      "        bDelay              %5u frames\n"
+                      "        wFormatTag          %5u %s\n",
+                      buf[3], buf[4], fmttag, fmtptr);
+               dump_junk(buf, "        ", 7);
+               break;
+
+       case 0x02: /* FORMAT_TYPE */
+               printf("(FORMAT_TYPE)\n");
+               if (buf[0] < 8)
+                       printf("      Warning: Descriptor too short\n");
+               printf("        bFormatType         %5u ", buf[3]);
+               switch (buf[3]) {
+               case 0x01: /* FORMAT_TYPE_I */
+                       printf("(FORMAT_TYPE_I)\n");
+                       j = buf[7] ? (buf[7]*3+8) : 14;
+                       if (buf[0] < j)
+                               printf("      Warning: Descriptor too short\n");
+                       printf("        bNrChannels         %5u\n"
+                              "        bSubframeSize       %5u\n"
+                              "        bBitResolution      %5u\n"
+                              "        bSamFreqType        %5u %s\n",
+                              buf[4], buf[5], buf[6], buf[7], buf[7] ? "Discrete" : "Continuous");
+                       if (!buf[7])
+                               printf("        tLowerSamFreq     %7u\n"
+                                      "        tUpperSamFreq     %7u\n",
+                                      buf[8] | (buf[9] << 8) | (buf[10] << 16), buf[11] | (buf[12] << 8) | (buf[13] << 16));
+                       else
+                               for (i = 0; i < buf[7]; i++)
+                                       printf("        tSamFreq[%2u]      %7u\n", i,
+                                              buf[8+3*i] | (buf[9+3*i] << 8) | (buf[10+3*i] << 16));
+                       dump_junk(buf, "        ", j);
+                       break;
+
+               case 0x02: /* FORMAT_TYPE_II */
+                       printf("(FORMAT_TYPE_II)\n");
+                       j = buf[8] ? (buf[7]*3+9) : 15;
+                       if (buf[0] < j)
+                               printf("      Warning: Descriptor too short\n");
+                       printf("        wMaxBitRate         %5u\n"
+                              "        wSamplesPerFrame    %5u\n"
+                              "        bSamFreqType        %5u %s\n",
+                              buf[4] | (buf[5] << 8), buf[6] | (buf[7] << 8), buf[8], buf[8] ? "Discrete" : "Continuous");
+                       if (!buf[8])
+                               printf("        tLowerSamFreq     %7u\n"
+                                      "        tUpperSamFreq     %7u\n",
+                                      buf[9] | (buf[10] << 8) | (buf[11] << 16), buf[12] | (buf[13] << 8) | (buf[14] << 16));
+                       else
+                               for (i = 0; i < buf[8]; i++)
+                                       printf("        tSamFreq[%2u]      %7u\n", i,
+                                              buf[9+3*i] | (buf[10+3*i] << 8) | (buf[11+3*i] << 16));
+                       dump_junk(buf, "        ", j);
+                       break;
+
+               case 0x03: /* FORMAT_TYPE_III */
+                       printf("(FORMAT_TYPE_III)\n");
+                       j = buf[7] ? (buf[7]*3+8) : 14;
+                       if (buf[0] < j)
+                               printf("      Warning: Descriptor too short\n");
+                       printf("        bNrChannels         %5u\n"
+                              "        bSubframeSize       %5u\n"
+                              "        bBitResolution      %5u\n"
+                              "        bSamFreqType        %5u %s\n",
+                              buf[4], buf[5], buf[6], buf[7], buf[7] ? "Discrete" : "Continuous");
+                       if (!buf[7])
+                               printf("        tLowerSamFreq     %7u\n"
+                                      "        tUpperSamFreq     %7u\n",
+                                      buf[8] | (buf[9] << 8) | (buf[10] << 16), buf[11] | (buf[12] << 8) | (buf[13] << 16));
+                       else
+                               for (i = 0; i < buf[7]; i++)
+                                       printf("        tSamFreq[%2u]      %7u\n", i,
+                                              buf[8+3*i] | (buf[9+3*i] << 8) | (buf[10+3*i] << 16));
+                       dump_junk(buf, "        ", j);
+                       break;
+
+               default:
+                       printf("(unknown)\n"
+                              "        Invalid desc format type:");
+                       dump_bytes(buf+4, buf[0]-4);
+               }
+               break;
+
+       case 0x03: /* FORMAT_SPECIFIC */
+               printf("(FORMAT_SPECIFIC)\n");
+               if (buf[0] < 5)
+                       printf("      Warning: Descriptor too short\n");
+               fmttag = buf[3] | (buf[4] << 8);
+               if (fmttag <= 5)
+                       fmtptr = fmtItag[fmttag];
+               else if (fmttag >= 0x1000 && fmttag <= 0x1002)
+                       fmtptr = fmtIItag[fmttag & 0xfff];
+               else if (fmttag >= 0x2000 && fmttag <= 0x2006)
+                       fmtptr = fmtIIItag[fmttag & 0xfff];
+               printf("        wFormatTag          %5u %s\n", fmttag, fmtptr);
+               switch (fmttag) {
+               case 0x1001: /* MPEG */
+                       if (buf[0] < 8)
+                               printf("      Warning: Descriptor too short\n");
+                       printf("        bmMPEGCapabilities 0x%04x\n",
+                              buf[5] | (buf[6] << 8));
+                       if (buf[5] & 0x01)
+                               printf("          Layer I\n");
+                       if (buf[5] & 0x02)
+                               printf("          Layer II\n");
+                       if (buf[5] & 0x04)
+                               printf("          Layer III\n");
+                       if (buf[5] & 0x08)
+                               printf("          MPEG-1 only\n");
+                       if (buf[5] & 0x10)
+                               printf("          MPEG-1 dual-channel\n");
+                       if (buf[5] & 0x20)
+                               printf("          MPEG-2 second stereo\n");
+                       if (buf[5] & 0x40)
+                               printf("          MPEG-2 7.1 channel augmentation\n");
+                       if (buf[5] & 0x80)
+                               printf("          Adaptive multi-channel prediction\n");
+                       printf("          MPEG-2 multilingual support: ");
+                       switch (buf[6] & 3) {
+                       case 0:
+                               printf("Not supported\n");
+                               break;
+
+                       case 1:
+                               printf("Supported at Fs\n");
+                               break;
+
+                       case 2:
+                               printf("Reserved\n");
+                               break;
+
+                       default:
+                               printf("Supported at Fs and 1/2Fs\n");
+                               break;
+                       }
+                       printf("        bmMPEGFeatures       0x%02x\n", buf[7]);
+                       printf("          Internal Dynamic Range Control: ");
+                       switch ((buf[7] << 4) & 3) {
+                       case 0:
+                               printf("not supported\n");
+                               break;
+
+                       case 1:
+                               printf("supported but not scalable\n");
+                               break;
+
+                       case 2:
+                               printf("scalable, common boost and cut scaling value\n");
+                               break;
+
+                       default:
+                               printf("scalable, separate boost and cut scaling value\n");
+                               break;
+                       }
+                       dump_junk(buf, "        ", 8);
+                       break;
+
+               case 0x1002: /* AC-3 */
+                       if (buf[0] < 10)
+                               printf("      Warning: Descriptor too short\n");
+                       printf("        bmBSID         0x%08x\n"
+                              "        bmAC3Features        0x%02x\n",
+                              buf[5] | (buf[6] << 8) | (buf[7] << 16) | (buf[8] << 24), buf[9]);
+                       if (buf[9] & 0x0)
+                               printf("          RF mode\n");
+                       if (buf[9] & 0x0)
+                               printf("          Line mode\n");
+                       if (buf[9] & 0x0)
+                               printf("          Custom0 mode\n");
+                       if (buf[9] & 0x0)
+                               printf("          Custom1 mode\n");
+                       printf("          Internal Dynamic Range Control: ");
+                       switch ((buf[9] >> 4) & 3) {
+                       case 0:
+                               printf("not supported\n");
+                               break;
+
+                       case 1:
+                               printf("supported but not scalable\n");
+                               break;
+
+                       case 2:
+                               printf("scalable, common boost and cut scaling value\n");
+                               break;
+
+                       default:
+                               printf("scalable, separate boost and cut scaling value\n");
+                               break;
+                       }
+                       dump_junk(buf, "        ", 8);
+                       break;
+
+               default:
+                       printf("(unknown)\n"
+                              "        Invalid desc format type:");
+                       dump_bytes(buf+4, buf[0]-4);
+               }
+               break;
+
+       default:
+               printf("        Invalid desc subtype:");
+               dump_bytes(buf+3, buf[0]-3);
+               break;
+       }
+}
+
+static void dump_audiostreaming_endpoint(unsigned char *buf)
+{
+       static const char *lockdelunits[] = { "Undefined", "Milliseconds", "Decoded PCM samples", "Reserved" };
+       unsigned int lckdelidx;
+
+       if (buf[1] != USB_DT_CS_ENDPOINT)
+               printf("      Warning: Invalid descriptor\n");
+       else if (buf[0] < 7)
+               printf("      Warning: Descriptor too short\n");
+       printf("        AudioControl Endpoint Descriptor:\n"
+              "          bLength             %5u\n"
+              "          bDescriptorType     %5u\n"
+              "          bDescriptorSubtype  %5u (%s)\n"
+              "          bmAttributes         0x%02x\n",
+              buf[0], buf[1], buf[2], buf[2] == 1 ? "EP_GENERAL" : "invalid", buf[3]);
+       if (buf[3] & 1)
+               printf("            Sampling Frequency\n");
+       if (buf[3] & 2)
+               printf("            Pitch\n");
+       if (buf[3] & 128)
+               printf("            MaxPacketsOnly\n");
+       lckdelidx = buf[4];
+       if (lckdelidx > 3)
+               lckdelidx = 3;
+       printf("          bLockDelayUnits     %5u %s\n"
+              "          wLockDelay          %5u %s\n",
+              buf[4], lockdelunits[lckdelidx], buf[5] | (buf[6] << 8), lockdelunits[lckdelidx]);
+       dump_junk(buf, "        ", 7);
+}
+
+static void dump_midistreaming_interface(struct usb_dev_handle *dev, unsigned char *buf)
+{
+       static const char *jacktypes[] = {"Undefined", "Embedded", "External"};
+       char jackstr[128];
+       unsigned int j, tlength, capssize;
+       unsigned long caps;
+
+       if (buf[1] != USB_DT_CS_INTERFACE)
+               printf("      Warning: Invalid descriptor\n");
+       else if (buf[0] < 3)
+               printf("      Warning: Descriptor too short\n");
+       printf( "      MIDIStreaming Interface Descriptor:\n"
+               "        bLength             %5u\n"
+               "        bDescriptorType     %5u\n"
+               "        bDescriptorSubtype  %5u ",
+               buf[0], buf[1], buf[2]);
+       switch (buf[2]) {
+       case 0x01:
+               printf("(HEADER)\n");
+               if (buf[0] < 7)
+                       printf("      Warning: Descriptor too short\n");
+               tlength = buf[5] | (buf[6] << 8);
+               printf( "        bcdADC              %2x.%02x\n"
+                       "        wTotalLength        %5u\n",
+                       buf[4], buf[3], tlength);
+               dump_junk(buf, "        ", 7);
+               break;
+
+       case 0x02:
+               printf("(MIDI_IN_JACK)\n");
+               if (buf[0] < 6)
+                       printf("      Warning: Descriptor too short\n");
+               get_string(dev, jackstr, sizeof(jackstr), buf[5]);
+               printf( "        bJackType           %5u %s\n"
+                       "        bJackID             %5u\n"
+                       "        iJack               %5u %s\n",
+                       buf[3], buf[3] < 3 ? jacktypes[buf[3]] : "Invalid",
+                       buf[4], buf[5], jackstr);
+               dump_junk(buf, "        ", 6);
+               break;
+
+       case 0x03:
+               printf("(MIDI_OUT_JACK)\n");
+               if (buf[0] < 9)
+                       printf("      Warning: Descriptor too short\n");
+               printf( "        bJackType           %5u %s\n"
+                       "        bJackID             %5u\n"
+                       "        bNrInputPins        %5u\n",
+                       buf[3], buf[3] < 3 ? jacktypes[buf[3]] : "Invalid",
+                       buf[4], buf[5]);
+               for (j=0; j < buf[5]; j++) {
+                       printf( "        baSourceID(%2u)      %5u\n"
+                               "        BaSourcePin(%2u)     %5u\n",
+                               j, buf[2*j+6], j, buf[2*j+7]);
+               }
+               j = 6+buf[5]*2; /* midi10.pdf says, incorrectly: 5+2*p */
+               get_string(dev, jackstr, sizeof(jackstr), buf[j]);
+               printf( "        iJack               %5u %s\n",
+                       buf[j], jackstr);
+               dump_junk(buf, "        ", j+1);
+               break;
+
+       case 0x04:
+               printf("(ELEMENT)\n");
+               if (buf[0] < 12)
+                       printf("      Warning: Descriptor too short\n");
+               printf( "        bElementID          %5u\n"
+                       "        bNrInputPins        %5u\n",
+                       buf[3], buf[4]);
+               for(j=0; j < buf[4]; j++) {
+               printf( "        baSourceID(%2u)      %5u\n"
+                       "        BaSourcePin(%2u)     %5u\n",
+                       j, buf[2*j+5], j, buf[2*j+6]);
+               }
+               j = 5+buf[4]*2;
+               printf( "        bNrOutputPins       %5u\n"
+                       "        bInTerminalLink     %5u\n"
+                       "        bOutTerminalLink    %5u\n"
+                       "        bElCapsSize         %5u\n",
+                       buf[j], buf[j+1], buf[j+2], buf[j+3]);
+               capssize = buf[j+3];
+               caps = 0;
+               for(j=0; j < capssize; j++) {
+                       caps |= (buf[j+9+buf[4]*2] << (8*j));
+               }
+               printf( "        bmElementCaps  0x%08lx\n", caps);
+               if (caps & 0x01)
+                       printf( "          Undefined\n");
+               if (caps & 0x02)
+                       printf( "          MIDI Clock\n");
+               if (caps & 0x04)
+                       printf( "          MTC (MIDI Time Code)\n");
+               if (caps & 0x08)
+                       printf( "          MMC (MIDI Machine Control)\n");
+               if (caps & 0x10)
+                       printf( "          GM1 (General MIDI v.1)\n");
+               if (caps & 0x20)
+                       printf( "          GM2 (General MIDI v.2)\n");
+               if (caps & 0x40)
+                       printf( "          GS MIDI Extension\n");
+               if (caps & 0x80)
+                       printf( "          XG MIDI Extension\n");
+               if (caps & 0x100)
+                       printf( "          EFX\n");
+               if (caps & 0x200)
+                       printf( "          MIDI Patch Bay\n");
+               if (caps & 0x400)
+                       printf( "          DLS1 (Downloadable Sounds Level 1)\n");
+               if (caps & 0x800)
+                       printf( "          DLS2 (Downloadable Sounds Level 2)\n");
+               j = 9+2*buf[4]+capssize;
+               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_bytes(buf+3, buf[0]-3);
+               break;
+       }
+}
+
+static void dump_midistreaming_endpoint(unsigned char *buf)
+{
+       unsigned int j;
+
+       if (buf[1] != USB_DT_CS_ENDPOINT)
+               printf("      Warning: Invalid descriptor\n");
+       else if (buf[0] < 5)
+               printf("      Warning: Descriptor too short\n");
+       printf("        MIDIStreaming Endpoint Descriptor:\n"
+              "          bLength             %5u\n"
+              "          bDescriptorType     %5u\n"
+              "          bDescriptorSubtype  %5u (%s)\n"
+              "          bNumEmbMIDIJack     %5u\n",
+              buf[0], buf[1], buf[2], buf[2] == 1 ? "GENERAL" : "Invalid", buf[3]);
+       for (j=0; j<buf[3]; j++) {
+               printf("          baAssocJackID(%2u)   %5u\n", j, buf[4+j]);
+       }
+       dump_junk(buf, "          ", 4+buf[3]);
+}
+
+/*
+ * Video Class descriptor dump
+ */
+
+static void dump_videocontrol_interface(struct usb_dev_handle *dev, unsigned char *buf)
+{
+       static const char *ctrlnames[] = {
+               "Brightness", "Contrast", "Hue", "Saturation", "Sharpness", "Gamma",
+               "White Balance Temperature", "White Balance Component", "Backlight Compensation",
+               "Gain", "Power Line Frequency", "Hue, Auto", "White Balance Temperature, Auto",
+               "White Balance Component, Auto", "Digital Multiplier", "Digital Multiplier Limit",
+               "Analog Video Standard", "Analog Video Lock Status"
+       };
+       static const char *camctrlnames[] = {
+               "Scanning Mode", "Auto-Exposure Mode", "Auto-Exposure Priority",
+               "Exposure Time (Absolute)", "Exposure Time (Relative)", "Focus (Absolute)",
+               "Focus (Relative)", "Iris (Absolute)", "Iris (Relative)", "Zoom (Absolute)",
+               "Zoom (Relative)", "PanTilt (Absolute)", "PanTilt (Relative)",
+               "Roll (Absolute)", "Roll (Relative)", "Reserved", "Reserved", "Focus, Auto",
+               "Privacy"
+       };
+       static const char *stdnames[] = {
+               "None", "NTSC - 525/60", "PAL - 625/50", "SECAM - 625/50",
+               "NTSC - 625/50", "PAL - 525/60" };
+       unsigned int i, ctrls, stds, n, p, termt, freq;
+       char term[128], termts[128];
+
+       if (buf[1] != USB_DT_CS_INTERFACE)
+               printf("      Warning: Invalid descriptor\n");
+       else if (buf[0] < 3)
+               printf("      Warning: Descriptor too short\n");
+       printf("      VideoControl Interface Descriptor:\n"
+              "        bLength             %5u\n"
+              "        bDescriptorType     %5u\n"
+              "        bDescriptorSubtype  %5u ",
+              buf[0], buf[1], buf[2]);
+       switch (buf[2]) {
+       case 0x01:  /* HEADER */
+               printf("(HEADER)\n");
+               n = buf[11];
+               if (buf[0] < 12+n)
+                       printf("      Warning: Descriptor too short\n");
+               freq = buf[7] | (buf[8] << 8) | (buf[9] << 16) | (buf[10] << 24);
+               printf("        bcdUVC              %2x.%02x\n"
+                      "        wTotalLength        %5u\n"
+                      "        dwClockFrequency    %5u.%06uMHz\n"
+                      "        bInCollection       %5u\n",
+                      buf[4], buf[3], buf[5] | (buf[6] << 8), freq / 1000000,
+                      freq % 1000000, n);
+               for(i = 0; i < n; i++)
+                       printf("        baInterfaceNr(%2u)   %5u\n", i, buf[12+i]);
+               dump_junk(buf, "        ", 12+n);
+               break;
+
+       case 0x02:  /* INPUT_TERMINAL */
+               printf("(INPUT_TERMINAL)\n");
+               get_string(dev, term, sizeof(term), buf[7]);
+               termt = buf[4] | (buf[5] << 8);
+               n = termt == 0x0201 ? 7 : 0;
+               get_videoterminal_string(termts, sizeof(termts), termt);
+               if (buf[0] < 8 + n)
+                       printf("      Warning: Descriptor too short\n");
+               printf("        bTerminalID         %5u\n"
+                      "        wTerminalType      0x%04x %s\n"
+                      "        bAssocTerminal      %5u\n",
+                      buf[3], termt, termts, buf[6]);
+               printf("        iTerminal           %5u %s\n",
+                      buf[7], term);
+               if (termt == 0x0201) {
+                       n += buf[14];
+                       printf("        wObjectiveFocalLengthMin  %5u\n"
+                              "        wObjectiveFocalLengthMax  %5u\n"
+                              "        wOcularFocalLength        %5u\n"
+                              "        bControlSize              %5u\n",
+                              buf[8] | (buf[9] << 8), buf[10] | (buf[11] << 8),
+                              buf[12] | (buf[13] << 8), buf[14]);
+                       ctrls = 0;
+                       for (i = 0; i < 3 && i < buf[14]; i++)
+                               ctrls = (ctrls << 8) | buf[8+n-i-1];
+                       printf("        bmControls           0x%08x\n", ctrls);
+                       for (i = 0; i < 19; i++)
+                               if ((ctrls >> i) & 1)
+                                       printf("          %s\n", camctrlnames[i]);
+               }
+               dump_junk(buf, "        ", 8+n);
+               break;
+
+       case 0x03:  /* OUTPUT_TERMINAL */
+               printf("(OUTPUT_TERMINAL)\n");
+               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)
+                       printf("      Warning: Descriptor too short\n");
+               printf("        bTerminalID         %5u\n"
+                      "        wTerminalType      0x%04x %s\n"
+                      "        bAssocTerminal      %5u\n"
+                      "        bSourceID           %5u\n"
+                      "        iTerminal           %5u %s\n",
+                      buf[3], termt, termts, buf[6], buf[7], buf[8], term);
+               dump_junk(buf, "        ", 9);
+               break;
+
+       case 0x04:  /* SELECTOR_UNIT */
+               printf("(SELECTOR_UNIT)\n");
+               p = buf[4];
+               if (buf[0] < 6+p)
+                       printf("      Warning: Descriptor too short\n");
+               get_string(dev, term, sizeof(term), buf[5+p]);
+
+               printf("        bUnitID             %5u\n"
+                      "        bNrInPins           %5u\n",
+                      buf[3], p);
+               for (i = 0; i < p; i++)
+                       printf("        baSource(%2u)        %5u\n", i, buf[5+i]);
+               printf("        iSelector           %5u %s\n",
+                      buf[5+p], term);
+               dump_junk(buf, "        ", 6+p);
+               break;
+
+       case 0x05:  /* PROCESSING_UNIT */
+               printf("(PROCESSING_UNIT)\n");
+               n = buf[7];
+               get_string(dev, term, sizeof(term), buf[8+n]);
+               if (buf[0] < 10+n)
+                       printf("      Warning: Descriptor too short\n");
+               printf("        bUnitID             %5u\n"
+                      "        bSourceID           %5u\n"
+                      "        wMaxMultiplier      %5u\n"
+                      "        bControlSize        %5u\n",
+                      buf[3], buf[4], buf[5] | (buf[6] << 8), n);
+               ctrls = 0;
+               for (i = 0; i < 3 && i < n; i++)
+                       ctrls = (ctrls << 8) | buf[8+n-i-1];
+               printf("        bmControls     0x%08x\n", ctrls);
+               for (i = 0; i < 18; i++)
+                       if ((ctrls >> i) & 1)
+                               printf("          %s\n", ctrlnames[i]);
+               stds = buf[9+n];
+               printf("        iProcessing         %5u %s\n"
+                      "        bmVideoStandards     0x%2x\n", buf[8+n], term, stds);
+               for (i = 0; i < 6; i++)
+                       if ((stds >> i) & 1)
+                               printf("          %s\n", stdnames[i]);
+               break;
+
+       case 0x06:  /* EXTENSION_UNIT */
+               printf("(EXTENSION_UNIT)\n");
+               p = buf[21];
+               n = buf[22+p];
+               get_string(dev, term, sizeof(term), buf[23+p+n]);
+               if (buf[0] < 24+p+n)
+                       printf("      Warning: Descriptor too short\n");
+               printf("        bUnitID             %5u\n"
+                      "        guidExtensionCode         %s\n"
+                      "        bNumControl         %5u\n"
+                      "        bNrPins             %5u\n",
+                      buf[3], get_guid(&buf[4]), buf[20], buf[21]);
+               for (i = 0; i < p; i++)
+                       printf("        baSourceID(%2u)      %5u\n", i, buf[22+i]);
+               printf("        bControlSize        %5u\n", buf[22+p]);
+               for (i = 0; i < n; i++)
+                       printf("        bmControls(%2u)       0x%02x\n", i, buf[23+p+i]);
+               printf("        iExtension          %5u %s\n",
+                      buf[23+p+n], term);
+               dump_junk(buf, "        ", 24+p+n);
+               break;
+
+       default:
+               printf("(unknown)\n"
+                      "        Invalid desc subtype:");
+               dump_bytes(buf+3, buf[0]-3);
+               break;
+       }
+}
+
+static void dump_videostreaming_interface(unsigned char *buf)
+{
+       static const char *colorPrims[] = { "Unspecified", "BT.709,sRGB",
+               "BT.470-2 (M)", "BT.470-2 (B,G)", "SMPTE 170M", "SMPTE 240M" };
+       static const char *transferChars[] = { "Unspecified", "BT.709",
+               "BT.470-2 (M)", "BT.470-2 (B,G)", "SMPTE 170M", "SMPTE 240M",
+               "Linear", "sRGB"};
+       static const char *matrixCoeffs[] = { "Unspecified", "BT.709",
+               "FCC", "BT.470-2 (B,G)", "SMPTE 170M (BT.601)", "SMPTE 240M" };
+       unsigned int i, m, n, p, flags, len;
+
+       if (buf[1] != USB_DT_CS_INTERFACE)
+               printf("      Warning: Invalid descriptor\n");
+       else if (buf[0] < 3)
+               printf("      Warning: Descriptor too short\n");
+       printf("      VideoStreaming Interface Descriptor:\n"
+              "        bLength                         %5u\n"
+              "        bDescriptorType                 %5u\n"
+              "        bDescriptorSubtype              %5u ",
+              buf[0], buf[1], buf[2]);
+       switch (buf[2]) {
+       case 0x01: /* INPUT_HEADER */
+               printf("(INPUT_HEADER)\n");
+               p = buf[3];
+               n = buf[12];
+               if (buf[0] < 13+p*n)
+                       printf("      Warning: Descriptor too short\n");
+               printf("        bNumFormats                     %5u\n"
+                      "        wTotalLength                    %5u\n"
+                      "        bEndPointAddress                %5u\n"
+                      "        bmInfo                          %5u\n"
+                      "        bTerminalLink                   %5u\n"
+                      "        bStillCaptureMethod             %5u\n"
+                      "        bTriggerSupport                 %5u\n"
+                      "        bTriggerUsage                   %5u\n"
+                      "        bControlSize                    %5u\n",
+                      p, buf[4] | (buf[5] << 8), buf[6], buf[7], buf[8],
+                      buf[9], buf[10], buf[11], n);
+               for(i = 0; i < p; i++)
+                       printf(
+                       "        bmaControls(%2u)                 %5u\n",
+                               i, buf[13+p*n]);
+               dump_junk(buf, "        ", 13+p*n);
+               break;
+
+       case 0x02: /* OUTPUT_HEADER */
+               printf("(OUTPUT_HEADER)\n");
+               p = buf[3];
+               n = buf[8];
+               if (buf[0] < 9+p*n)
+                       printf("      Warning: Descriptor too short\n");
+               printf("        bNumFormats                 %5u\n"
+                      "        wTotalLength                %5u\n"
+                      "        bEndpointAddress            %5u\n"
+                      "        bTerminalLink               %5u\n"
+                      "        bControlSize                %5u\n",
+                      p, buf[4] | (buf[5] << 8), buf[6], buf[7], n);
+               for(i = 0; i < p; i++)
+                       printf(
+                       "        bmaControls(%2u)             %5u\n",
+                               i, buf[9+p*n]);
+               dump_junk(buf, "        ", 9+p*n);
+               break;
+
+       case 0x03: /* STILL_IMAGE_FRAME */
+               printf("(STILL_IMAGE_FRAME)\n");
+               n = buf[4];
+               m = buf[5+4*n];
+               if (buf[0] < 6+4*n+m)
+                       printf("      Warning: Descriptor too short\n");
+               printf("        bEndpointAddress                %5u\n"
+                      "        bNumImageSizePatterns             %3u\n",
+                      buf[3], n);
+               for (i = 0; i < n; i++)
+                       printf("        wWidth(%2u)                      %5u\n"
+                              "        wHeight(%2u)                     %5u\n",
+                              i, buf[5+4*i] | (buf[6+4*i] << 8),
+                              i, buf[7+4*i] | (buf[8+4*i] << 8));
+               printf("        bNumCompressionPatterns           %3u\n", n);
+               for (i = 0; i < m; i++)
+                       printf("        bCompression(%2u)                %5u\n",
+                              i, buf[6+4*n+i]);
+               dump_junk(buf, "        ", 6+4*n+m);
+               break;
+
+       case 0x04: /* FORMAT_UNCOMPRESSED */
+               printf("(FORMAT_UNCOMPRESSED)\n");
+               if (buf[0] < 27)
+                       printf("      Warning: Descriptor too short\n");
+               flags = buf[25];
+               printf("        bFormatIndex                    %5u\n"
+                      "        bNumFrameDescriptors            %5u\n"
+                      "        guidFormat                            %s\n"
+                      "        bBitsPerPixel                   %5u\n"
+                      "        bDefaultFrameIndex              %5u\n"
+                      "        bAspectRatioX                   %5u\n"
+                      "        bAspectRatioY                   %5u\n"
+                      "        bmInterlaceFlags                 0x%02x\n",
+                      buf[3], buf[4], get_guid(&buf[5]), buf[21], buf[22],
+                      buf[23], buf[24], flags);
+               printf("          Interlaced stream or variable: %s\n",
+                      (flags & (1 << 0)) ? "Yes" : "No");
+               printf("          Fields per frame: %u fields\n",
+                      (flags & (1 << 1)) ? 2 : 1);
+               printf("          Field 1 first: %s\n",
+                      (flags & (1 << 2)) ? "Yes" : "No");
+               printf("          Field pattern: ");
+               switch((flags >> 4) & 0x03)
+               {
+               case 0:
+                       printf("Field 1 only\n");
+                       break;
+               case 1:
+                       printf("Field 2 only\n");
+                       break;
+               case 2:
+                       printf("Regular pattern of fields 1 and 2\n");
+                       break;
+               case 3:
+                       printf("Random pattern of fields 1 and 2\n");
+                       break;
+               }
+               printf("          bCopyProtect                  %5u\n", buf[26]);
+               dump_junk(buf, "        ", 27);
+               break;
+
+       case 0x05: /* FRAME UNCOMPRESSED */
+       case 0x07: /* FRAME_MJPEG */
+               if (buf[2] == 0x05)
+                       printf("(FRAME_UNCOMPRESSED)\n");
+               else
+                       printf("(FRAME_MJPEG)\n");
+               len = (buf[25] != 0) ? (26+buf[25]*4) : 38;
+               if (buf[0] < len)
+                       printf("      Warning: Descriptor too short\n");
+               flags = buf[4];
+               printf("        bFrameIndex                     %5u\n"
+                      "        bmCapabilities                   0x%02x\n",
+                      buf[3], flags);
+               printf("          Still image %ssupported\n",
+                      (flags & (1 << 0)) ? "" : "un");
+               if (flags & (1 << 1))
+               printf("          Fixed frame-rate\n");
+               printf("        wWidth                          %5u\n"
+                      "        wHeight                         %5u\n"
+                      "        dwMinBitRate                %9u\n"
+                      "        dwMaxBitRate                %9u\n"
+                      "        dwMaxVideoFrameBufferSize   %9u\n"
+                      "        dwDefaultFrameInterval      %9u\n"
+                      "        bFrameIntervalType              %5u\n",
+                      buf[5] | (buf[6] <<  8), buf[7] | (buf[8] << 8),
+                      buf[9] | (buf[10] << 8) | (buf[11] << 16) | (buf[12] << 24),
+                      buf[13] | (buf[14] << 8) | (buf[15] << 16) | (buf[16] << 24),
+                      buf[17] | (buf[18] << 8) | (buf[19] << 16) | (buf[20] << 24),
+                      buf[21] | (buf[22] << 8) | (buf[23] << 16) | (buf[24] << 24),
+                      buf[25]);
+               if (buf[25] == 0)
+                       printf("        dwMinFrameInterval          %9u\n"
+                              "        dwMaxFrameInterval          %9u\n"
+                              "        dwFrameIntervalStep         %9u\n",
+                              buf[26] | (buf[27] << 8) | (buf[28] << 16) | (buf[29] << 24),
+                              buf[30] | (buf[31] << 8) | (buf[32] << 16) | (buf[33] << 24),
+                              buf[34] | (buf[35] << 8) | (buf[36] << 16) | (buf[37] << 24));
+               else
+                       for (i = 0; i < buf[25]; i++)
+                               printf("        dwFrameInterval(%2u)         %9u\n",
+                                      i, buf[26+4*i] | (buf[27+4*i] << 8) |
+                                      (buf[28+4*i] << 16) | (buf[29+4*i] << 24));
+               dump_junk(buf, "        ", len);
+               break;
+
+       case 0x06: /* FORMAT_MJPEG */
+               printf("(FORMAT_MJPEG)\n");
+               if (buf[0] < 11)
+                       printf("      Warning: Descriptor too short\n");
+               flags = buf[5];
+               printf("        bFormatIndex                    %5u\n"
+                      "        bNumFrameDescriptors            %5u\n"
+                      "        bFlags                          %5u\n",
+                      buf[3], buf[4], flags);
+               printf("          Fixed-size samples: %s\n",
+                      (flags & (1 << 0)) ? "Yes" : "No");
+               flags = buf[9];
+               printf("        bDefaultFrameIndex              %5u\n"
+                      "        bAspectRatioX                   %5u\n"
+                      "        bAspectRatioY                   %5u\n"
+                      "        bmInterlaceFlags                 0x%02x\n",
+                      buf[6], buf[7], buf[8], flags);
+               printf("          Interlaced stream or variable: %s\n",
+                      (flags & (1 << 0)) ? "Yes" : "No");
+               printf("          Fields per frame: %u fields\n",
+                      (flags & (1 << 1)) ? 2 : 1);
+               printf("          Field 1 first: %s\n",
+                      (flags & (1 << 2)) ? "Yes" : "No");
+               printf("          Field pattern: ");
+               switch((flags >> 4) & 0x03)
+               {
+               case 0:
+                       printf("Field 1 only\n");
+                       break;
+               case 1:
+                       printf("Field 2 only\n");
+                       break;
+               case 2:
+                       printf("Regular pattern of fields 1 and 2\n");
+                       break;
+               case 3:
+                       printf("Random pattern of fields 1 and 2\n");
+                       break;
+               }
+               printf("          bCopyProtect                  %5u\n", buf[10]);
+               dump_junk(buf, "        ", 11);
+               break;
+
+       case 0x0d: /* COLORFORMAT */
+               printf("(COLORFORMAT)\n");
+               if (buf[0] < 6)
+                       printf("      Warning: Descriptor too short\n");
+               printf("        bColorPrimaries                 %5u (%s)\n",
+                      buf[3], (buf[3] <= 5) ? colorPrims[buf[3]] : "Unknown");
+               printf("        bTransferCharacteristics        %5u (%s)\n",
+                      buf[4], (buf[4] <= 7) ? transferChars[buf[4]] : "Unknown");
+               printf("        bMatrixCoefficients             %5u (%s)\n",
+                      buf[5], (buf[5] <= 5) ? matrixCoeffs[buf[5]] : "Unknown");
+               dump_junk(buf, "        ", 6);
+               break;
+
+       default:
+               printf("        Invalid desc subtype:");
+               dump_bytes(buf+3, buf[0]-3);
+               break;
+       }
+}
+
+static void dump_dfu_interface(unsigned char *buf)
+{
+       if (buf[1] != USB_DT_CS_DEVICE)
+               printf("      Warning: Invalid descriptor\n");
+       else if (buf[0] < 7)
+               printf("      Warning: Descriptor too short\n");
+       printf("      Device Firmware Upgrade Interface Descriptor:\n"
+              "        bLength                         %5u\n"
+              "        bDescriptorType                 %5u\n"
+              "        bmAttributes                    %5u\n",
+              buf[0], buf[1], buf[2]);
+       if (buf[2] & 0xf0)
+               printf("          (unknown attributes!)\n");
+       printf("          Will %sDetach\n", (buf[2] & 0x08) ? "" : "Not ");
+       printf("          Manifestation %s\n", (buf[2] & 0x04) ? "Tolerant" : "Intolerant");
+       printf("          Upload %s\n", (buf[2] & 0x02) ? "Supported" : "Unsupported");
+       printf("          Download %s\n", (buf[2] & 0x01) ? "Supported" : "Unsupported");
+       printf("        wDetachTimeout                  %5u milliseconds\n"
+              "        wTransferSize                   %5u bytes\n",
+              buf[3] | (buf[4] << 8), buf[5] | (buf[6] << 8));
+
+       /* DFU 1.0 defines no version code, DFU 1.1 does */
+       if (buf[0] < 9)
+               return;
+       printf("        bcdDFUVersion                   %x.%02x\n",
+                       buf[7], buf[8]);
+}
+
+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("%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 */
+       if (l > HUB_STATUS_BYTELEN)
+               l = HUB_STATUS_BYTELEN;
+       printf("%s  DeviceRemovable   ", prefix);
+       for(i = 0; i < l; i++)
+               printf(" 0x%02x", p[7+i]);
+       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%s%s\n",
+               buf[4],
+               buf[5],
+              (buf[5] & 1) ? "5.0V " : "",
+              (buf[5] & 2) ? "3.0V " : "",
+              (buf[5] & 4) ? "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);
+       }
+}
+
+/* ---------------------------------------------------------------------- */
+
+/*
+ * HID descriptor
+ */
+
+static void dump_report_desc(unsigned char *b, int l)
+{
+       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);
+       for(i = 0; i < l; ) {
+               t = b[i];
+               bsize = b[i] & 0x03;
+               if (bsize == 3)
+                       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) {
+                       printf(" [ ");
+                       data = 0;
+                       for(j = 0; j < bsize; j++) {
+                               printf("0x%02x ", b[i+1+j]);
+                               data += (b[i+1+j] << (8*j));
+                       }
+                       printf("] %d", data);
+               } else
+                       printf("none");
+               printf("\n");
+               switch(btag) {
+               case 0x04 : /* Usage Page */
+                       printf("%s%s\n", indent, names_huts(data));
+                       hut = data;
+                       break;
+
+               case 0x08 : /* Usage */
+               case 0x18 : /* Usage Minimum */
+               case 0x28 : /* Usage Maximum */
+                       printf("%s%s\n", indent,
+                                       names_hutus((hut << 16) + data));
+                       break;
+
+               case 0x54 : /* Unit Exponent */
+                       printf("%sUnit Exponent: %i\n", indent,
+                                       (signed char)data);
+                       break;
+
+               case 0x64 : /* Unit */
+                       printf("%s", indent);
+                       dump_unit(data, bsize);
+                       break;
+
+               case 0xa0 : /* Collection */
+                       printf("%s", indent);
+                       switch (data) {
+                       case 0x00:
+                               printf("Physical\n");
+                               break;
+
+                       case 0x01:
+                               printf("Application\n");
+                               break;
+
+                       case 0x02:
+                               printf("Logical\n");
+                               break;
+
+                       case 0x03:
+                               printf("Report\n");
+                               break;
+
+                       case 0x04:
+                               printf("Named Array\n");
+                               break;
+
+                       case 0x05:
+                               printf("Usage Switch\n");
+                               break;
+
+                       case 0x06:
+                               printf("Usage Modifier\n");
+                               break;
+
+                       default:
+                               if(data & 0x80)
+                                       printf("Vendor defined\n");
+                               else
+                                       printf("Reserved for future use.\n");
+                       }
+                       break;
+               case 0x80: /* Input */
+               case 0x90: /* Output */
+               case 0xb0: /* Feature */
+                       printf("%s%s %s %s %s %s\n%s%s %s %s %s\n",
+                              indent,
+                              data & 0x01 ? "Constant": "Data",
+                              data & 0x02 ? "Variable": "Array",
+                              data & 0x04 ? "Relative": "Absolute",
+                              data & 0x08 ? "Wrap" : "No_Wrap",
+                              data & 0x10 ? "Non_Linear": "Linear",
+                              indent,
+                              data & 0x20 ? "No_Preferred_State": "Preferred_State",
+                              data & 0x40 ? "Null_State": "No_Null_Position",
+                              data & 0x80 ? "Volatile": "Non_Volatile",
+                              data &0x100 ? "Buffered Bytes": "Bitfield"
+                       );
+                       break;
+               }
+               i += 1 + bsize;
+       }
+}
+
+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_HID)
+               printf("      Warning: Invalid descriptor\n");
+       else if (buf[0] < 6+3*buf[5])
+               printf("      Warning: Descriptor too short\n");
+       printf("        HID Device Descriptor:\n"
+              "          bLength             %5u\n"
+              "          bDescriptorType     %5u\n"
+              "          bcdHID              %2x.%02x\n"
+              "          bCountryCode        %5u %s\n"
+              "          bNumDescriptors     %5u\n",
+              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));
+       dump_junk(buf, "        ", 6+3*buf[5]);
+       if (!do_report_desc)
+               return;
+
+       if (!dev) {
+               printf( "         Report Descriptors: \n"
+                       "           ** UNAVAILABLE **\n");
+               return;
+       }
+
+       for (i = 0; i < buf[5]; i++) {
+               /* 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 (usb_claim_interface(dev, interface->bInterfaceNumber) == 0) {
+                       int retries = 4;
+                       n = 0;
+                       while (n < len && retries--)
+                               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);
+
+                       if (n > 0) {
+                               if (n < len)
+                                       printf("          Warning: incomplete report descriptor\n");
+                               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");
+               }
+       }
+}
+
+static char *
+dump_comm_descriptor(struct usb_dev_handle *dev, unsigned char *buf, char *indent)
+{
+       int             tmp;
+       char            str [128];
+       char            *type;
+
+       switch (buf[2]) {
+       case 0:
+               type = "Header";
+               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 */
+               type = "Call Management";
+               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 */
+               type = "ACM";
+               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 0x03:           /* direct line management */
+       // case 0x04:           /* telephone ringer */
+       // case 0x05:           /* telephone call and line state reporting */
+       case 0x06:              /* union desc */
+               type = "Union";
+               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 0x07:              /* country selection functional desc */
+               type = "Country Selection";
+               if (buf [0] < 6 || (buf[0] & 1) != 0)
+                       goto bad;
+               get_string(dev, str, sizeof str, buf[3]);
+               printf("%sCountry Selection:\n"
+                      "%s  iCountryCodeRelDate     %4d %s\n",
+                      indent,
+                      indent, buf[3], (buf[3] && *str) ? str : "(?\?)");
+               for (tmp = 4; tmp < buf [0]; tmp += 2) {
+                       printf("%s  wCountryCode          0x%02x%02x\n",
+                               indent, buf[tmp], buf[tmp + 1]);
+               }
+               break;
+       case 0x08:              /* telephone operational modes */
+               type = "Telephone Operations";
+               if (buf [0] != 4)
+                       goto bad;
+               printf("%sCDC Telephone operations:\n"
+                      "%s  bmCapabilities       0x%02x\n",
+                      indent,
+                      indent, buf[3]);
+               if (buf[3] & 0x04)
+                       printf("%s    computer centric mode\n", indent);
+               if (buf[3] & 0x02)
+                       printf("%s    standalone mode\n", indent);
+               if (buf[3] & 0x01)
+                       printf("%s    simple mode\n", indent);
+               break;
+       // case 0x09:           /* USB terminal */
+       case 0x0a:              /* network channel terminal */
+               type = "Network Channel Terminal";
+               if (buf [0] != 7)
+                       goto bad;
+               get_string(dev, str, sizeof str, buf[4]);
+               printf("%sNetwork Channel Terminal:\n"
+                      "%s  bEntityId               %3d\n"
+                      "%s  iName                   %3d %s\n"
+                      "%s  bChannelIndex           %3d\n"
+                      "%s  bPhysicalInterface      %3d\n",
+                      indent,
+                      indent, buf[3],
+                      indent, buf[4], str,
+                      indent, buf[5],
+                      indent, buf[6]);
+               break;
+       // case 0x0b:           /* protocol unit */
+       // case 0x0c:           /* extension unit */
+       // case 0x0d:           /* multi-channel management */
+       // case 0x0e:           /* CAPI control management*/
+       case 0x0f:              /* ethernet functional desc */
+               type = "Ethernet";
+               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;
+       // case 0x10:           /* ATM networking */
+       case 0x11:              /* WHCM functional desc */
+               type = "WHCM version";
+               if (buf[0] != 5)
+                       goto bad;
+               printf("%sCDC WHCM:\n"
+                      "%s  bcdVersion           %x.%02x\n",
+                      indent,
+                      indent, buf[4], buf[3]);
+               break;
+       case 0x12:              /* MDLM functional desc */
+               type = "MDLM";
+               if (buf [0] != 21)
+                       goto bad;
+               printf("%sCDC MDLM:\n"
+                      "%s  bcdCDC               %x.%02x\n"
+                      "%s  bGUID               %s\n",
+                      indent,
+                      indent, buf[4], buf[3],
+                      indent, get_guid(buf + 5));
+               break;
+       case 0x13:              /* MDLM detail desc */
+               type = "MDLM detail";
+               if (buf [0] < 5)
+                       goto bad;
+               printf("%sCDC MDLM detail:\n"
+                      "%s  bGuidDescriptorType  %02x\n"
+                      "%s  bDetailData         ",
+                      indent,
+                      indent, buf[3],
+                      indent);
+               dump_bytes(buf + 4, buf[0] - 4);
+               break;
+       case 0x14:              /* device management functional desc */
+               type = "Device Management";
+               if (buf[0] != 7)
+                       goto bad;
+               printf("%sCDC Device Management:\n"
+                      "%s  bcdVersion           %x.%02x\n"
+                      "%s  wMaxCommand          %d\n",
+                      indent,
+                      indent, buf[4], buf[3],
+                      indent, (buf[6]<<8)| buf[5]);
+               break;
+       case 0x15:              /* OBEX functional desc */
+               type = "OBEX";
+               if (buf[0] != 5)
+                       goto bad;
+               printf("%sCDC OBEX:\n"
+                      "%s  bcdVersion           %x.%02x\n",
+                      indent,
+                      indent, buf[4], buf[3]);
+               break;
+       // case 0x16:           /* command set functional desc */
+       // case 0x17:           /* command set detail desc */
+       // case 0x18:           /* telephone control model functional desc */
+       default:
+               /* FIXME there are about a dozen more descriptor types */
+               printf("%sUNRECOGNIZED CDC: ", indent);
+               dump_bytes(buf, buf[0]);
+               return "unrecognized comm descriptor";
+       }
+       return 0;
+
+bad:
+       printf("%sINVALID CDC (%s): ", indent, type);
+       dump_bytes(buf, buf[0]);
+       return "corrupt comm descriptor";
+}
+
+/* ---------------------------------------------------------------------- */
+
+static void do_hub(struct usb_dev_handle *fd, unsigned has_tt)
+{
+       unsigned char buf [7 /* base descriptor */
+                       + 2 /* bitmasks */ * HUB_STATUS_BYTELEN ];
+       int i, 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 < 9 /* at least one port's bitmasks */) {
+               if (ret >= 0)
+                       fprintf(stderr,
+                               "incomplete hub descriptor, %d bytes\n",
+                               ret);
+               /* Linux returns EHOSTUNREACH for suspended devices */
+               else if (errno != EHOSTUNREACH)
+                       perror ("can't get hub descriptor");
+               return;
+       }
+       dump_hub("", buf, has_tt);
+
+       printf(" Hub Port Status:\n");
+       for (i = 0; i < buf[2]; i++) {
+               unsigned char stat [4];
+
+               ret = usb_control_msg(fd,
+                               USB_ENDPOINT_IN | USB_TYPE_CLASS
+                                       | USB_RECIP_OTHER,
+                               USB_REQ_GET_STATUS,
+                               0, i + 1,
+                               stat, sizeof stat,
+                               CTRL_TIMEOUT);
+               if (ret < 0) {
+                       fprintf(stderr,
+                               "cannot read port %d status, %s (%d)\n",
+                               i + 1, strerror(errno), errno);
+                       break;
+               }
+
+               printf("   Port %d: %02x%02x.%02x%02x", i + 1,
+                       stat[3], stat [2],
+                       stat[1], stat [0]);
+               /* CAPS are used to highlight "transient" states */
+               printf("%s%s%s%s%s",
+                       (stat[2] & 0x10) ? " C_RESET" : "",
+                       (stat[2] & 0x08) ? " C_OC" : "",
+                       (stat[2] & 0x04) ? " C_SUSPEND" : "",
+                       (stat[2] & 0x02) ? " C_ENABLE" : "",
+                       (stat[2] & 0x01) ? " C_CONNECT" : "");
+               printf("%s%s%s%s%s%s%s%s%s%s\n",
+                       (stat[1] & 0x10) ? " indicator" : "",
+                       (stat[1] & 0x08) ? " test" : "",
+                       (stat[1] & 0x04) ? " highspeed" : "",
+                       (stat[1] & 0x02) ? " lowspeed" : "",
+                       (stat[1] & 0x01) ? " power" : "",
+                       (stat[0] & 0x10) ? " RESET" : "",
+                       (stat[0] & 0x08) ? " oc" : "",
+                       (stat[0] & 0x04) ? " suspend" : "",
+                       (stat[0] & 0x02) ? " enable" : "",
+                       (stat[0] & 0x01) ? " connect" : "");
+       }
+}
+
+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);
+       if (ret < 0 && errno != EPIPE)
+               perror ("can't get device qualifier");
+
+       /* all dual-speed devices have a qualifier */
+       if (ret != sizeof buf
+                       || buf[0] != ret
+                       || buf[1] != USB_DT_DEVICE_QUALIFIER)
+               return;
+
+       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]);
+
+       /* FIXME also show the OTHER_SPEED_CONFIG descriptors */
+}
+
+static void do_debug(struct usb_dev_handle *fd)
+{
+       unsigned char buf [4];
+       int ret;
+
+       ret = usb_control_msg(fd,
+                       USB_ENDPOINT_IN | USB_TYPE_STANDARD | USB_RECIP_DEVICE,
+                       USB_REQ_GET_DESCRIPTOR,
+                       USB_DT_DEBUG << 8, 0,
+                       buf, sizeof buf, CTRL_TIMEOUT);
+       if (ret < 0 && errno != EPIPE)
+               perror ("can't get debug descriptor");
+
+       /* some high speed devices are also "USB2 debug devices", meaning
+        * you can use them with some EHCI implementations as another kind
+        * of system debug channel:  like JTAG, RS232, or a console.
+        */
+       if (ret != sizeof buf
+                       || buf[0] != ret
+                       || buf[1] != USB_DT_DEBUG)
+               return;
+
+       printf("Debug descriptor:\n"
+              "  bLength              %4u\n"
+              "  bDescriptorType      %4u\n"
+              "  bDebugInEndpoint     0x%02x\n"
+              "  bDebugOutEndpoint    0x%02x\n",
+              buf[0], buf[1],
+              buf[2], buf[3]);
+}
+
+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;
+}
+
+static int do_otg(struct usb_config_descriptor *config)
+{
+       unsigned        i, k;
+       int             j;
+       unsigned char   *desc;
+
+       /* 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;
+
+               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);
+                       }
+               }
+       }
+       if (!desc)
+               return 0;
+
+       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" : "");
+       return 1;
+}
+
+static void
+dump_device_status(struct usb_dev_handle *fd, int otg, int wireless)
+{
+       unsigned char status[8];
+       int ret;
+
+       ret = usb_control_msg(fd, USB_ENDPOINT_IN | USB_TYPE_STANDARD
+                               | USB_RECIP_DEVICE,
+                       USB_REQ_GET_STATUS,
+                       0, 0,
+                       status, 2,
+                       CTRL_TIMEOUT);
+       if (ret < 0) {
+               fprintf(stderr,
+                       "cannot read device status, %s (%d)\n",
+                       strerror(errno), errno);
+               return;
+       }
+
+       printf("Device Status:     0x%02x%02x\n",
+                       status[1], status[0]);
+       if (status[0] & (1 << 0))
+               printf("  Self Powered\n");
+       else
+               printf("  (Bus Powered)\n");
+       if (status[0] & (1 << 1))
+               printf("  Remote Wakeup Enabled\n");
+       if (status[0] & (1 << 2)) {
+               /* for high speed devices */
+               if (!wireless)
+                       printf("  Test Mode\n");
+               /* for devices with Wireless USB support */
+               else
+                       printf("  Battery Powered\n");
+       }
+       /* if both HOST and DEVICE support OTG */
+       if (otg) {
+               if (status[0] & (1 << 3))
+                       printf("  HNP Enabled\n");
+               if (status[0] & (1 << 4))
+                       printf("  HNP Capable\n");
+               if (status[0] & (1 << 5))
+                       printf("  ALT port is HNP Capable\n");
+       }
+       /* for high speed devices with debug descriptors */
+       if (status[0] & (1 << 6))
+               printf("  Debug Mode\n");
+
+       if (!wireless)
+               return;
+
+       /* Wireless USB exposes FIVE different types of device status,
+        * accessed by distinct wIndex values.
+        */
+       ret = usb_control_msg(fd, USB_ENDPOINT_IN | USB_TYPE_STANDARD
+                               | USB_RECIP_DEVICE,
+                       USB_REQ_GET_STATUS,
+                       0, 1 /* wireless status */,
+                       status, 1,
+                       CTRL_TIMEOUT);
+       if (ret < 0) {
+               fprintf(stderr,
+                       "cannot read wireless %s, %s (%d)\n",
+                       "status",
+                       strerror(errno), errno);
+               return;
+       }
+       printf("Wireless Status:     0x%02x\n", status[0]);
+       if (status[0] & (1 << 0))
+               printf("  TX Drp IE\n");
+       if (status[0] & (1 << 1))
+               printf("  Transmit Packet\n");
+       if (status[0] & (1 << 2))
+               printf("  Count Packets\n");
+       if (status[0] & (1 << 3))
+               printf("  Capture Packet\n");
+
+       ret = usb_control_msg(fd, USB_ENDPOINT_IN | USB_TYPE_STANDARD
+                               | USB_RECIP_DEVICE,
+                       USB_REQ_GET_STATUS,
+                       0, 2 /* Channel Info */,
+                       status, 1,
+                       CTRL_TIMEOUT);
+       if (ret < 0) {
+               fprintf(stderr,
+                       "cannot read wireless %s, %s (%d)\n",
+                       "channel info",
+                       strerror(errno), errno);
+               return;
+       }
+       printf("Channel Info:        0x%02x\n", status[0]);
+
+       /* 3=Received data: many bytes, for count packets or capture packet */
+
+       ret = usb_control_msg(fd, USB_ENDPOINT_IN | USB_TYPE_STANDARD
+                               | USB_RECIP_DEVICE,
+                       USB_REQ_GET_STATUS,
+                       0, 3 /* MAS Availability */,
+                       status, 8,
+                       CTRL_TIMEOUT);
+       if (ret < 0) {
+               fprintf(stderr,
+                       "cannot read wireless %s, %s (%d)\n",
+                       "MAS info",
+                       strerror(errno), errno);
+               return;
+       }
+       printf("MAS Availability:    ");
+       dump_bytes(status, 8);
+
+       ret = usb_control_msg(fd, USB_ENDPOINT_IN | USB_TYPE_STANDARD
+                               | USB_RECIP_DEVICE,
+                       USB_REQ_GET_STATUS,
+                       0, 5 /* Current Transmit Power */,
+                       status, 2,
+                       CTRL_TIMEOUT);
+       if (ret < 0) {
+               fprintf(stderr,
+                       "cannot read wireless %s, %s (%d)\n",
+                       "transmit power",
+                       strerror(errno), errno);
+               return;
+       }
+       printf("Transmit Power:\n");
+       printf(" TxNotification:     0x%02x\n", status[0]);
+       printf(" TxBeacon:     :     0x%02x\n", status[1]);
+}
+
+static int do_wireless(struct usb_dev_handle *fd)
+{
+       /* FIXME fetch and dump BOS etc */
+       if (fd)
+               return 0;
+       return 0;
+}
+
+static void dumpdev(struct usb_device *dev)
+{
+       struct usb_dev_handle *udev;
+       int i;
+       int otg, wireless;
+
+       otg = wireless = 0;
+       udev = usb_open(dev);
+       if (!udev)
+               fprintf(stderr, "Couldn't open device, some information "
+                       "will be missing\n");
+
+       dump_device(udev, &dev->descriptor);
+       if (dev->descriptor.bcdUSB >= 0x0250)
+               wireless = do_wireless(udev);
+       if (dev->config) {
+               otg = do_otg(&dev->config[0]) || otg;
+               for (i = 0; i < dev->descriptor.bNumConfigurations;
+                               i++) {
+                       dump_config(udev, &dev->config[i]);
+               }
+       }
+       if (!udev)
+               return;
+
+       if (dev->descriptor.bDeviceClass == USB_CLASS_HUB)
+               do_hub(udev, dev->descriptor.bDeviceProtocol);
+       if (dev->descriptor.bcdUSB >= 0x0200) {
+               do_dualspeed(udev);
+               do_debug(udev);
+       }
+       dump_device_status(udev, otg, wireless);
+       usb_close(udev);
+}
+
+/* ---------------------------------------------------------------------- */
+
+static int dump_one_device(const char *path)
+{
+       struct usb_device *dev;
+       char vendor[128], product[128];
+
+       dev = get_usb_device(path);
+       if (!dev) {
+               fprintf(stderr, "Cannot open %s\n", path);
+               return 1;
+       }
+       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);
+       return 0;
+}
+
+static int list_devices(int busnum, int devnum, int vendorid, int productid)
+{
+       struct usb_bus *bus;
+       struct usb_device *dev;
+       char vendor[128], product[128];
+       int status;
+
+       status=1; /* 1 device not found, 0 device found */
+
+       for (bus = usb_busses; bus; bus = bus->next) {
+               if (busnum != -1 && strtol(bus->dirname, NULL, 10) != busnum)
+                       continue;
+               for (dev = bus->devices; dev; dev = dev->next) {
+                       if (devnum != -1 && strtol(dev->filename, NULL, 10)
+                                       != devnum)
+                               continue;
+                       if ((vendorid != -1 && vendorid
+                                               != dev->descriptor.idVendor)
+                                       || (productid != -1 && productid
+                                               != dev->descriptor.idProduct))
+                               continue;
+                       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",
+                                       bus->dirname, dev->filename,
+                                       dev->descriptor.idVendor,
+                                       dev->descriptor.idProduct,
+                                       vendor, product);
+                       if (verblevel > 0)
+                               dumpdev(dev);
+               }
+       }
+       return(status);
+}
+
+/* ---------------------------------------------------------------------- */
+
+void devtree_busconnect(struct usbbusnode *bus)
+{
+       bus = bus;      /* reduce compiler warnings */
+}
+
+void devtree_busdisconnect(struct usbbusnode *bus)
+{
+       bus = bus;      /* reduce compiler warnings */
+}
+
+void devtree_devconnect(struct usbdevnode *dev)
+{
+       dev = dev;      /* reduce compiler warnings */
+}
+
+void devtree_devdisconnect(struct usbdevnode *dev)
+{
+       dev = dev;      /* reduce compiler warnings */
+}
+
+static int treedump(void)
+{
+       int fd;
+       char buf[512];
+
+       snprintf(buf, sizeof(buf), "%s/devices", procbususb);
+       if (access(buf, R_OK) < 0)
+               return lsusb_t();
+       if ((fd = open(buf, O_RDONLY)) == -1) {
+               fprintf(stderr, "cannot open %s, %s (%d)\n", buf, strerror(errno), errno);
+               return(1);
+       }
+       devtree_parsedevfile(fd);
+       close(fd);
+       devtree_dump();
+       return(0);
+}
+
+/* ---------------------------------------------------------------------- */
+
+int main(int argc, char *argv[])
+{
+       static const struct option long_options[] = {
+               { "version", 0, 0, 'V' },
+               { "verbose", 0, 0, 'v' },
+               { 0, 0, 0, 0 }
+       };
+       int c, err = 0;
+       unsigned int allowctrlmsg = 0, treemode = 0;
+       int bus = -1, devnum = -1, vendor = -1, product = -1;
+       const char *devdump = NULL;
+       char *cp;
+       int status;
+
+       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");
+                       exit(0);
+
+               case 'v':
+                       verblevel++;
+                       break;
+
+               case 'x':
+                       allowctrlmsg = 1;
+                       break;
+
+               case 't':
+                       treemode = 1;
+                       break;
+
+               case 's':
+                       cp = strchr(optarg, ':');
+                       if (cp) {
+                               *cp++ = 0;
+                               if (*optarg)
+                                       bus = strtoul(optarg, NULL, 10);
+                               if (*cp)
+                                       devnum = strtoul(cp, NULL, 10);
+                       } else {
+                               if (*optarg)
+                                       devnum = strtoul(optarg, NULL, 10);
+                       }
+                       break;
+
+               case 'd':
+                       cp = strchr(optarg, ':');
+                       if (!cp) {
+                               err++;
+                               break;
+                       }
+                       *cp++ = 0;
+                       if (*optarg)
+                               vendor = strtoul(optarg, NULL, 16);
+                       if (*cp)
+                               product = strtoul(cp, NULL, 16);
+                       break;
+
+               case 'D':
+                       devdump = optarg;
+                       break;
+
+               case '?':
+               default:
+                       err++;
+                       break;
+               }
+       }
+       if (err || argc > optind) {
+               fprintf(stderr, "Usage: lsusb [options]...\n"
+                       "List USB devices\n"
+                       "  -v, --verbose\n"
+                       "      Increase verbosity (show descriptors)\n"
+                       "  -s [[bus]:][devnum]\n"
+                       "      Show only devices with specified device and/or\n"
+                       "      bus numbers (in decimal)\n"
+                       "  -d vendor:[product]\n"
+                       "      Show only devices with the specified vendor and\n"
+                       "      product ID numbers (in hexadecimal)\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"
+                       );
+               exit(1);
+       }
+
+       /* by default, print names as well as numbers */
+       err = names_init(DATADIR "/usb.ids");
+#ifdef HAVE_LIBZ
+       if (err != 0)
+               err = names_init(DATADIR "/usb.ids.gz");
+#endif
+       if (err != 0)
+               fprintf(stderr, "%s: cannot open \"%s\", %s\n",
+                               argv[0],
+                               DATADIR "/usb.ids",
+                               strerror(err));
+       status = 0;
+
+       usb_init();
+
+       usb_find_busses();
+       usb_find_devices();
+
+       if (treemode) {
+               /* treemode requires at least verblevel 1 */
+               verblevel += 1 - VERBLEVEL_DEFAULT;
+               status = treedump();
+       } else if (devdump)
+               status = dump_one_device(devdump);
+       else
+               status = list_devices(bus, devnum, vendor, product);
+       return status;
+}
diff --git a/missing b/missing
new file mode 100755 (executable)
index 0000000..1c8ff70
--- /dev/null
+++ b/missing
@@ -0,0 +1,367 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2006-05-10.23
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
+#   Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# 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, 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., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  # Exit code 63 means version mismatch.  This often happens
+  # when the user try to use an ancient version of a tool on
+  # a file that requires a minimum version.  In this case we
+  # we should proceed has if the program had been absent, or
+  # if --run hadn't been passed.
+  if test $? = 63; then
+    run=:
+    msg="probably too old"
+  fi
+  ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  autom4te     touch the output file, or create a stub one
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  tar          try tar, gnutar, gtar, then tar without non-portable flags
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake@gnu.org>."
+    exit $?
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case $1 in
+  lex|yacc)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  tar)
+    if test -n "$run"; then
+       echo 1>&2 "ERROR: \`tar' requires --run"
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       exit 1
+    fi
+    ;;
+
+  *)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $1 in
+  aclocal*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case $f in
+      *:*) touch_files="$touch_files "`echo "$f" |
+                                      sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+          sed 's/\.am$/.in/' |
+          while read f; do touch "$f"; done
+    ;;
+
+  autom4te)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+       touch $file
+    else
+       test -z "$file" || exec >$file
+       echo "#! /bin/sh"
+       echo "# Created by GNU Automake missing as a replacement of"
+       echo "#  $ $@"
+       echo "exit 0"
+       chmod +x $file
+       exit 1
+    fi
+    ;;
+
+  bison|yacc)
+    echo 1>&2 "\
+WARNING: \`$1' $msg.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if test $# -ne 1; then
+        eval LASTARG="\${$#}"
+       case $LASTARG in
+       *.y)
+           SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" y.tab.c
+           fi
+           SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" y.tab.h
+           fi
+         ;;
+       esac
+    fi
+    if test ! -f y.tab.h; then
+       echo >y.tab.h
+    fi
+    if test ! -f y.tab.c; then
+       echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex|flex)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if test $# -ne 1; then
+        eval LASTARG="\${$#}"
+       case $LASTARG in
+       *.l)
+           SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+           if test -f "$SRCFILE"; then
+                cp "$SRCFILE" lex.yy.c
+           fi
+         ;;
+       esac
+    fi
+    if test ! -f lex.yy.c; then
+       echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+        you modified a dependency of a manual page.  You may need the
+        \`Help2man' package in order for those modifications to take
+        effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+       touch $file
+    else
+       test -z "$file" || exec >$file
+       echo ".ab help2man is required to generate this page"
+       exit 1
+    fi
+    ;;
+
+  makeinfo)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    # The file to touch is that specified with -o ...
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -z "$file"; then
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '
+       /^@setfilename/{
+         s/.* \([^ ]*\) *$/\1/
+         p
+         q
+       }' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+    fi
+    # If the file does not exist, the user really needs makeinfo;
+    # let's fail without touching anything.
+    test -f $file || exit 1
+    touch $file
+    ;;
+
+  tar)
+    shift
+
+    # We have already tried tar in the generic part.
+    # Look for gnutar/gtar before invocation to avoid ugly error
+    # messages.
+    if (gnutar --version > /dev/null 2>&1); then
+       gnutar "$@" && exit 0
+    fi
+    if (gtar --version > /dev/null 2>&1); then
+       gtar "$@" && exit 0
+    fi
+    firstarg="$1"
+    if shift; then
+       case $firstarg in
+       *o*)
+           firstarg=`echo "$firstarg" | sed s/o//`
+           tar "$firstarg" "$@" && exit 0
+           ;;
+       esac
+       case $firstarg in
+       *h*)
+           firstarg=`echo "$firstarg" | sed s/h//`
+           tar "$firstarg" "$@" && exit 0
+           ;;
+       esac
+    fi
+
+    echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+         You may want to install GNU tar or Free paxutils, or check the
+         command line arguments."
+    exit 1
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/names.c b/names.c
new file mode 100644 (file)
index 0000000..aae040c
--- /dev/null
+++ b/names.c
@@ -0,0 +1,809 @@
+/*****************************************************************************/
+/*
+ *      names.c  --  USB name database manipulation routines
+ *
+ *      Copyright (C) 1999, 2000  Thomas Sailer (sailer@ife.ee.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
+ *      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 <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <dirent.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <ctype.h>
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef HAVE_LIBZ
+#include <zlib.h>
+#define        usb_file                                gzFile
+#define        usb_fopen(path, mode)           gzopen(path, mode)
+#define        usb_fgets(s, size, stream)      gzgets(stream, s, size)
+#define        usb_close(f)                    gzclose(f)
+#else
+#define        usb_file                                FILE*
+#define        usb_fopen(path, mode)           fopen(path, mode)
+#define        usb_fgets(s, size, stream)      fgets(s, size, stream)
+#define        usb_close(f)                    fclose(f)
+#endif
+
+#include "names.h"
+
+
+/* ---------------------------------------------------------------------- */
+
+struct vendor {
+       struct vendor *next;
+       u_int16_t vendorid;
+       char name[1];
+};
+
+struct product {
+       struct product *next;
+       u_int16_t vendorid, productid;
+       char name[1];
+};
+
+struct class {
+       struct class *next;
+       u_int8_t classid;
+       char name[1];
+};
+
+struct subclass {
+       struct subclass *next;
+       u_int8_t classid, subclassid;
+       char name[1];
+};
+
+struct protocol {
+       struct protocol *next;
+       u_int8_t classid, subclassid, protocolid;
+       char name[1];
+};
+
+struct audioterminal {
+       struct audioterminal *next;
+       u_int16_t termt;
+       char name[1];
+};
+
+struct videoterminal {
+       struct videoterminal *next;
+       u_int16_t termt;
+       char name[1];
+};
+
+struct genericstrtable {
+        struct genericstrtable *next;
+        unsigned int num;
+        char name[1];
+};
+
+/* ---------------------------------------------------------------------- */
+
+#define HASH1  0x10
+#define HASH2  0x02
+#define HASHSZ 16
+
+static unsigned int hashnum(unsigned int num)
+{
+       unsigned int mask1 = HASH1 << 27, mask2 = HASH2 << 27;
+
+       for (; mask1 >= HASH1; mask1 >>= 1, mask2 >>= 1)
+               if (num & mask1)
+                       num ^= mask2;
+       return num & (HASHSZ-1);
+}
+
+/* ---------------------------------------------------------------------- */
+
+static struct vendor *vendors[HASHSZ] = { NULL, };
+static struct product *products[HASHSZ] = { NULL, };
+static struct class *classes[HASHSZ] = { NULL, };
+static struct subclass *subclasses[HASHSZ] = { NULL, };
+static struct protocol *protocols[HASHSZ] = { NULL, };
+static struct audioterminal *audioterminals[HASHSZ] = { NULL, };
+static struct videoterminal *videoterminals[HASHSZ] = { NULL, };
+static struct genericstrtable *hiddescriptors[HASHSZ] = { NULL, };
+static struct genericstrtable *reports[HASHSZ] = { NULL, };
+static struct genericstrtable *huts[HASHSZ] = { NULL, };
+static struct genericstrtable *biass[HASHSZ] = { NULL, };
+static struct genericstrtable *physdess[HASHSZ] = { NULL, };
+static struct genericstrtable *hutus[HASHSZ] = { NULL, };
+static struct genericstrtable *langids[HASHSZ] = { NULL, };
+static struct genericstrtable *countrycodes[HASHSZ] = { NULL, };
+
+/* ---------------------------------------------------------------------- */
+
+static const char *names_genericstrtable(struct genericstrtable *t[HASHSZ], unsigned int index)
+{
+        struct genericstrtable *h;
+
+        for (h = t[hashnum(index)]; h; h = h->next)
+                if (h->num == index)
+                        return h->name;
+        return NULL;
+}
+
+const char *names_hid(u_int8_t hidd)
+{
+       return names_genericstrtable(hiddescriptors, hidd);
+}
+
+const char *names_reporttag(u_int8_t rt)
+{
+       return names_genericstrtable(reports, rt);
+}
+
+const char *names_huts(unsigned int data)
+{
+       return names_genericstrtable(huts, data);
+}
+
+const char *names_hutus(unsigned int data)
+{
+       return names_genericstrtable(hutus, data);
+}
+
+const char *names_langid(u_int16_t langid)
+{
+       return names_genericstrtable(langids, langid);
+}
+
+const char *names_physdes(u_int8_t ph)
+{
+       return names_genericstrtable(physdess, ph);
+}
+
+const char *names_bias(u_int8_t b)
+{
+       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;
+
+       v = vendors[hashnum(vendorid)];
+       for (; v; v = v->next)
+               if (v->vendorid == vendorid)
+                       return v->name;
+       return NULL;
+}
+
+const char *names_product(u_int16_t vendorid, u_int16_t productid)
+{
+       struct product *p;
+
+       p = products[hashnum((vendorid << 16) | productid)];
+       for (; p; p = p->next)
+               if (p->vendorid == vendorid && p->productid == productid)
+                       return p->name;
+       return NULL;
+}
+
+const char *names_class(u_int8_t classid)
+{
+       struct class *c;
+
+       c = classes[hashnum(classid)];
+       for (; c; c = c->next)
+               if (c->classid == classid)
+                       return c->name;
+       return NULL;
+}
+
+const char *names_subclass(u_int8_t classid, u_int8_t subclassid)
+{
+       struct subclass *s;
+
+       s = subclasses[hashnum((classid << 8) | subclassid)];
+       for (; s; s = s->next)
+               if (s->classid == classid && s->subclassid == subclassid)
+                       return s->name;
+       return NULL;
+}
+
+const char *names_protocol(u_int8_t classid, u_int8_t subclassid, u_int8_t protocolid)
+{
+       struct protocol *p;
+
+       p = protocols[hashnum((classid << 16) | (subclassid << 8) | protocolid)];
+       for (; p; p = p->next)
+               if (p->classid == classid && p->subclassid == subclassid && p->protocolid == protocolid)
+                       return p->name;
+       return NULL;
+}
+
+const char *names_audioterminal(u_int16_t termt)
+{
+       struct audioterminal *at;
+
+       at = audioterminals[hashnum(termt)];
+       for (; at; at = at->next)
+               if (at->termt == termt)
+                       return at->name;
+       return NULL;
+}
+
+const char *names_videoterminal(u_int16_t termt)
+{
+       struct videoterminal *vt;
+
+       vt = videoterminals[hashnum(termt)];
+       for (; vt; vt = vt->next)
+               if (vt->termt == termt)
+                       return vt->name;
+       return NULL;
+}
+
+/* ---------------------------------------------------------------------- */
+
+static int new_vendor(const char *name, u_int16_t vendorid)
+{
+       struct vendor *v;
+       unsigned int h = hashnum(vendorid);
+
+       v = vendors[h];
+       for (; v; v = v->next)
+               if (v->vendorid == vendorid)
+                       return -1;
+       v = malloc(sizeof(struct vendor) + strlen(name));
+       if (!v)
+               return -1;
+       strcpy(v->name, name);
+       v->vendorid = vendorid;
+       v->next = vendors[h];
+       vendors[h] = v;
+       return 0;
+}
+
+static int new_product(const char *name, u_int16_t vendorid, u_int16_t productid)
+{
+       struct product *p;
+       unsigned int h = hashnum((vendorid << 16) | productid);
+
+       p = products[h];
+       for (; p; p = p->next)
+               if (p->vendorid == vendorid && p->productid == productid)
+                       return -1;
+       p = malloc(sizeof(struct product) + strlen(name));
+       if (!p)
+               return -1;
+       strcpy(p->name, name);
+       p->vendorid = vendorid;
+       p->productid = productid;
+       p->next = products[h];
+       products[h] = p;
+       return 0;
+}
+
+static int new_class(const char *name, u_int8_t classid)
+{
+       struct class *c;
+       unsigned int h = hashnum(classid);
+
+       c = classes[h];
+       for (; c; c = c->next)
+               if (c->classid == classid)
+                       return -1;
+       c = malloc(sizeof(struct class) + strlen(name));
+       if (!c)
+               return -1;
+       strcpy(c->name, name);
+       c->classid = classid;
+       c->next = classes[h];
+       classes[h] = c;
+       return 0;
+}
+
+static int new_subclass(const char *name, u_int8_t classid, u_int8_t subclassid)
+{
+       struct subclass *s;
+       unsigned int h = hashnum((classid << 8) | subclassid);
+
+       s = subclasses[h];
+       for (; s; s = s->next)
+               if (s->classid == classid && s->subclassid == subclassid)
+                       return -1;
+       s = malloc(sizeof(struct subclass) + strlen(name));
+       if (!s)
+               return -1;
+       strcpy(s->name, name);
+       s->classid = classid;
+       s->subclassid = subclassid;
+       s->next = subclasses[h];
+       subclasses[h] = s;
+       return 0;
+}
+
+static int new_protocol(const char *name, u_int8_t classid, u_int8_t subclassid, u_int8_t protocolid)
+{
+       struct protocol *p;
+       unsigned int h = hashnum((classid << 16) | (subclassid << 8) | protocolid);
+
+       p = protocols[h];
+       for (; p; p = p->next)
+               if (p->classid == classid && p->subclassid == subclassid && p->protocolid == protocolid)
+                       return -1;
+       p = malloc(sizeof(struct protocol) + strlen(name));
+       if (!p)
+               return -1;
+       strcpy(p->name, name);
+       p->classid = classid;
+       p->subclassid = subclassid;
+       p->protocolid = protocolid;
+       p->next = protocols[h];
+       protocols[h] = p;
+       return 0;
+}
+
+static int new_audioterminal(const char *name, u_int16_t termt)
+{
+       struct audioterminal *at;
+       unsigned int h = hashnum(termt);
+
+       at = audioterminals[h];
+       for (; at; at = at->next)
+               if (at->termt == termt)
+                       return -1;
+       at = malloc(sizeof(struct audioterminal) + strlen(name));
+       if (!at)
+               return -1;
+       strcpy(at->name, name);
+       at->termt = termt;
+       at->next = audioterminals[h];
+       audioterminals[h] = at;
+       return 0;
+}
+
+static int new_videoterminal(const char *name, u_int16_t termt)
+{
+       struct videoterminal *vt;
+       unsigned int h = hashnum(termt);
+
+       vt = videoterminals[h];
+       for (; vt; vt = vt->next)
+               if (vt->termt == termt)
+                       return -1;
+       vt = malloc(sizeof(struct videoterminal) + strlen(name));
+       if (!vt)
+               return -1;
+       strcpy(vt->name, name);
+       vt->termt = termt;
+       vt->next = videoterminals[h];
+       videoterminals[h] = vt;
+       return 0;
+}
+
+static int new_genericstrtable(struct genericstrtable *t[HASHSZ], const char *name, unsigned int index)
+{
+        struct genericstrtable *g;
+       unsigned int h = hashnum(index);
+        
+        for (g = t[h]; g; g = g->next)
+                if (g->num == index)
+                        return -1;
+        g = malloc(sizeof(struct genericstrtable) + strlen(name));
+        if (!g)
+                return -1;
+        strcpy(g->name, name);
+        g->num = index;
+        g->next = t[h];
+        t[h] = g;
+        return 0;
+}
+
+static int new_hid(const char *name, u_int8_t hidd)
+{
+       return new_genericstrtable(hiddescriptors, name, hidd);
+}
+
+static int new_reporttag(const char *name, u_int8_t rt)
+{
+       return new_genericstrtable(reports, name, rt);
+}
+
+static int new_huts(const char *name, unsigned int data)
+{
+       return new_genericstrtable(huts, name, data);
+}
+
+static int new_hutus(const char *name, unsigned int data)
+{
+       return new_genericstrtable(hutus, name, data);
+}
+
+static int new_langid(const char *name, u_int16_t langid)
+{
+       return new_genericstrtable(langids, name, langid);
+}
+
+static int new_physdes(const char *name, u_int8_t ph)
+{
+       return new_genericstrtable(physdess, name, ph);
+}
+static int new_bias(const char *name, u_int8_t b)
+{
+       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) 
+
+static void parse(usb_file f)
+{
+       char buf[512], *cp;
+       unsigned int linectr = 0;
+       int lastvendor = -1, lastclass = -1, lastsubclass = -1, lasthut=-1, lastlang=-1;
+       unsigned int u;
+
+       while (usb_fgets(buf, sizeof(buf), f)) {
+               linectr++;
+               /* remove line ends */
+               if ((cp = strchr(buf, 13)))
+                       *cp = 0;
+               if ((cp = strchr(buf, 10)))
+                       *cp = 0;
+               if (buf[0] == '#' || !buf[0])
+                       continue;
+               cp = buf;
+                if (buf[0] == 'P' && buf[1] == 'H' && buf[2] == 'Y' && buf[3] == 'S' && buf[4] == 'D' &&
+                    buf[5] == 'E' && buf[6] == 'S' && /*isspace(buf[7])*/ buf[7] == ' ') {
+                        cp = buf + 8;
+                        while (isspace(*cp))
+                                cp++;
+                        if (!isxdigit(*cp)) {
+                                fprintf(stderr, "Invalid Physdes type at line %u\n", linectr);
+                                continue;
+                        }
+                        u = strtoul(cp, &cp, 16);
+                        while (isspace(*cp))
+                                cp++;
+                        if (!*cp) {
+                                fprintf(stderr, "Invalid Physdes type at line %u\n", linectr);
+                                continue;
+                        }
+                        if (new_physdes(cp, u))
+                                fprintf(stderr, "Duplicate Physdes  type spec at line %u terminal type %04x %s\n", linectr, u, cp);
+                        DBG(printf("line %5u physdes type %02x %s\n", linectr, u, cp));
+                        continue;
+
+                }
+                if (buf[0] == 'P' && buf[1] == 'H' && buf[2] == 'Y' && /*isspace(buf[3])*/ buf[3] == ' ') {
+                        cp = buf + 4;
+                        while (isspace(*cp))
+                                cp++;
+                        if (!isxdigit(*cp)) {
+                                fprintf(stderr, "Invalid PHY type at line %u\n", linectr);
+                                continue;
+                        }
+                        u = strtoul(cp, &cp, 16);
+                        while (isspace(*cp))
+                                cp++;
+                        if (!*cp) {
+                                fprintf(stderr, "Invalid PHY type at line %u\n", linectr);
+                                continue;
+                        }
+                        if (new_physdes(cp, u))
+                                fprintf(stderr, "Duplicate PHY type spec at line %u terminal type %04x %s\n", linectr, u, cp);
+                        DBG(printf("line %5u PHY type %02x %s\n", linectr, u, cp));
+                        continue;
+
+                }
+                if (buf[0] == 'B' && buf[1] == 'I' && buf[2] == 'A' && buf[3] == 'S' && /*isspace(buf[4])*/ buf[4] == ' ') {
+                        cp = buf + 5;
+                        while (isspace(*cp))
+                                cp++;
+                        if (!isxdigit(*cp)) {
+                                fprintf(stderr, "Invalid BIAS type at line %u\n", linectr);
+                                continue;
+                        }
+                        u = strtoul(cp, &cp, 16);
+                        while (isspace(*cp))
+                                cp++;
+                        if (!*cp) {
+                                fprintf(stderr, "Invalid BIAS type at line %u\n", linectr);
+                                continue;
+                        }
+                        if (new_bias(cp, u))
+                                fprintf(stderr, "Duplicate BIAS  type spec at line %u terminal type %04x %s\n", linectr, u, cp);
+                        DBG(printf("line %5u BIAS type %02x %s\n", linectr, u, cp));
+                        continue;
+
+                }
+                if (buf[0] == 'L' && /*isspace(buf[1])*/ buf[1] == ' ') {
+                        cp =  buf+2;
+                        while (isspace(*cp))
+                                cp++;
+                        if (!isxdigit(*cp)) {
+                                fprintf(stderr, "Invalid LANGID spec at line %u\n", linectr);
+                                continue;
+                        }
+                        u = strtoul(cp, &cp, 16);
+                        while (isspace(*cp))
+                                cp++;
+                        if (!*cp) {
+                                fprintf(stderr, "Invalid LANGID spec at line %u\n", linectr);
+                                continue;
+                        }
+                        if (new_langid(cp, u))
+                                fprintf(stderr, "Duplicate LANGID spec at line %u language-id %04x %s\n", linectr, u, cp);
+                        DBG(printf("line %5u LANGID %02x %s\n", linectr, u, cp));
+                        lasthut = lastclass = lastvendor = lastsubclass = -1;
+                        lastlang = u;
+                        continue;
+                }
+               if (buf[0] == 'C' && /*isspace(buf[1])*/ buf[1] == ' ') {
+                       /* class spec */
+                       cp = buf+2;
+                       while (isspace(*cp))
+                               cp++;
+                       if (!isxdigit(*cp)) {
+                               fprintf(stderr, "Invalid class spec at line %u\n", linectr);
+                               continue;
+                       }
+                       u = strtoul(cp, &cp, 16);
+                       while (isspace(*cp))
+                               cp++;
+                       if (!*cp) {
+                               fprintf(stderr, "Invalid class spec at line %u\n", linectr);
+                               continue;
+                       }
+                       if (new_class(cp, u))
+                               fprintf(stderr, "Duplicate class spec at line %u class %04x %s\n", linectr, u, cp);
+                       DBG(printf("line %5u class %02x %s\n", linectr, u, cp));
+                       lasthut = lastlang = lastvendor = lastsubclass = -1;
+                       lastclass = u;
+                       continue;
+               }
+               if (buf[0] == 'A' && buf[1] == 'T' && isspace(buf[2])) {
+                       /* audio terminal type spec */
+                       cp = buf+3;
+                       while (isspace(*cp))
+                               cp++;
+                       if (!isxdigit(*cp)) {
+                               fprintf(stderr, "Invalid audio terminal type at line %u\n", linectr);
+                               continue;
+                       }
+                       u = strtoul(cp, &cp, 16);
+                       while (isspace(*cp))
+                               cp++;
+                       if (!*cp) {
+                               fprintf(stderr, "Invalid audio terminal type at line %u\n", linectr);
+                               continue;
+                       }
+                       if (new_audioterminal(cp, u))
+                               fprintf(stderr, "Duplicate audio terminal type spec at line %u terminal type %04x %s\n", linectr, u, cp);
+                       DBG(printf("line %5u audio terminal type %02x %s\n", linectr, u, cp));
+                       continue;
+               }
+               if (buf[0] == 'V' && buf[1] == 'T' && isspace(buf[2])) {
+                       /* video terminal type spec */
+                       cp = buf+3;
+                       while (isspace(*cp))
+                               cp++;
+                       if (!isxdigit(*cp)) {
+                               fprintf(stderr, "Invalid video terminal type at line %u\n", linectr);
+                               continue;
+                       }
+                       u = strtoul(cp, &cp, 16);
+                       while (isspace(*cp))
+                               cp++;
+                       if (!*cp) {
+                               fprintf(stderr, "Invalid video terminal type at line %u\n", linectr);
+                               continue;
+                       }
+                       if (new_videoterminal(cp, u))
+                               fprintf(stderr, "Duplicate video terminal type spec at line %u terminal type %04x %s\n", linectr, u, cp);
+                       DBG(printf("line %5u video 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);
+                       while (isspace(*cp))
+                               cp++;
+                       if (!*cp) {
+                               fprintf(stderr, "Invalid vendor spec at line %u\n", linectr);
+                               continue;
+                       }
+                       if (new_vendor(cp, u))
+                               fprintf(stderr, "Duplicate vendor spec at line %u vendor %04x %s\n", linectr, u, cp);
+                       DBG(printf("line %5u vendor %04x %s\n", linectr, u, cp));
+                       lastvendor = u;
+                       lasthut = lastlang = lastclass = lastsubclass = -1;
+                       continue;
+               }
+               if (buf[0] == '\t' && isxdigit(buf[1])) {
+                       /* product or subclass spec */
+                       u = strtoul(buf+1, &cp, 16);
+                       while (isspace(*cp))
+                               cp++;
+                       if (!*cp) {
+                               fprintf(stderr, "Invalid product/subclass spec at line %u\n", linectr);
+                               continue;
+                       }
+                       if (lastvendor != -1) {
+                               if (new_product(cp, lastvendor, u))
+                                       fprintf(stderr, "Duplicate product spec at line %u product %04x:%04x %s\n", linectr, lastvendor, u, cp);
+                               DBG(printf("line %5u product %04x:%04x %s\n", linectr, lastvendor, u, cp));
+                               continue;
+                       }
+                       if (lastclass != -1) {
+                               if (new_subclass(cp, lastclass, u))
+                                       fprintf(stderr, "Duplicate subclass spec at line %u class %02x:%02x %s\n", linectr, lastclass, u, cp);
+                               DBG(printf("line %5u subclass %02x:%02x %s\n", linectr, lastclass, u, cp));
+                               lastsubclass = u;
+                               continue;
+                       }
+                       if (lasthut != -1) {
+                               if (new_hutus(cp, (lasthut << 16)+u))
+                                       fprintf(stderr, "Duplicate HUT Usage Spec at line %u\n", linectr);
+                               continue;
+                       }
+                       if (lastlang != -1) {
+                                if (new_langid(cp, lastlang+(u<<10)))
+                                        fprintf(stderr, "Duplicate LANGID Usage Spec at line %u\n", linectr);
+                                continue;
+                        }
+                       fprintf(stderr, "Product/Subclass spec without prior Vendor/Class spec at line %u\n", linectr);
+                       continue;
+               }
+               if (buf[0] == '\t' && buf[1] == '\t' && isxdigit(buf[2])) {
+                       /* protocol spec */
+                       u = strtoul(buf+2, &cp, 16);
+                       while (isspace(*cp))
+                               cp++;
+                       if (!*cp) {
+                               fprintf(stderr, "Invalid protocol spec at line %u\n", linectr);
+                               continue;
+                       }
+                       if (lastclass != -1 && lastsubclass != -1) {
+                               if (new_protocol(cp, lastclass, lastsubclass, u))
+                                       fprintf(stderr, "Duplicate protocol spec at line %u class %02x:%02x:%02x %s\n", linectr, lastclass, lastsubclass, u, cp);
+                               DBG(printf("line %5u protocol %02x:%02x:%02x %s\n", linectr, lastclass, lastsubclass, u, cp));
+                               continue;
+                       }
+                       fprintf(stderr, "Protocol spec without prior Class and Subclass spec at line %u\n", linectr);
+                       continue;
+               }
+               if (buf[0] == 'H' && buf[1] == 'I' && buf[2] == 'D' && /*isspace(buf[3])*/ buf[3] == ' ') {
+                       cp = buf + 4;
+                        while (isspace(*cp))
+                                cp++;
+                        if (!isxdigit(*cp)) {
+                                fprintf(stderr, "Invalid HID type at line %u\n", linectr);
+                                continue;
+                        }
+                        u = strtoul(cp, &cp, 16);
+                        while (isspace(*cp))
+                                cp++;
+                        if (!*cp) {
+                                fprintf(stderr, "Invalid HID type at line %u\n", linectr);
+                                continue;
+                        }
+                        if (new_hid(cp, u))
+                                fprintf(stderr, "Duplicate HID type spec at line %u terminal type %04x %s\n", linectr, u, cp);
+                        DBG(printf("line %5u HID type %02x %s\n", linectr, u, cp));
+                        continue;
+
+               }
+                if (buf[0] == 'H' && buf[1] == 'U' && buf[2] == 'T' && /*isspace(buf[3])*/ buf[3] == ' ') {
+                        cp = buf + 4;
+                        while (isspace(*cp))
+                                cp++;
+                        if (!isxdigit(*cp)) {
+                                fprintf(stderr, "Invalid HUT type at line %u\n", linectr);
+                                continue;
+                        }
+                        u = strtoul(cp, &cp, 16);
+                        while (isspace(*cp))
+                                cp++;
+                        if (!*cp) {
+                                fprintf(stderr, "Invalid HUT type at line %u\n", linectr);
+                                continue;
+                        }
+                        if (new_huts(cp, u))
+                                fprintf(stderr, "Duplicate HUT type spec at line %u terminal type %04x %s\n", linectr, u, cp);
+                       lastlang = lastclass = lastvendor = lastsubclass = -1;
+                       lasthut = u;
+                        DBG(printf("line %5u HUT type %02x %s\n", linectr, u, cp));
+                        continue;
+
+                }
+                if (buf[0] == 'R' && buf[1] == ' ') {
+                        cp = buf + 2;
+                        while (isspace(*cp))
+                                cp++;
+                        if (!isxdigit(*cp)) {
+                                fprintf(stderr, "Invalid Report type at line %u\n", linectr);
+                                continue;
+                        }
+                        u = strtoul(cp, &cp, 16);
+                        while (isspace(*cp))
+                                cp++;
+                        if (!*cp) {
+                                fprintf(stderr, "Invalid Report type at line %u\n", linectr);
+                                continue;
+                        }
+                        if (new_reporttag(cp, u))
+                                fprintf(stderr, "Duplicate Report type spec at line %u terminal type %04x %s\n", linectr, u, cp);
+                        DBG(printf("line %5u Report type %02x %s\n", linectr, u, cp));
+                        continue;
+
+                }                      
+               fprintf(stderr, "Unknown line at line %u\n", linectr);
+       }
+}
+
+/* ---------------------------------------------------------------------- */
+
+int names_init(char *n)
+{
+       usb_file f;
+       
+       if (!(f = usb_fopen(n, "r"))) {
+               return errno;
+       }
+       parse(f);
+       usb_close(f);
+       return 0;
+}
diff --git a/names.h b/names.h
new file mode 100644 (file)
index 0000000..2cde891
--- /dev/null
+++ b/names.h
@@ -0,0 +1,52 @@
+/*****************************************************************************/
+
+/*
+ *      names.h  --  USB name database manipulation routines
+ *
+ *      Copyright (C) 1999, 2000  Thomas Sailer (sailer@ife.ee.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
+ *      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 _NAMES_H
+#define _NAMES_H
+
+#include <sys/types.h>
+
+/* ---------------------------------------------------------------------- */
+
+extern const char *names_vendor(u_int16_t vendorid);
+extern const char *names_product(u_int16_t vendorid, u_int16_t productid);
+extern const char *names_class(u_int8_t classid);
+extern const char *names_subclass(u_int8_t classid, u_int8_t subclassid);
+extern const char *names_protocol(u_int8_t classid, u_int8_t subclassid, u_int8_t protocolid);
+extern const char *names_audioterminal(u_int16_t termt);
+extern const char *names_videoterminal(u_int16_t termt);
+extern const char *names_hid(u_int8_t hidd);
+extern const char *names_reporttag(u_int8_t rt);
+extern const char *names_huts(unsigned int data);
+extern const char *names_hutus(unsigned int data);
+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);
+
+/* ---------------------------------------------------------------------- */
+#endif /* _NAMES_H */
diff --git a/packaging/usbutils-rpmlintrc b/packaging/usbutils-rpmlintrc
new file mode 100644 (file)
index 0000000..c9ff771
--- /dev/null
@@ -0,0 +1,3 @@
+# This line is mandatory to access the configuration functions
+from Config import *
+addFilter("usbutils.* devel-file-in-non-devel-package")
diff --git a/packaging/usbutils.spec b/packaging/usbutils.spec
new file mode 100644 (file)
index 0000000..2543b6e
--- /dev/null
@@ -0,0 +1,40 @@
+#sbs-git:slp/pkgs/xorg/miscs/usbutils usbutils 0.86 9271bc1e8de96d6f0ee693af5853e58152ce6a59
+Name:           usbutils
+Version: 0.86
+Release:        6
+License:        GPLv2+
+Url:            http://www.linux-usb.org/
+Source:         http://downloads.sourceforge.net/linux-usb/%{name}-%{version}.tar.gz
+Summary:        Linux USB utilities
+Group:          Applications/System
+Source101:      usbutils-rpmlintrc
+BuildRequires:  autoconf,
+BuildRequires:  libtool,
+BuildRequires:  pkgconfig(libusb) >= 0.1.8
+
+%description
+This package contains utilities for inspecting devices connected to a
+USB bus.
+
+%prep
+%setup -q
+
+%build
+%reconfigure \
+       --datadir=/usr/lib/usbutils
+
+make %{?_smp_mflags}
+
+%install
+make install DESTDIR=%{buildroot} pkgconfigdir=/usr/share/pkgconfig
+
+%docs_package
+
+%files
+%defattr(-,root,root,-)
+%{_sbindir}/*
+%{_bindir}/*
+%{_datadir}/pkgconfig/usbutils.pc
+/usr/lib/usbutils/*
+%doc COPYING
+
diff --git a/packaging/usbutils_debian.patch b/packaging/usbutils_debian.patch
new file mode 100644 (file)
index 0000000..7b88994
--- /dev/null
@@ -0,0 +1,3029 @@
+diff -ruN -X /home/zzervb/exclude.list usbutils-0.86/lsusb.c usbutils/lsusb.c
+--- usbutils-0.86/lsusb.c      2009-08-18 07:28:42.000000000 +0900
++++ usbutils/lsusb.c   2011-07-29 11:13:13.449667997 +0900
+@@ -76,6 +76,9 @@
+ #define USB_DT_CS_INTERFACE           (USB_TYPE_CLASS | USB_DT_INTERFACE)
+ #define USB_DT_CS_ENDPOINT            (USB_TYPE_CLASS | USB_DT_ENDPOINT)
++#ifndef USB_CLASS_CCID
++#define USB_CLASS_CCID                        0x0b
++#endif
+ #ifndef USB_CLASS_VIDEO
+ #define USB_CLASS_VIDEO                       0x0e
+@@ -606,6 +609,9 @@
+                               case USB_CLASS_HID:
+                                       dump_hid_device(dev, interface, buf);
+                                       break;
++                              case USB_CLASS_CCID:
++                                      dump_ccid_device(buf);
++                                      break;
+                               default:
+                                       goto dump;
+                               }
+@@ -619,7 +625,7 @@
+                               case USB_CLASS_HID:
+                                       dump_hid_device(dev, interface, buf);
+                                       break;
+-                              case 0x0b:      /* chip/smartcard */
++                              case USB_CLASS_CCID:
+                                       dump_ccid_device(buf);
+                                       break;
+                               case 0xe0:      /* wireless */
+diff -ruN -X /home/zzervb/exclude.list usbutils-0.86/usb.ids usbutils/usb.ids
+--- usbutils-0.86/usb.ids      2009-06-26 07:41:25.000000000 +0900
++++ usbutils/usb.ids   2011-07-29 11:13:13.453668002 +0900
+@@ -1,13 +1,16 @@
+ #
+ #     List of USB ID's
+ #
+-#     Maintained by Stephen J. Gowdy <sgowdy+usb.ids@gmail.com>
+-#     If you have any new entries, send them to the maintainer.
+-#     Send entries as patches (diff -u old new).
++#     Maintained by Stephen J. Gowdy <linux.usb.ids@gmail.com>
++#     If you have any new entries, please submit then via
++#             http://www.linux-usb.org/usb-ids.html
++#     or send entries as patches (diff -u old new) in the
++#     body of your email (a bot will attempt to deal with it).
+ #     The latest version can be obtained from
+ #             http://www.linux-usb.org/usb.ids
+ #
+-# $Id: usb.ids,v 1.383 2009/06/20 06:40:28 gowdy Exp $
++# Version: 2010.02.11
++# Date:    2010-02-11 20:34:12
+ #
+ # Vendors, devices and interfaces. Please keep sorted.
+@@ -34,6 +37,11 @@
+       6026  CBM1180 Flash drive controller
+ 02ad  HUMAX Co., Ltd.
+       138c  PVR Mass Storage
++0324  OCZ Technology Inc
++      bc06  OCZ ATV USB 2.0 Flash Drive
++      bc08  OCZ Rally2/ATV USB 2.0 Flash Drive
++0325  OCZ Technology Inc
++      ac02  ATV Turbo / Rally2 Dual Channel USB 2.0 Flash Drive
+ 0386  LTS
+       0001  PSX for USB Converter
+ 03e8  EndPoints, Inc.
+@@ -121,6 +129,7 @@
+       0312  Color Inkjet CP1700
+       0314  designjet 30/130 series
+       0317  LaserJet 1200
++      0324  SK-2885 keyboard
+       0401  ScanJet 5200c
+       0404  DeskJet 830c/832c
+       0405  ScanJet 3400cse
+@@ -316,6 +325,7 @@
+       3217  LaserJet 3050
+       3302  PhotoSmart 1218
+       3304  DeskJet 990c
++      3312  OfficeJet J6410
+       3317  LaserJet 3052
+       3402  PhotoSmart 1115
+       3404  DeskJet 6122
+@@ -329,6 +339,7 @@
+       3617  EWS 2605
+       3711  PSC 2500
+       3717  EWS UPD
++      3724  Webcam
+       3802  PhotoSmart 100
+       3817  LaserJet P2015 series
+       3902  PhotoSmart 130
+@@ -343,6 +354,7 @@
+       3c17  EWS UPD
+       3d02  PhotoSmart 7350~
+       3d11  OfficeJet 4215
++      3d17  LaserJet P1005
+       3e02  PhotoSmart 7550
+       3e17  LaserJet P1006
+       3f02  PhotoSmart 7550~
+@@ -425,6 +437,7 @@
+       6a11  PhotoSmart C6200 series
+       6a17  LaserJet 4240
+       6b02  PhotoSmart R707 (PTP mode)
++      6b11  Photosmart C4500 series
+       6c17  Color LaserJet 4610
+       6f17  Color LaserJet CP6015 series
+       7004  DeskJet 3320c
+@@ -486,6 +499,7 @@
+       a004  DeskJet 5850c
+       b002  PhotoSmart 7200 series
+       b102  PhotoSmart 7200 series
++      b116  Webcam
+       b202  PhotoSmart 7600 series
+       b302  PhotoSmart 7600 series
+       b402  PhotoSmart 7700 series
+@@ -541,6 +555,7 @@
+ 03fd  Xilinx, Inc.
+ 03fe  Farallon Comunications
+ 0400  National Semiconductor Corp.
++      05dc  Rigol Technologies DS1000USB Oscilloscope
+       0807  Bluetooth Dongle
+       080a  Bluetooth Device
+       1000  Mustek BearPaw 1200 Scanner
+@@ -548,6 +563,7 @@
+       1237  Hub
+       a000  Smart Display Reference Device
+       c35b  Printing Support
++      c55d  Rigol Technologies DS5000USB Oscilloscope
+ 0401  National Registry, Inc.
+ 0402  ALi Corp.
+       5462  M5462 IDE Controller
+@@ -570,19 +586,23 @@
+       6008  Serial Converter
+       6009  Serial Converter
+       6010  FT2232C Dual USB-UART/FIFO IC
++      6011  FT4232H
+       8040  4 Port Hub
+       8070  7 Port Hub
+       8370  7 Port Hub
+       8371  PS/2 Keyboard And Mouse
+       8372  FT8U100AX Serial Port
+       bcd8  Stellaris Development Board
+-#             0  Stellaris Development Board A
+-#             1  Stellaris Virtual COM Port
+       bcd9  Stellaris Evaluation Board
+-#             0  Stellaris Evaluation Board A
+-#             1  Stellaris Virtual COM Port
+       c630  lcd2usb interface
+       c7d0  RR-CirKits LocoBuffer-USB
++      c8b8  Alpermann+Velte MTD TCU
++      c8b9  Alpermann+Velte MTD TCU 1HE
++      c8ba  Alpermann+Velte Rubidium H1
++      c8bb  Alpermann+Velte Rubidium H3
++      c8bc  Alpermann+Velte Rubidium S1
++      c8bd  Alpermann+Velte Rubidium T1
++      c8be  Alpermann+Velte Rubidium D1
+       cc48  product FTDI TACTRIX_OPENPORT_13M 0xcc48 OpenPort 1.3 Mitsubishi
+       cc49  product FTDI TACTRIX_OPENPORT_13S 0xcc49 OpenPort 1.3 Subaru
+       cc4a  product FTDI TACTRIX_OPENPORT_13U 0xcc4a OpenPort 1.3 Universal
+@@ -591,6 +611,7 @@
+       d012  SCS DRAGON 1
+       d013  SCS DRAGON 1
+       d6f8  UNI Black BOX
++      e0d0  Total Phase Aardvark I2C/SPI analyzer
+       e700  Elster Unicom III Optical Probe
+       e888  Expert ISDN Control USB
+       e889  USB-RS232 OptoBridge
+@@ -598,6 +619,7 @@
+       e88b  Precision Clock MSF USB
+       e88c  Expert mouseCLOCK USB II HBG
+       ea90  Eclo 1-Wire Adapter
++      ed72  Hameg HM1508-2 Oscilloscope
+       f1a0  Asix PRESTO Programmer
+       f208  Papenmeier Braille-Display
+       f680  Suunto Sports Instrument
+@@ -614,6 +636,7 @@
+       fc0d  Crystalfontz CFA-635 USB LCD
+       fc82  SEMC DSS-20 SyncStation
+       fd48  ShipModul MiniPlex-4xUSB NMEA Multiplexer
++      fd49  ShipModul MiniPlex-4xUSB-AIS NMEA Multiplexer
+       ff08  ToolHouse LoopBack Adapter
+       ff18  Logbook Bus
+       ff19  Logbook Bus
+@@ -644,6 +667,7 @@
+ 0407  Fujitsu Personal Systems, Inc.
+ 0408  Quanta Computer, Inc.
+       030c  HP Webcam
++      3000  Optical dual-touch panel
+ 0409  NEC Corp.
+       0011  PC98 Series Layout Keyboard Mouse
+       0012  ATerm IT75DSU ISDN TA
+@@ -804,6 +828,7 @@
+       05c3  Digital Camera
+       05c4  Digital Camera
+       05c5  Digital Camera
++      05d3  EasyShare M320 Camera
+       1001  EasyShare SV811 Digital Picture Frame
+       4000  InkJet Color Printer
+       410d  EasyShare G600 Printer Dock
+@@ -817,6 +842,7 @@
+ 040b  Weltrend Semiconductor
+       6510  Weltrend Bar Code Reader
+       6520  XBOX Xploder
++      6533  Speed-Link Competition Pro
+ 040c  VTech Computers, Ltd
+ 040d  VIA Technologies, Inc.
+       3184  VNT VT6656 USB-802.11 Wireless LAN Adapter
+@@ -857,6 +883,12 @@
+       00d8  WLI-U2-SG54HP
+       00d9  WLI-U2-G54HP
+       00da  WLI-U2-KG54L 802.11bg
++      00e8  Buffalo WLI-UC-G300N Wireless LAN Adapter
++      012e  Buffalo WLI-UC-AG300N Wireless LAN Adapter
++      0148  Buffalo WLI-UC-G300HP Wireless LAN Adapter
++      0150  Buffalo WLP-UC-AG300 Wireless LAN Adapter
++      0157  Buffalo External Hard Drive HD-PEU2
++      015d  Buffalo WLI-UC-GN Wireless LAN Adapter
+ 0412  Award Software International
+ 0413  Leadtek Research, Inc.
+       1310  WinFast TV - NTSC + FM
+@@ -1058,7 +1090,11 @@
+       0024  5610 XpressMusic (Storage mode)
+       0025  5610 XpressMusic (PC Suite mode)
+       0028  5610 XpressMusic (Imaging mode)
++      002d  6120 Phone (Mass storage mode)
++      002e  6120 Phone (Media-Player mode)
++      002f  6120 Phone (PC-Suite mode)
+       0042  E51 (PC Suite mode)
++      0064  3109c GSM Phone
+       006d  N95 (Storage mode)
+       006e  N95 (Multimedia mode)
+       006f  N95 (Printing mode)
+@@ -1069,8 +1105,10 @@
+       00e4  E71 (Media transfer mode)
+       0103  ADL Flashing Engine AVALON Parent
+       0104  ADL Re-Flashing Engine Parent
+-      0105  E61 (Firmware update mode)
++      0105  Nokia Firmware Upgrade Mode
+       0106  ROM Parent
++      01c7  N900 (Storage Mode)
++      01c8  N900 (PC-Suite Mode)
+       0400  7600 Phone Parent
+       0401  6650 GSM Phone
+       0402  6255 Phone Parent
+@@ -1128,6 +1166,7 @@
+       04f9  6300 (PC Suite mode)
+       0508  E65 (PC Suite mode)
+       0600  Digital Pen SU-1B
++      0610  CS-15 (Internet Stick 3G modem)
+       0800  Connectivity Cable DKU-5
+       0801  Data Cable DKU-6
+       0802  CA-42 Phone Parent
+@@ -1156,7 +1195,10 @@
+       223a  8-in-1 Card Reader
+       2503  USB 2.0 Hub
+       2504  USB 2.0 Hub
++      2512  USB 2.0 Hub
++      2514  USB 2.0 Hub
+       2524  USB MultiSwitch Hub
++      2602  USB 2.0 Hub
+ 0425  Motorola Semiconductors HK, Ltd
+       0101  G-Tech Wireless Mouse & Keyboard
+       f102  G-Tech U+P Wireless Mouse
+@@ -1397,6 +1439,7 @@
+       b300  Firestorm Dual Power
+       b304  Firestorm Dual Power
+       b307  vibrating Upad
++      b30b  Wireless VibrationPad
+       b603  force feedback Wheel
+       b605  force feedback Racing Wheel
+       b700  Tacticalboard
+@@ -1405,6 +1448,7 @@
+       1234  Bluetooth Device
+       1428  Hub
+       1446  TUSB2040/2070 Hub
++      16a6  BM-USBD1 BlueRobin RF heart rate sensor receiver
+       2036  TUSB2036 Hub
+       2046  TUSB2046 Hub
+       2077  TUSB2077 Hub
+@@ -1421,6 +1465,7 @@
+       e004  TI-89 Titanium Calculator
+       e008  TI-84 Plus Silver Calculator
+       f430  MSP-FET430UIF JTAG Tool
++      f432  MSP-eZ430U USB Tool
+       ffff  Bluetooth Device
+ 0452  Mitsubishi Electronics America, Inc.
+       0021  HID Monitor Controls
+@@ -1489,7 +1534,12 @@
+       201f  ColorPage-Vivid 1200 XE
+       2020  ColorPage-Slim 1200 USB2
+       2021  ColorPage-SF600
++      3017  SPEED WHEEL 3 Vibration
++      3018  Wireless 2.4Ghz Game Pad
++      3019  10-Button USB Joystick with Vibration
++      301a  MaxFire G-12U Vibration
+       301d  Genius MaxFire MiniPad
++      400f  Genius TVGo DVB-T02Q MCE
+       6001  GF3000F Ethernet Adapter
+       7004  VideoCAM Express V2
+       7006  Dsc 1.3 Smart Camera Device
+@@ -1503,8 +1553,12 @@
+       701c  G-Shot G512 Still Camera
+       7020  Sim 321C
+       7025  Eye 311Q Camera Device
++      7029  Genius Look 320s (SN9C201 + HV7131R)
++      702f  Genius Slim 322
++      7045  Genius Look 1320 V2
+       704c  Genius i-Look 1321
+       705a  Asus USB2.0 Webcam
++      705c  Genius iSlim 1300AF
+ 0459  Adobe Systems, Inc.
+ 045a  SONICblue, Inc.
+       07da  Supra Express 56K modem
+@@ -1579,6 +1633,7 @@
+       0071  Wireless MultiMedia Keyboard (106/109)
+       0072  Wireless Natural MultiMedia Keyboard
+       0073  Wireless Natural MultiMedia Keyboard (106/109)
++      0079  IXI Ogo CT-17 handheld device
+       007a  10/100 USB NIC
+       007d  Notebook Optical Mouse
+       007e  Wireless Transceiver for Bluetooth
+@@ -1598,15 +1653,18 @@
+       00bd  Fingerprint Reader
+       00c2  Wireless Adapter MN-710
+       00c9  MTP Device
++      00cb  Basic Optical Mouse v2.0
+       00ce  Generic PPC Flash device
+       00d1  Optical Mouse with Tilt Wheel
+       00da  eHome Infrared Receiver
+       00db  Natural Ergonomic Keyboard 4000 V1.0
++      00dd  Comfort Curve Keyboard 2000 V1.0
+       00e1  Wireless Laser Mouse 6000 Reciever
+       00f4  LifeCam VX-6000 (SN9C20x + OV9650)
+       00f5  LifeCam VX-3000
+       00f7  LifeCam VX-1000
+       00f8  LifeCam NX-6000
++      00f9  Wireless Desktop Receiver 3.1
+       0202  Xbox Controller
+       0280  XBox Device
+       0284  Xbox DVD Playback Kit
+@@ -1622,6 +1680,7 @@
+       029c  Xbox360 HD-DVD Drive
+       029d  Xbox360 HD-DVD Drive
+       029e  Xbox360 HD-DVD Memory Unit
++      02a0  Xbox360 Big Button IR
+       0400  Windows Powered Pocket PC 2002
+       0401  Windows Powered Pocket PC 2002
+       0402  Windows Powered Pocket PC 2002
+@@ -1819,6 +1878,7 @@
+       0005  XX33 SmartCard Reader Keyboard
+       0010  SmartBoard XX44
+       0011  G83 (RS 6000) Keyboard
++      0021  CyMotion Expert Combo
+       0023  CyMotion Master Linux Keyboard
+       0027  CyMotion Master Solar Keyboard
+       002a  Wireless Mouse & Keyboard
+@@ -1840,6 +1900,14 @@
+       040f  Logitech/Storm PageScan
+       0430  Mic (Cordless)
+       0801  QuickCam Home
++      0802  Webcam C200
++      0804  Webcam C250
++      0805  Webcam C300
++      0807  Webcam B500
++      0808  Webcam C600
++      0809  Webcam Pro 9000
++      080a  Portable Webcam C905
++      080f  Webcam C120
+       0810  QuickCam Pro
+       0820  QuickCam VC
+       0830  QuickClip
+@@ -1928,6 +1996,7 @@
+       09a1  QuickCam Communicate MP/S5500
+       09a2  QuickCam Communicate Deluxe/S7500
+       09a4  QuickCam E 3500
++      09a5  Quickcam 3000 For Business
+       09a6  QuickCam Vision Pro
+       09b0  Acer OrbiCam
+       09b2  Fujitsu Webcam
+@@ -1937,6 +2006,7 @@
+       0a02  Premium Stereo USB Headset 350
+       0a03  Logitech USB Microphone
+       0a04  V20 portable speakers (USB powered)
++      0a13  Z-5 Speakers
+       0b02  BT Mini-Receiver (HID proxy mode)
+       8801  Video Camera
+       b305  BT Mini-Receiver
+@@ -1980,6 +2050,7 @@
+       c03f  UltraX Optical Mouse
+       c040  Corded Tilt-Wheel Mouse
+       c041  G5 Laser Mouse
++      c042  G3 Laser Mouse
+       c043  MX320/MX400 Laser Mouse
+       c044  LX3 Optical Mouse
+       c045  Optical Mouse
+@@ -1990,6 +2061,7 @@
+       c051  G3 (MX518) Optical Mouse
+       c053  Laser Mouse
+       c101  UltraX Media Remote
++      c122  Harmony 700 Remote
+       c201  WingMan Extreme Joystick with Throttle
+       c202  WingMan Formula
+       c207  WingMan Extreme Digital 3D
+@@ -2009,6 +2081,7 @@
+       c218  Logitech RumblePad 2 USB
+       c219  Cordless RumblePad 2
+       c21a  Precision Gamepad
++      c21c  G13 Advanced Gameboard
+       c221  G15 Keyboard / Keyboard
+       c222  G15 Keyboard / LCD
+       c223  G15 Keyboard / USB Hub
+@@ -2040,6 +2113,7 @@
+       c312  DeLuxe 250 Keyboard
+       c315  Classic New Touch Keyboard
+       c316  HID-Compliant Keyboard
++      c317  Wave Corded Keyboard
+       c318  Illuminated Keyboard
+       c401  TrackMan Marble Wheel
+       c402  Marble Mouse (2-button)
+@@ -2068,6 +2142,7 @@
+       c51a  MX Revolution/G7 Cordless Mouse
+       c51b  V220 Cordless Optical Mouse for Notebooks
+       c521  MX620 Laser Cordless Mouse
++      c526  MX Revolution Cordless Mouse
+       c625  3Dconnexion Space Pilot 3D Mouse
+       c626  3DConnexion Space Navigator 3D Mouse
+       c627  3DConnexion Space Explorer 3D Mouse
+@@ -2175,7 +2250,7 @@
+       203f  TSU9200 Remote Control
+       2046  TSU9800 Remote Control
+       205e  TSU9300 Remote Control
+-      262c  SPC230NC WebCam
++      262c  SPC230NC Webcam
+       485d  Senselock SenseIV v2.x
+ 0472  Chicony Electronics Co., Ltd
+       0065  PFU-65 Keyboard
+@@ -2406,9 +2481,11 @@
+       1032  DGX-305
+       1033  DGX-505
+       103c  MOTIF-RACK ES
++      1054  S90XS Keyboard/Music Synthesizer
+       2000  DGP-7
+       2001  DGP-5
+       3001  YST-MS55D USB Speaker
++      3003  YST-M45D USB Speaker
+       4000  NetVolante RTA54i Broadband&ISDN Router
+       4001  NetVolante RTW65b Broadband Wireless Router
+       4002  NetVolante RTW65i Broadband&ISDN Wireless Router
+@@ -2586,6 +2663,7 @@
+       0499  Patriot 780
+       049b  Strobe XP 100
+       04a0  7400
++      04ac  Xerox Travel Scanner 100
+ 04a8  Multivideo Labs, Inc.
+       0101  Hub
+       0303  Peripheral Switch
+@@ -2658,6 +2736,8 @@
+       10a8  iP6220D
+       10a9  iP6600D
+       10b6  PIXMA iP4300 Printer
++      10c2  PIXMA iP1800 Printer
++      10c4  Pixma iP4500 Printer
+       1404  W6400PG
+       1405  W8400PG
+       150f  BIJ2350 PCL
+@@ -2698,6 +2778,7 @@
+       1729  MX700 ser
+       172b  MP140 ser
+       1900  CanoScan LiDE 90
++      1905  CanoScan LiDE 200
+       2200  CanoScan LiDE 25
+       2201  CanoScan FB320U
+       2202  CanoScan FB620U
+@@ -2922,12 +3003,15 @@
+       3117  PowerShot A700
+       312d  Elura 100
+       3138  PowerShot A710 IS
++      3147  EOS 1Ds Mark III
+       3155  PowerShot A450
+       315a  PowerShot G9
+       315d  PowerShot A720
+       3176  PowerShot A590
+       317a  Powershot A470
+       3184  Digital IXUS 80 IS (PTP mode)
++      31bc  PowerShot D10
++      31c0  PowerShot SX200 IS
+       31ff  Digital IXUS 55
+ 04aa  DaeWoo Telecom, Ltd
+ 04ab  Chromatic Research
+@@ -2995,8 +3079,9 @@
+       040e  DSC D70s (ptp)
+       040f  D200 (mass storage mode)
+       0410  D200 (ptp)
+-      0422  D700 (ptp)
+       0413  D40 (mass storage mode)
++      0422  D700 (ptp)
++      0425  D300S
+       4000  Coolscan LS 40 ED
+       4001  LS 50 ED/Coolscan V ED
+       4002  Super Coolscan LS-5000 ED
+@@ -3049,8 +3134,10 @@
+       6830  CY7C68300A EZ-USB AT2 USB 2.0 to ATA/ATAPI
+       6831  Storage Adapter ISD-300LP (CY)
+       7417  Wireless PC Lock
++      8329  USB To keyboard/Mouse Converter
+       8613  CY7C68013 EZ-USB FX2 USB 2.0 Development Kit
+       8614  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
++      861f  Anysee E30 USB 2.0 DVB-T Receiver
+       cc04  Centor USB RACIA-ALVAR USB PORT
+       cc06  Centor-P RACIA-ALVAR USB PORT
+       d5d5  CY7C63x0x Zoltrix Z-Boxer GamePad
+@@ -3102,6 +3189,7 @@
+       012c  Perfection V350 (GT-F700)
+       012d  Perfection V10/V100 (GT-S600/F650)
+       012f  Perfection V350 (GT-F700)
++      0130  Perfection V500 (GT-X770)
+       0202  Receipt Printer M129C
+       0401  CP 800 Digital Camera
+       0402  PhotoPC 850z
+@@ -3217,6 +3305,10 @@
+       0937  WN-WAG/USL Wireless LAN Adapter
+       0938  WN-G54/USL Wireless LAN Adapter
+       093f  WNGDNUS2 802.11n
++      0944  WHG-AGDN/US Wireless LAN Adapter
++      0945  WN-GDN/US3 Wireless LAN Adapter
++      0947  WN-G150U Wireless LAN Adapter
++      0948  WN-G300U Wireless LAN Adapter
+       0a03  Serial USB-RSAQ1
+       0a07  USB2-iCN Adapter
+       0a08  USB2-iCN Adapter
+@@ -3369,7 +3461,8 @@
+       01d2  FinePix A800 Zoom (PTP)
+       01d4  FinePix F50fd (PTP)
+       01d5  FinePix F47 (PTP)
+-04cc  Philips Semiconductors
++      01fd  A160
++04cc  ST-Ericsson
+       1122  Hub
+       1521  USB 2.0 Hub
+       8116  Camera
+@@ -3581,6 +3674,7 @@
+       300c  ML-1210 Printer
+       300e  Laser Printer
+       3104  ML-3550N
++      3210  ML-5200A Laser Printer
+       3226  Laser Printer
+       3228  Laser Printer
+       322a  Laser Printer
+@@ -3604,6 +3698,7 @@
+       3260  CLP-510 Color Laser Printer
+       3268  ML-1610 Mono Laser Printer
+       326c  ML-2010P Mono Laser Printer
++      3276  ML-3050/ML-3051 Laser Printer
+       3409  SCX-4216F Scanner
+       340c  SCX-5x15 series
+       340d  SCX-6x20 series
+@@ -3676,6 +3771,7 @@
+       6632  MITs Sync
+       663f  SGH-E720/SGH-E840
+       6640  Usb Modem Enumerator
++      6795  S5230
+       7011  SEW-2003U Card
+       7021  Bluetooth Device
+       7061  eHome Infrared Receiver
+@@ -3741,7 +3837,10 @@
+       b027  Gateway USB 2.0 Webcam
+       b028  VGA UVC Webcam
+       b029  1.3M UVC Webcam
++      b044  Acer CrystalEye Webcam
++      b057  integrated USB webcam
+       b071  2.0M UVC Webcam / CNF7129
++      b091  Webcam
+       b107  CNF7070 Webcam
+ 04f3  Elan Microelectronics Corp.
+       0210  AM-400 Hama Optical Mouse
+@@ -3941,6 +4040,7 @@
+       2004  PT-2300/2310 p-Touch Laber Printer
+       2015  QL-500 P-touch label printer
+       2016  QL-550 P-touch label printer
++      201a  PT-18R P-touch label printer
+       2100  Card Reader Writer
+ 04fa  Dallas Semiconductor
+       2490  DS1490F 2-in-1 Fob, 1-Wire adapter
+@@ -4017,7 +4117,8 @@
+       0004  Direct Connect
+       0012  F8T012 Bluetooth Adapter
+       0013  F8T013 Bluetooth Adapter
+-      0050  F5D6050 802.11b Wireless Adapter
++      0017  B8T017 Bluetooth+EDR 2.1
++      0050  Atmel at76c503a [F5D6050 802.11b Wireless Adapter v2000]
+       0081  F8T001v2 Bluetooth
+       0083  Bluetooth Device
+       0084  F8T003v2 Bluetooth
+@@ -4057,12 +4158,17 @@
+       3201  F1DF102U/F1DG102U Flip KVM
+       4050  ZD1211B
+       5055  F5D5055
+-      6051  802.11b
+-      7050  F5D7050 ver 1000 WiFi
++      6051  802.11b Wireless Network Adapter
++      7050  F5D7050 Wireless G Adapter v1000/v2000
+       7051  F5D7051 54g USB Network Adapter
+-      705a  F5D7050A Wireless Adapter
++      705a  Ralink RT2573 [F5D7050 Wireless G Adapter v3000]
+       705b  Wireless G Adapter
+-      705c  802.11bg
++      705c  Zydas ZD1211B [F5D7050 Wireless G Adapter v4000]
++      705e  Realtek RTL8187B [F5D7050 Wireless G Adapter v5000]
++      8053  Ralink RT2870 [F5D8053 N Wireless USB Adapter v1000/v4000]
++      805e  Realtek RTL8192U [F5D8053 N Wireless USB Adapter v5000]
++      815c  Ralink RT2870 [F5D8053 N Wireless USB Adapter v3000]
++      815f  Realtek RTL8192SU [F5D8053 N Wireless USB Adapter v6000]
+       905b  F5D9050 ver 3 Wireless Adapter
+       905c  Wireless G Plus MIMO Network Adapter
+ 050e  Neon Technology, Inc.
+@@ -4175,7 +4281,8 @@
+ 0537  Inventec Corp.
+ 0538  Caldera International, Inc. (SCO)
+ 0539  Shyh Shiun Terminals Co., Ltd
+-053a  Preh Werke GmbH & Co. KG
++053a  PrehKeyTec GmbH
++      0b00  Hub
+ 053b  Global Village Communication
+ 053c  Institut of Microelectronic & Mechatronic Systems
+ 053d  Silicon Architect
+@@ -4277,6 +4384,7 @@
+       0056  MG Memory Stick Reader/Writer
+       0058  Clie PEG-N7x0C PalmOS PDA Mass Storage
+       0066  Clie PEG-N7x0C/PEG-T425 PalmOS PDA Serial
++      0067  CMR-PC3 Webcam
+       0069  Memorystick MSC-U03 Reader
+       006d  Clie PEG-T425 PDA Mass Storage
+       006f  Network Walkman (EV)
+@@ -4392,6 +4500,7 @@
+       02d1  DVD RW
+       02d2  PSP Slim
+       02ea  PlayStation 3 Memory Card Adaptor
++      02f9  DSC-H9
+       1000  Wireless Buzz! Receiver
+ 054d  Try Corp.
+ 054e  Proside Corp.
+@@ -4432,6 +4541,7 @@
+       2600  IDE Bridge
+       4000  DSB-650 10Mbps Ethernet [klsi]
+       7000  Hub
++      7820  UC-2322 2xSerial Ports [mos7820]
+ 0558  Truevision, Inc.
+ 0559  Cadence Design Systems, Inc.
+ 055a  Kenwood USA
+@@ -4539,6 +4649,7 @@
+       0010  Graphire
+       0011  Graphire 2
+       0013  Graphire 3 4x5
++      0017  Bamboo Fun
+       0020  Intuos 4x5
+       0021  Intuos 6x8
+       0022  Intuos 9x12
+@@ -4554,6 +4665,7 @@
+       0043  Intuos 2
+       0044  Intuos2 12x12
+       0045  Intuos2 12x18
++      00b2  Intuos3 9x12
+       00b5  Intuos3 6x11 (PTZ-631W)
+       0400  PenPartner 4x5
+       4850  PenPartner 6x8
+@@ -4702,10 +4814,12 @@
+       4602  Eumex 400 (WinXP/2000)
+       4701  AVM FRITZ!Box Fon ata
+       5401  Eumex 300 IP
+-      5601  AVM FRITZ!WLAN Stick
+-      6201  WLAN USB v1.1
+-      62ff  WLAN USB v1.1 [no firmware]
+-      8401  FRITZ!WLAN Stick N
++      5601  AVM Fritz!WLAN USB
++      6201  AVM Fritz!WLAN USB v1.1
++      62ff  AVM Fritz!WLAN USB (in CD-ROM-mode)
++      8401  AVM Fritz!WLAN USB N
++      8402  AVM Fritz!WLAN USB N 2.4
++      84ff  AVM Fritz!WLAN USB N (in CD-ROM-mode)
+ 057d  Shark Multimedia, Inc.
+ 057e  Nintendo Co., Ltd
+       0306  Wii Remote Controller RVL-003
+@@ -4806,14 +4920,64 @@
+       00c4  EDIROL M-16DX
+       00de  Fantom-G7
+ 0583  Padix Co., Ltd (Rockfire)
++      0001  4 Axis 12 button +POV
++      0002  4 Axis 12 button +POV
+       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
++      205f  PSX/USB converter
++      206f  USB, 2-axis 8-button gamepad
+       3050  QF-305u Gamepad
++      3379  Rockfire X-Force
++      337f  Rockfire USB RacingStar Vibra
++      509f  USB,4-Axis,12-Button with POV
++      5259  Rockfire USB SkyShuttle Vibra
++      525f  USB Vibration Pad
++      5308  USB Wireless VibrationPad
++      5359  Rockfire USB SkyShuttle Pro
++      535f  USB,real VibrationPad
++      5659  Rockfire USB SkyShuttle Vibra
++      565f  USB VibrationPad
++      6009  Revenger
++      600f  USB,GameBoard II
++      6258  USB, 4-axis, 6-button joystick w/view finder
++      6889  Windstorm Pro
+       688f  QF-688uv Windstorm Pro Joystick
+       7070  QF-707u Bazooka Joystick
++      a015  4-Axis,16-Button with POV
++      a019  USB, Vibration ,4-axis, 8-button joystick w/view finder
++      a020  USB,4-Axis,10-Button with POV
++      a021  USB,4-Axis,12-Button with POV
++      a022  USB,4-Axis,14-Button with POV
++      a023  USB,4-Axis,16-Button with POV
++      a024  4axis,12button vibrition audio gamepad
++      a025  4axis,12button vibrition audio gamepad
++      a130  USB Wireless 2.4GHz Gamepad
++      a131  USB Wireless 2.4GHz Joystick
++      a132  USB Wireless 2.4GHz Wheelpad
++      a133  USB Wireless 2.4GHz Wheel&Gamepad
++      a202  ForceFeedbackWheel
++      a209  MetalStrike FF
++      b000  USB,4-Axis,12-Button with POV
++      b001  USB,4-Axis,12-Button with POV
++      b002  Vibration,12-Button USB Wheel
++      b005  USB,12-Button Wheel
++      b008  USB Wireless 2.4GHz Wheel
++      b009  USB,12-Button  Wheel
++      b00a  PSX/USB converter
++      b00b  PSX/USB converter
++      b00c  PSX/USB converter
++      b00d  PSX/USB converter
++      b00e  4-Axis,12-Button with POV
++      b00f  USB,5-Axis,10-Button with POV
++      b010  MetalStrike Pro
++      b012  Wireless MetalStrike
++      b013  USB,Wiress  2.4GHZ Joystick
++      b016  USB,5-Axis,10-Button with POV
++      b018  TW6 Wheel
++      ff60  USB Wireless VibrationPad
+ 0584  RATOC System, Inc.
+       0008  Fujifilm MemoryCard ReaderWriter
+       b000  REX-USB60
+@@ -4834,14 +4998,16 @@
+       000e  Digital Camera
+       000f  Digital Camera
+ 0586  ZyXEL Communications Corp.
++      0025  802.11b/g/n USB Wireless Network Adapter
+       0102  omni.net II ISDN TA
+       1000  Omni NET Modem / ISDN TA
+       1500  Omni 56K Plus
+       2011  Scorpion-980N keyboard
+       3304  LAN Modem
++      3309  ADSL Modem Prestige 600 series
+       330a  ADSL Modem Interface
+       330e  USB Broadband ADSL Modem Rev 1.10
+-      3400  802.11b
++      3400  ZyAIR B-220 IEEE 802.11b Adapter
+       3401  ZyAIR G-220 802.11bg
+       3402  ZyAIR G-220F 802.11bg
+       3407  G-200 v2 802.11bg
+@@ -4853,6 +5019,7 @@
+       3413  ZyAIR AG-225H v2 802.11bg
+       3415  G-210H 802.11g Wireless Adapter
+       3416  NWD-210N 802.11b/g/n-draft wireless adapter
++      341a  NWD-270N Wireless N-lite USB Adapter
+ 0587  America Kotobuki Electronics Industries, Inc.
+ 0588  Sapien Design
+ 0589  Victron
+@@ -4887,10 +5054,12 @@
+       5492  Hub
+       6232  Hi-Speed 16-in-1 Flash Card Reader/Writer
+       6254  USB Hub
++      6331  SD/MMC/MS Card Reader
+       6335  SD/MMC Card Reader
+       6360  Multimedia Card Reader
+       6361  Multimedia Card Reader
+       6362  Hi-Speed 21-in-1 Flash Card Reader/Writer (Internal/External)
++      6366  Multi Flash Reader
+       6377  Multimedia Card Reader
+       6386  Memory Card
+       6387  Transcend JetFlash Flash Drive
+@@ -4910,6 +5079,7 @@
+       9368  Multimedia Card Reader
+       9380  Flash Drive
+       9382  Acer/Sweex Flash drive
++      9384  qdi U2Disk T209M
+       9410  Keyboard
+       9472  Keyboard Hub
+       9510  ChunghwaTL USB02 Smartcard Reader
+@@ -4968,6 +5138,7 @@
+       017c  HDD/1394B
+       0251  Optical
+       0252  Optical
++      0470  Prestige Portable Hard Drive
+       1052  DVD+RW External Drive
+ 059c  A-Trend Technology Co., Ltd
+ 059d  Advanced Input Devices
+@@ -5007,6 +5178,7 @@
+       1550  VEHO Filmscanner
+       2640  OV2640 Webcam
+       2643  Monitor Webcam
++      264b  Monitor Webcam
+       2800  SuperCAM
+       4519  Webcam Classic
+       7670  OV7670 Webcam
+@@ -5075,20 +5247,26 @@
+       1209  iPod Video
+       120a  iPod Nano
+       1240  iPod Nano 2.Gen (DFU mode)
++      1255  iPod Nano 4.Gen (DFU mode)
+       1260  iPod Nano 2.Gen
+       1261  iPod Classic
+       1262  iPod Nano 3.Gen
++      1263  iPod Nano 4.Gen
++      1265  iPod Nano 5.Gen
+       1290  iPhone
+       1291  iPod Touch 1.Gen
+       1292  iPhone 3G
++      1293  iPod Touch 2.Gen
++      1294  iPhone 3GS
+       1300  iPod Shuffle
+       1301  iPod Shuffle 2.Gen
+       8202  HCF V.90 Data/Fax Modem
+       8203  Bluetooth HCI
+-      8204  Bluetooth HCI [Bluetooth 2.0 + EDR, build-in]
++      8204  Bluetooth HCI [Bluetooth 2.0 + EDR, built-in]
+       8205  Bluetooth HCI
+       8206  Bluetooth HCI
+-      8240  IR Receiver [build-in]
++      8240  IR Receiver [built-in]
++      8242  IR Receiver [built-in]
+       8300  Built-in iSight (no firmware loaded)
+       8501  Built-in iSight [Micron]
+       8502  Built-in iSight
+@@ -5397,6 +5575,7 @@
+       a531  JumpDrive Secure II
+       a560  JumpDrive FireFly
+       a701  JumpDrive FireFly
++      a790  JumpDrive 2GB
+       b002  USB CF Reader
+       b018  Multi-Card Reader
+ 05dd  Delta Electronics, Inc.
+@@ -5437,11 +5616,12 @@
+       0406  Hub
+       0501  GL620USB Host-Host interface
+       0502  GL620USB-A GeneLink USB-USB Bridge
++      0503  Webcam
+       0504  HID Keyboard Filter
+       0604  USB 1.1 Hub
+       0605  USB 2.0 Hub [ednet]
+       0606  USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub
+-      0608  USB-2.0 4-Port HUB
++      0608  USB-2.0 4-Port HUB [Hama]
+       0660  USB 2.0 Hub
+       0700  SIIG US2256 CompactFlash Card Reader
+       0701  USB 2.0 IDE Adapter
+@@ -5461,6 +5641,7 @@
+       0711  Card Reader
+       0712  Delkin Mass Storage Device
+       0715  USB 2.0 microSD Reader
++      0723  USB 2.0 SD/MMC/MS Flash Card Reader
+       0760  USB 2.0 Card Reader/Writer
+       0761  Genesys Mass Storage Device
+       0780  USBFS DFU Adapter
+@@ -5643,8 +5824,10 @@
+ 0642  VIA Medical Corp.
+ 0644  TEAC Corp.
+       0000  Floppy
++      0200  All-In-One Multi-Card Reader CA200/B/S
+       1000  CD-ROM Drive
+       800d  TASCAM Portastudio DP-01FX
++      800e  TASCAM US-122L
+       d001  CD-R/RW Unit
+       d002  CD-R/RW Unit
+       d010  CD-RW/DVD Unit
+@@ -5667,7 +5850,9 @@
+ 064e  Suyin Corp.
+       a100  Acer OrbiCam
+       a101  Acer CrystalEye Webcam
++      a102  Lenovo Webcam
+       a110  HP Webcam
++      c107  HP webcam [dv6-1190en]
+       d101  Acer CrystalEye Webcam
+ 064f  WIBU-Systems AG
+       0bd7  BOX/U
+@@ -5823,6 +6008,9 @@
+       9000  MP3 Player
+       9001  MP3 Player
+       9002  MP3 Player
++0670  Sequel Imaging
++      0001  Calibrator
++      0005  Enable Cable
+ 0672  Labtec, Inc.
+       1041  LCS1040 Speaker System
+       5000  SpaceBall 4000 FLX
+@@ -5833,6 +6021,7 @@
+       0110  Vigor 128 ISDN TA
+       0550  Vigor550
+       1688  miniVigor 128 ISDN TA
++      6694  USB ISDN TA
+ 0676  Teles AG
+ 0677  Aiwa Co., Ltd
+       07d5  TM-ED1285(USB)
+@@ -5880,7 +6069,8 @@
+       e240  Speedstream Ethernet Adapter E240
+       e540  Speedstream Ethernet Adapter E240
+ 067d  Hohner Corp.
+-067e  Intermec
++067e  Intermec Technologies Corp.
++      0801  SR30 Barcode Scanner
+       1001  Mobile Computer
+ 067f  Virata, Ltd
+       4552  DSL-200 ADSL Modem
+@@ -5956,6 +6146,7 @@
+       000a  SDCard/MMC Reader/Writer
+ 0694  Lego Group
+       0001  Mindstorms Tower
++      0002  Mindstorms NXT
+ 0698  Chuntex (CTX)
+       1786  1300ex Monitor
+       2003  CTX M730V built in Camera
+@@ -5995,6 +6186,7 @@
+       0010  Tornado Speakerphone FaxModem 56.0
+       0011  Tornado Speakerphone FaxModem 56.0
+       1000  ADT VvBus for CopperJet
++      1004  CopperJet 821 RouterPlus
+ 06a2  Topro Technology, Inc.
+       0033  USB Mouse
+ 06a3  Saitek PLC
+@@ -6042,6 +6234,7 @@
+       803f  X36 Flight Controller
+       806f  P2000 Tilt Pad
+       80c0  Pro Gamer Command Unit
++      80c1  Cyborg Command Pad Unit
+       a502  Gaming Mouse
+       ff04  R440 Force Wheel
+       ff0c  Cyborg Force Rumble Pad
+@@ -6355,6 +6548,7 @@
+ 06f7  Wailly Technology Ltd
+       0003  USB->Din 4 Adaptor
+ 06f8  Guillemot Corp.
++      3002  Hercules Blog Webcam
+       3004  Hercules Classic Silver
+       3005  Hercules Dualpix Exchange
+       3007  Hercules Dualpix Chat and Show
+@@ -6407,6 +6601,7 @@
+       0300  BAY-3U1S1P Parallel Port
+       0302  Parallel Port
+       0900  SVGA Adapter
++      5001  Trigger UV-002BD[Startech USBVGAE]
+ 0713  Interval Research Corp.
+ 0714  NewMotion, Inc.
+       0003  ADB to USB convertor
+@@ -6481,7 +6676,7 @@
+ 0735  Asuscom Network
+       2100  ISDN Adapter
+       2101  ISDN Adapter
+-      6694  ISDN Adapter
++      6694  ISDNlink 128K
+       c541  ISDN TA 280
+ 0736  Lorom Industrial Co., Ltd
+ 0738  Mad Catz, Inc.
+@@ -6498,12 +6693,6 @@
+       4588  XBox Device
+ 073a  Chaplet Systems, Inc.
+ 073b  Suncom Technologies
+-073d  Eutron S.p.a.
+-      0005  Crypto Token
+-      0007  CryptoIdentity CCID
+-      0025  SmartKey 3
+-      0c00  Pocket Reader
+-      0d00  StarSign Bio Token 3.0 EU
+ 073c  Industrial Electronic Engineers, Inc.
+       0305  Pole Display (PC305-3415  2 x 20 Line Display)
+       0322  Pole Display (PC322-3415  2 x 20 Line Display)
+@@ -6514,6 +6703,12 @@
+       0505  Pole Display (SPC505-3415 2 x 20 Line Display)
+       0522  Pole Display (SPC522-3415 2 x 20 Line Display)
+       0624  Pole Display (SP324-3415  4 x 20 Line Display)
++073d  Eutron S.p.a.
++      0005  Crypto Token
++      0007  CryptoIdentity CCID
++      0025  SmartKey 3
++      0c00  Pocket Reader
++      0d00  StarSign Bio Token 3.0 EU
+ 073e  NEC, Inc.
+       0301  Game Pad
+ 0745  Syntech Information Co., Ltd
+@@ -6578,6 +6773,7 @@
+       200d  M-Audio OmniStudio
+       200f  M-Audio MobilePre
+       2010  M-Audio Fast Track
++      2012  M-Audio Fast Track Pro
+       2013  M-Audio JamLab
+       2015  M-Audio RunTime DFU
+       2016  M-Audio RunTime DFU
+@@ -6633,6 +6829,9 @@
+ 076e  Kuan Tech Enterprise Co., Ltd
+ 076f  Jhen Vei Electronic Co., Ltd
+ 0770  Welch Allyn, Inc - Medical Division
++0771  Observator Instruments BV
++      4455  OMC45III
++      ae0f  OMC45III
+ 0774  AmTRAN Technology Co., Ltd
+ 0775  Longshine Electronics Corp.
+ 0776  Inalways Corp.
+@@ -6676,7 +6875,8 @@
+       5150  SDCZ2 Cruzer Mini Flash Drive (thin)
+       5151  Cruzer Micro Flash Drive
+       5153  Cruzer Flash Drive
+-      5406  Cruzer Micro 1/2/4GB Flash Drive
++      5402  U3 Cruzer Micro
++      5406  Cruzer Micro U3
+       5408  Cruzer Titanium U3
+       6100  Ultra II SD Plus 2GB
+       7100  Cruzer Mini
+@@ -6700,6 +6900,8 @@
+       7431  Sansa M200v4 (msc)
+       7432  Sansa Clip (mtp)
+       7433  Sansa Clip (msc)
++      7434  Sansa Clip V2 (mtp)
++      7435  Sansa Clip V2 (msc)
+       7450  Sansa C250
+       7451  Sansa C240
+       7460  Sansa Express
+@@ -6708,6 +6910,7 @@
+       74b1  Sansa View
+       74c0  Sansa Fuze (mtp)
+       74c1  Sansa Fuze (msc)
++      74d0  Sansa Clip+
+       8181  Pen Flash
+       8183  Hi-Speed Mass Storage Device
+       8185  SDCZ2 Cruzer Mini Flash Drive (older, thick)
+@@ -6749,6 +6952,9 @@
+       0064  LDR-R Device
+       00b3  DVD Multi-plus unit LDR-H443U2
+       010c  Realtek RTL8187 Wireless 802.11g 54Mbps Network Adapter
++      0162  LAN-WN22/U2 Wireless LAN Adapter
++      0163  LAN-WN12/U2 Wireless LAN Adapter
++      0164  LAN-W150/U2M Wireless LAN Adapter
+ 078b  Happ Controls, Inc.
+       0010  Driving UGCI
+       0020  Flying UGCI
+@@ -6777,18 +6983,12 @@
+ 079b  Sagem
+       0027  USB-Serial Controller
+       002f  Mobile
+-#             0  Mobile Pseudo CDC Modem
+-#             1  Mobile Pseudo CDC Trace
+-#             2  Mobile Pseudo CDC Chimera
+       0030  Mobile Communication Device
+       0042  Mobile
+-#             2  Mobile Video Pseudo CDC Trace
+       004a  XG-760A 802.11bg
+       004b  Wi-Fi 11g adapter
+       0056  Agfa AP1100 Photo Printer
+       005d  Mobile Mass Storage
+-#             1  Mobile Mass Storage Pseudo CDC Trace
+-#             2  Mobile Mass Storage Pseudo CDC Chimera
+       0062  XG-76NA 802.11bg
+ 079d  Alfadata Computer Corp.
+       0201  GamePort Adapter
+@@ -6813,12 +7013,15 @@
+       0017  FEther USB2-TX
+       001a  ULUSB-11 Key
+       002f  CG-WLUSB2GNL
++      003c  CG-WLUSB2GNL
++      003f  CG-WLUSB300AGN
+       7613  Stick-11 V2 802.11b Adapter
+       9601  FEther USB-TXC
+ 07ab  Freecom Technologies
+       fc01  IDE bridge
+       fc02  Cable II USB-2
+       fc03  USB2-IDE IDE bridge
++      fcd6  Freecom HD Classic
+       fcf8  Freecom Classic SL Network Drive
+ 07af  Microtech
+       0004  SCSI-DB25 SCSI Bridge [shuttle]
+@@ -6869,7 +7072,10 @@
+       0410  Scanner
+       0412  Scanner
+       0800  OpticPro ST48 Scanner
++      0906  OpticBook 3600 Scanner
+       0c03  OpticPro ST64+ Scanner
++      0c26  OpticBook 4600 Scanner
++      0c2b  Mobile Office D428 Scanner
+ 07b4  Olympus Optical Co., Ltd
+       0100  Camedia C-2100/C-3000 Ultra Zoom Camera
+       0102  Camedia E-10/C-220/C-50 Camera
+@@ -6897,6 +7103,11 @@
+       1201  IEEE 802.11b Adapter
+       200c  XX2
+       2573  Wireless LAN Card
++      2770  802.11n/b/g Mini Wireless LAN USB2.0 Adapter
++      2870  802.11n/b/g Wireless LAN USB2.0 Adapter
++      3070  802.11n/b/g Mini Wireless LAN USB2.0 Adapter
++      3071  802.11n/b/g Mini Wireless LAN USB2.0 Adapter
++      3072  802.11n/b/g Mini Wireless LAN USB2.0 Adapter
+       4000  DU-E10 Ethernet [klsi]
+       4002  DU-E100 Ethernet [pegasus]
+       4003  1/10/100 Ethernet Adapter
+@@ -6908,8 +7119,8 @@
+       4102  USB 1.1 10/100M Fast Ethernet Adapter
+       4104  XX9
+       420a  UF200 Ethernet
+-      6001  802.11bg
+       5301  GW-US54ZGL 802.11bg
++      6001  802.11bg
+       a001  Wireless Network Adapter
+       abc1  DU-E10 Ethernet [pegasus]
+       b000  BWU613
+@@ -6991,6 +7202,7 @@
+       0002  AVerTV PVR USB/EZMaker Pro Device
+       0026  AVerTV
+       1228  MPEG-2 Capture Device (M038)
++      a309  HP DVB-T TV Tuner [HP dv6-1190en]
+       e880  MPEG-2 Capture Device (E880)
+       e882  MPEG-2 Capture Device (E882)
+ 07cb  Kingmax Technology, Inc.
+@@ -7097,16 +7309,25 @@
+       13f2  DSL-502G Router
+       3a07  WUA-2340 Adapter
+       3a08  predator Bootloader Download
++      3a09  DWA-160 Xtreme N Dual Band USB Adapter(rev.A2) [Atheros AR9001U-(2)NG]
+       3a0d  DWA-120 Wireless 108G Adapter
+       3b01  AirPlus G DWL-G122 Wireless Adapter
+       3b10  RangeBooster N Adapter
+       3b11  Wireless N Adapter DWA-130
+-      3c10  DWA 160A 802.11n
+       3c03  DWL-G122 802.11g Adapter [ralink rt73]
+       3c04  WUA-1340
+       3c05  EH103 Wireless G Adapter
+       3c07  Wireless G DWA-110 Adapter
+       3c09  DWA-140 802.11n Adapter [ralink rt2870]
++      3c0a  DWA-140 RangeBooster N USB Adapter(rev.B2)
++      3c0b  DWA-110 Wireless G USB Adapter(rev.B)
++      3c0d  DWA-125 Wireless 150 USB Adapter
++      3c0e  WUA-2340 USB Adapter(rev.B)
++      3c0f  AirPlus G DWL-G122 Wireless Adapter(rev.E)
++      3c10  DWA-160 Xtreme N Dual Band USB Adapter(rev.A) [Atheros AR9001U-(2)NG]
++      3c11  DWA-160 Xtreme N Dual Band USB Adapter(rev.B) [Ralink RT2870]
++      3c13  DWA-130 Wireless N USB Adapter(rev.B)
++      3c15  DWA-140 Wireless N USB Adapter(rev.B3)
+       5100  Remote NDIS Device
+       f101  DBT-122 Bluetooth
+       fc01  DBT-120 Bluetooth Adapter
+@@ -7137,6 +7358,8 @@
+       0002  Cash Drawer I/F
+ 07ef  STSN
+       0001  Internet Access Device
++07f2  Microcomputer Applications, Inc.
++      0001  KEYLOK II
+ 07f6  Circuit Assembly Corp.
+ 07f7  Century Corp.
+       0005  ScanLogic/Century Corporation uATA
+@@ -7235,7 +7458,7 @@
+       0053  Handheld
+       0054  Handheld
+       0060  Tungsten C/E/T/T2/T3 / Zire 71
+-      0061  Lifedrive / Treo 650/680 / Tunsten E2/T5/TX / Zire 21/31/72 / Z22
++      0061  Lifedrive / Treo 650/680 / Tunsten E2/T5/TX / Centro / Zire 21/31/72 / Z22
+       0062  Handheld
+       0063  Handheld
+       0064  Handheld
+@@ -7280,7 +7503,11 @@
+       5501  Wireless Adapter 11g
+       6500  Cable Modem
+       6618  802.11n Wireless Adapter
+-      7522  802.11N Wireless Adapter
++      7511  Arcadyan 802.11N Wireless Adapter
++      7512  Arcadyan 802.11N Wireless Adapter
++      7522  Arcadyan 802.11N Wireless Adapter
++      8522  Arcadyan 802.11N Wireless Adapter
++      a512  Arcadyan 802.11N Wireless Adapter
+       a618  SMC EZ Connect N Draft 11n Wireless Adapter
+       b004  CPWUE001 USB/Ethernet Adapter
+       b522  EZ Connect N Draft 11n Wireless USB2.0 Adapter
+@@ -7288,6 +7515,7 @@
+       c003  802.11b Wireless Adapter
+       c501  Zoom Wireless-G
+       c561  802.11a/g Wireless Adapter
++      d522  Speedport W 102 Stick IEEE 802.11n USB 2.0 Adapter
+       e501  ZD1211B
+       e506  WUS-201 802.11bg
+       f501  802.11g Wireless Adapter
+@@ -7310,15 +7538,17 @@
+       4210  WG121(v2) 54 Mbps Wireless [Intersil Prism GT]
+       4220  WG111(v1) 54 Mbps Wireless [Intersil Prism54 Intersil 3886]
+       4230  MA111(v2) 802.11b Wireless [SIS SIS 162]
+-      4240  WG111v2 54 Mbps Wireless [RealTek RTL8187L]
++      4240  WG111(v1) rev 2 54 Mbps Wireless [Intersil Prism54 Intersil 3886]
+       4260  WG111v3 54 Mbps Wireless [realtek RTL8187B]
+       4300  WG111U Double 108 Mbps Wireless [Atheros AR5004X / AR5005UX]
+       4301  WG111U (no firmware) Double 108 Mbps Wireless [Atheros AR5004X / AR5005UX]
+       6a00  WG111v2 54 Mbps Wireless [RealTek RTL8187L]
+       7100  WN121T RangeMax Next Wireless-N [Marvell TopDog]
+       9000  WN111(v1) RangeMax Next Wireless [Marvell TopDog]
+-      9001  WN111 v2 802.11n
+-      9010  WNDA3100 802.11n
++      9001  WN111(v2) RangeMax Next Wireless [Atheros AR9001U-(2)NG]
++      9010  WNDA3100(v1) 802.11n [Atheros AR9001U-(2)NG]
++      9011  WNDA3100(v2) 802.11n
++      9040  WNA1000 Wireless-N 150 [Atheros AR9001U-(2)NG]
+       a001  PA101 10 Mbps HPNA Home Phoneline RJ-1
+ 084d  Minton Optic Industry Co., Inc.
+       0001  Jenoptik JD800i
+@@ -7336,7 +7566,7 @@
+ 0850  Fast Point Technologies, Inc.
+ 0851  Macronix International Co., Ltd
+       1542  SiPix Blink
+-      1543  Maxell WS30 Slim Digital Camera
++      1543  Maxell WS30 Slim Digital Camera, or Pandigital PI8004W01 digital photo frame
+       a168  MXIC
+ 0852  CSEM
+ 0853  Topre Corporation
+@@ -7440,8 +7670,12 @@
+ 0887  Hannstar Electronics Corp.
+ 088b  MassWorks, Inc.
+       4944  MassWorks ID-75 TouchScreen
++088c  Swecoin AB
++      2030  Ticket Printer TTP 2030
+ 0892  DioGraphy, Inc.
+       0101  Smartdio Reader/Writer
++0897  Lauterbach
++      0002  Power Debug/Power Debug II
+ 089c  United Technologies Research Cntr.
+ 089d  Icron Technologies Corp.
+ 089e  NST Co., Ltd
+@@ -7456,6 +7690,7 @@
+ 08bb  Texas Instruments Japan
+       2702  Speakers
+       2900  PCM2900 Audio Codec
++      2901  PCM2901 Audio Codec
+       2904  PCM2904 Audio Codec
+ 08bd  Citizen Watch Co., Ltd
+       1100  X1-USB Floppy
+@@ -7517,6 +7752,10 @@
+ 08d3  Virtual Ink
+ 08d4  Fujitsu Siemens Computers
+       0009  SCR SmartCard Reader
++08d8  IXXAT Automation GmbH
++      0002  USB-to-CAN compact
++      0003  USB-to-CAN II
++      0100  USB-to-CAN
+ 08d9  Increment P Corp.
+ 08dd  Billionton Systems, Inc.
+       0112  Wireless LAN Adapter
+@@ -7591,6 +7830,7 @@
+       0030  TravelDrive
+       0822  TravelDrive 2C
+       0832  Hi-Speed Mass Storage Device
++      0834  M-Disk 220
+       0998  Kingston Data Traveler2.0 Disk Driver
+       0999  Kingston Data Traveler2.0 Disk Driver
+       1000  TravelDrive 2C
+@@ -7645,6 +7885,7 @@
+       258d  AES2501
+       258e  AES2501
+       258f  AES2501
++      2810  AES2810
+       3400  AES3400 TruePrint Sensor
+       3401  AES3400 Sensor
+       3402  AES3400 Sensor
+@@ -7696,6 +7937,8 @@
+       0001  Hard Drive Adapter (TPP)
+       0002  SigmaDrive Adapter (TPP)
+ 0906  Faraday Technology Corp.
++0908  ShenZhen SANZHAI Technology Co.,Ltd
++      2701  Spy Pen VGA
+ 0909  Audio-Technica Corp.
+ 090a  Trumpion Microelectronics, Inc.
+       1001  T33520 Flash Card Controller
+@@ -7706,6 +7949,7 @@
+ 090c  Feiya Technology Corp.
+       1000  Flash Drive
+       1132  5-in-1 Card Reader
++      6000  SD/SDHC Card Reader (SG365 / FlexiDrive XC+)
+       b371  Silicon Motion SM371 Camera
+ 090d  Multiport Computer Vertriebs GmbH
+ 090e  Shining Technology, Inc.
+@@ -7752,7 +7996,9 @@
+       0004  iQue 3600
+       0200  Data Card Programmer (install)
+       1200  Data Card Programmer
++      21a5  etrex Cx (msc)
+       2295  Colorado 300
++      2353  Nüvi 205T
+ 0920  Echelon Co.
+       7500  Network Interface
+ 0921  GoHubs, Inc.
+@@ -7811,6 +8057,7 @@
+       070a  Pocket PC e400 Series
+       070b  Pocket PC e800 Series
+       0b05  PX1220E-1G25 External hard drive
++      0b09  PX1396E-3T01 External hard drive
+       1300  Wireless Broadband (CDMA EV-DO) SM-Bus Minicard Status Port
+       1301  Wireless Broadband (CDMA EV-DO) Minicard Status Port
+       1302  Wireless Broadband (3G HSDPA) SM-Bus Minicard Status Port
+@@ -7862,11 +8109,15 @@
+       0300  VideoAdvantage
+       0302  Syntek DC-112X
+       0320  VideoAdvantage
+-      1100  Video Enhamcement Device
++      0482  USB2.0 TVBOX
++      1100  DC-1100 Video Enhamcement Device
+       1112  Veo Web Camera
+       a311  Video Enhancement Device
+ 0933  Quantum Corp.
+ 0934  Netcom Systems
++0936  NuTesla
++      0030  Composite Device, Mass Storage Device (Flash Drive) amd HID
++      003c  Rhythmedics HID Bootloader
+ 0939  Lumberg, Inc.
+ 093a  Pixart Imaging, Inc.
+       0007  CMOS 100K-R Rev. 1.90
+@@ -7886,6 +8137,7 @@
+       2608  PAC7311 Trust WB-3300p
+       260e  PAC7311 Gigaware VGA PC Camera:Trust WB-3350p:SIGMA cam 2350
+       260f  PAC7311 SnakeCam
++      2621  PAC731x Trust Webcam
+       2624  Webcam
+ 093b  Plextor Corp.
+       0010  Storage Adapter
+@@ -7916,6 +8168,7 @@
+       0304  USB Pro (16/48)
+       1105  USB One
+ 094b  Linkup Systems Corp.
++      0001  neonode N2
+ 094d  Cable Television Laboratories
+ 094f  Yano
+       0101  U640MO-03
+@@ -7929,6 +8182,8 @@
+       1603  DataTraveler 1GB/2GB Pen Drive
+       1607  DataTraveler 100
+       1613  DataTraveler 8GB Pen Drive
++      1625  DataTraveler 101 II
++      162a  DataTraveler 112 4GB Pen Drive
+ 0954  RPM Systems Corp.
+ 0955  NVidia Corp.
+ 0956  BSquare Corp.
+@@ -7950,6 +8205,7 @@
+ 096e  Feitian Technologies, Inc.
+       0802  ePass2000 (G&D STARCOS SPK 2.4)
+ 0971  Gretag-Macbeth AG
++      2005  Huey
+ 0973  Schlumberger
+       0001  e-gate Smart Card
+ 0974  Datagraphix, a business unit of Anacomp
+@@ -7982,6 +8238,7 @@
+ 0996  Integrated Telecom Express, Inc.
+ 099a  Zippy Technology Corp.
+       610c  EL-610 Super Mini Electron luminescent Keyboard
++      7160  Hyper Slim Keyboard
+ 09a3  PairGain Technologies
+ 09a4  Contech Research, Inc.
+ 09a5  VCON Telecommunications
+@@ -8235,8 +8492,14 @@
+       2123  Bluetooth dongle
+       2130  2045 Bluetooth 2.0 USB-UHE Device with trace filter
+       2131  2045 Bluetooth 2.0 Device with trace filter
++      2145  Bluetooth with Enhanced Data Rate II
++      2150  BCM2046 Bluetooth Device
+       4500  BCM2046B1 USB 2.0 Hub (part of BCM2046 Bluetooth)
++      4502  Keyboard (Boot Interface Subclass)
+       5800  BCM5880 Secure Applications Processor
++      5801  BCM5880 Secure Applications Processor with fingerprint swipe sensor
++      5802  BCM5880 Secure Applications Processor with fingerprint touch sensor
++      5803  BCM5880 Secure Applications Processor with secure keyboard
+       6300  Pirelli Remote NDIS Device
+ 0a5d  Diatrend Corp.
+ 0a5f  Zebra
+@@ -8394,9 +8657,10 @@
+ 0acc  Koga Electronics Co.
+ 0acd  ID Tech
+       0401  ID TECH Spectrum III Hybrid Smartcard Reader
++      0630  ID TECH Spectrum III Mag-Only Insert Reader (SPT3-355 Series) USB-CDC
+ 0ace  ZyDAS
+       1201  802.11b
+-      1211  802.11bg
++      1211  ZEW 2501 802.11bg Wireless Adapter
+       1215  WLA-54L 802.11bg
+       1221  ZD1221 802.11n
+       1602  ZyXEL Omni FaxModem 56K
+@@ -8445,6 +8709,9 @@
+       6000  GlobeTrotter 3G datacard
+       6300  GT 3G Quad UMTS/GPRS Card
+       6600  GlobeTrotter 3G+ datacard
++      6711  GlobeTrotter Express 7.2 v2
++      6971  Globetrotter HSDPA Modem
++      7501  Globetrotter HSUPA Modem (icon 411 aka "Vodafone K3760")
+ 0af6  Silver I Co., Ltd
+ 0af7  B2C2, Inc.
+       0101  Digital TV USB Receiver (DVB-S/T/C / ATSC)
+@@ -8469,21 +8736,31 @@
+       1716  Bluetooth Device
+       171b  A9T wireless 802.11bg
+       171c  802.11b/g Wireless Network Adapter
++      171f  My Cinema U3000 Mini [DiBcom DiB0700]
+       1723  WL-167G v2 802.11g Adapter [ralink]
+       1724  RT2573
+       1726  Laptop OLED Display
+       172a  ASUS 802.11n Network Adapter
+       172b  802.11n Network Adapter
+-      1731  ASUS 802.11n Network Adapter
++      1731  802.11n Network Adapter
+       1732  802.11n Network Adapter
+       1734  ASUS AF-200
+       173c  BT-183 Bluetooth 2.0
+       1742  802.11n Network Adapter
++      1751  BT-253 Bluetooth Adapter
++      1760  802.11n Network Adapter
++      1761  802.11n Network Adapter
++      1784  802.11n Network Adapter
+       6101  Cable Modem
+       620a  Remote NDIS Device
+       b700  Broadcom Bluetooth 2.1
++0b0b  Datamax-O'Neil
++      106e  Datamax E-4304
+ 0b0c  Todos Data System AB
+       0009  Todos Argos Mini II Smart Card Reader
++      003f  Todos C400 smartcard controller (Handelsbanken card reader)
++0b0d  ProjectLab
++      0000  CenturyCD
+ 0b0e  GN Netcom
+ 0b0f  AVID Technology
+ 0b10  Pcally
+@@ -8504,6 +8781,7 @@
+       0020  ShuttleXpress
+ 0b37  Hitachi ULSI Systems Co., Ltd
+ 0b39  Omnidirectional Control Technology, Inc.
++      0001  Composite USB PS2 Converter
+       0109  USB TO Ethernet
+       0421  Serial
+       0801  USB-Parallel Bridge
+@@ -8798,9 +9076,11 @@
+       0a9d  SmartPhone Sync
+       0a9e  SmartPhone Sync
+       0a9f  SmartPhone Sync
++      0b03  Ozone Mobile Broadband
+       0b04  Hermes / TyTN / T-Mobile MDA Vario II / O2 Xda Trion
+       0b06  Athena / Advantage x7500 / Dopod U1000 / T-Mobile AMEO
+       0b0c  Elf / Touch / P3450 / T-Mobile MDA Touch / O2 Xda Nova / Dopod S1
++      0b51  Qtek 8310 mobile phone [Tornado Noble]
+       0bce  Vario MDA
+ 0bb5  Murata Manufacturing Co., Ltd
+ 0bb6  Network Alchemy
+@@ -8849,16 +9129,16 @@
+       0108  Mass Storage Device
+       0111  Card Reader
+       0113  Mass Storage Device
+-      0115  Mass Storage Device
++      0115  Mass Storage Device (Multicard Reader)
+       0116  Mass Storage Device
+       0117  Mass Storage Device
+       0118  Mass Storage Device
+-      0151  Mass Storage Device
++      0151  Mass Storage Device (Multicard Reader)
+       0152  Mass Storage Device
+       0153  Mass Storage Device
+       0156  Mass Storage Device
+       0157  Mass Storage Device
+-      0158  Mass Storage Device
++      0158  USB 2.0 multicard reader
+       0161  Mass Storage Device
+       0168  Mass Storage Device
+       0169  Mass Storage Device
+@@ -8955,6 +9235,8 @@
+       ffff  Bluetooth module with BlueCore in DFU mode
+ 0c25  Sampo Corp.
+       0310  Scream Cam
++0c26  Prolific Technology Inc.
++      0018  USB-Serial Controller [Icom Inc. OPC-478UC]
+ 0c27  RFIDeas, Inc
+       3bfa  pcProx Card Reader
+ 0c2e  Metro
+@@ -9042,8 +9324,8 @@
+       60fe  Audio (Microphone)
+       6108  Win2 PC Camera
+       6122  PC Camera (SN9C110)
+-      6128  PC Camera (SN9C325 + OM6802)
+       6123  PC Camera (SN9C110)
++      6128  PC Camera (SN9C325 + OM6802)
+       612a  PC Camera (SN9C325)
+       612c  PC Camera (SN9C110)
+       612e  PC Camera (SN9C110)
+@@ -9062,6 +9344,7 @@
+       624c  PC Camera (SN9C201 + MI1320)
+       624e  PC Camera (SN9C201 + SOI968)
+       624f  PC Camera (SN9C201 + OV9650)
++      6251  PC Camera (SN9C201 + OV9650)
+       6253  PC Camera (SN9C201 + OV9650)
+       6260  PC Camera (SN9C201 + OV7670ISP)
+       6262  PC Camera (SN9C201 + OM6802)
+@@ -9081,7 +9364,7 @@
+       628f  PC Camera with Microphone (SN9C202 + OV9650)
+       62a0  PC Camera with Microphone (SN9C202 + OV7670ISP)
+       62a2  PC Camera with Microphone (SN9C202 + OM6802)
+-      62b0  PC Camera with Microphone (SN9C201 + MI0360/MT9V011 or MI0360SOC/MT9V111)
++      62b0  PC Camera with Microphone (SN9C202 + MI0360/MT9V011 or MI0360SOC/MT9V111)
+       62b3  PC Camera with Microphone (SN9C202 + OV9655)
+       62ba  PC Camera with Microphone (SN9C202 + S5K53BEB)
+       62bb  PC Camera with Microphone (SN9C202 + OV7660)
+@@ -9089,7 +9372,9 @@
+       62be  PC Camera with Microphone (SN9C202 + OV7663)
+       62c0  Sonix USB 2.0 Camera
+       62e0  MSI Starcam Racer
++      6310  Sonix USB 2.0 Camera
+       63e0  Sonix Integrated Webcam
++      63f1  Integrated Webcam
+       63f8  Sonix Integrated Webcam
+       8000  DC31VC
+       8006  Dual Mode Camera (8006 VGA)
+@@ -9224,7 +9509,7 @@
+       0035  Miditech Play'n Roll
+       0036  Cinergy 250 Audio
+       0037  Cinergy 250 Audio
+-      0038  Cinergy T^2 DVB-T Receiver
++      0038  Cinergy T² DVB-T Receiver
+       0039  Grabster AV 400
+       003b  Cinergy 400
+       003c  Grabster AV 250
+@@ -9232,10 +9517,16 @@
+       0043  Cinergy T XS
+       004e  Cinergy T XS
+       004f  Cinergy Analog XS
++      0055  Cinergy T XE (Version 1, AF9005)
+       005c  Cinergy T²
+-      0069  Cinergy T XE DVB-T Receiver
++      0069  Cinergy T XE (Version 2, AF9015)
++      0077  Aureon Dual USB
++      0097  Cinergy T RC MKII
+ 0cd4  Bang Olufsen
+       0101  BeolinkPC2
++0cd5  LabJack Corporation
++      0003  U3
++      0009  UE9
+ 0cd7  NewChip S.r.l.
+ 0cd8  JS Digitech, Inc.
+       2007  Smart Card Reader/JSTU-9700
+@@ -9261,11 +9552,14 @@
+       0020  Wi-Fi Wireless LAN Adapter
+       0022  802.11b/g/n Wireless Network Adapter
+       0023  UB81 802.11bgn
++      0025  802.11b/g/n USB Wireless Network Adapter
+       0026  UB82 802.11abgn
+ 0ce9  pico Technology
+       1001  PicoScope3204
+ 0cf1  e-Conn Electronic Co., Ltd
+ 0cf2  ENE Technology, Inc.
++      6220  SD Card Reader (SG361)
++      6225  SD card reader (UB6225)
+ 0cf3  Atheros Communications, Inc.
+       0001  AR5523
+       0002  AR5523 (no firmware)
+@@ -9273,8 +9567,9 @@
+       0004  AR5523 (no firmware)
+       0005  AR5523
+       0006  AR5523 (no firmware)
+-      9170  AR9170 802.11n
+       1001  TG121N
++      3000  AR3011
++      9170  AR9170 802.11n
+ 0cf4  Fomtex Corp.
+ 0cf5  Cellink Co., Ltd
+ 0cf6  Compucable Corp.
+@@ -9343,6 +9638,7 @@
+       5020  Mobile Hard Disk Drive
+       7000  OneTouch
+       7010  OneTouch
++      7410  Mobile Hard Disk Drive (1TB)
+ 0d4a  NF Corp.
+ 0d4b  Grape Systems, Inc.
+ 0d4c  Tedas AG
+@@ -9361,7 +9657,7 @@
+ 0d56  AVLAB Technology, Inc.
+ 0d57  Solomon Microtech, Ltd
+ 0d5c  Belkin
+-      a002  F5D6050 802.11b Adapter
++      a002  Atmel at76c503a [F5D6050 802.11b Wireless Adapter v1000]
+ 0d5e  Myacom, Ltd
+       2346  BT Digital Access adapter
+ 0d5f  CSI, Inc.
+@@ -9370,6 +9666,7 @@
+ 0d62  Darfon Electronics Corp.
+       0003  Smartcard Reader
+       0004  Filter Driver
++      001c  Benq X120 Internet Keyboard Pro
+       0306  M530 Mouse
+       0800  Magic Wheel
+       2021  AM805 Keyboard
+@@ -9421,6 +9718,7 @@
+       1400  Attache 256MB USB 2.0 Flash Drive
+       1420  PS2044 Pen Drive
+       1470  Vosonic X's-Drive II+ VP2160
++      1620  USB Disk Pro
+       1900  USB Thumb Drive
+ 0d7e  American Computer & Digital Components
+       2507  Hi-Speed USB-to-IDE Bridge Controller
+@@ -9539,7 +9837,7 @@
+       5515  MP3 Player
+       5516  MP3 Player
+       5581  Mega Sky 5580 DVB-T Tuner
+-      6823  802.11b
++      6823  UB11B/MS-6823 802.11b Wi-Fi adapter
+       6826  IEEE 802.11g Wireless Network Adapter
+       6855  Bluetooth Device
+       6861  MSI-6861 802.11g WiFi adapter
+@@ -9564,6 +9862,8 @@
+ 0db4  Chung Fu Chen Yeh Enterprise Corp.
+ 0db7  ELCON Systemtechnik
+       0002  Goldpfeil P-LAN
++0dbc  A&D Medical
++      0003  AND Serial Cable [AND Smart Cable]
+ 0dbe  Jiuh Shiuh Precision Industry Co., Ltd
+ 0dbf  Quik Tech Solutions
+       0002  SmartDongle Security Key
+@@ -9603,6 +9903,7 @@
+ 0dd8  Netac Technology Co., Ltd
+       1060  USB-CF-Card
+       e007  OnlyDisk U222 Pendrive
++      f607  OnlyDisk U208 1G flash drive [U-SAFE]
+ 0dd9  HighSpeed Surfing
+ 0dda  Integrated Circuit Solution, Inc.
+       0001  Multi-Card Reader 6in1
+@@ -9649,18 +9950,34 @@
+       0007  Bluetooth 2.0 Adapter 10m
+       000b  Bluetooth 2.0 Adapter DFU
+       000d  WL-168 Wireless Network Adapter 54g
+-      0017  WL-182
++      0017  WL-182 Wireless-N Network USB Card
+       0019  Bluetooth 2.0 adapter 10m CN-512v2 001
+-      001a  Bluetooth 2.0 adapter 100m CN-521v2 001
+-      061c  LN-028
++      001a  Bluetooth 2.0 adapter 100m CN-521v2 001 
++      002b  WL-188 Wireless Network 300N USB Adapter
++      002c  WL-301 Wireless Network 300N USB Adapter
++      002d  WL-302 Wireless Network 300N USB dongle 
++      0039  WL-315 Wireless-N USB Adapter
++      003b  WL-321 Wireless USB Gaming Adapter 300N
++      003c  WL-323 Wireless-N USB Adapter
++      003d  WL-324 Wireless USB Adapter 300N
++      003e  WL-343 Wireless USB Adapter 150N X1
++      003f  WL-608 Wireless USB Adapter 54g
++      0040  WL-344 Wireless USB Adapter 300N X2
++      0041  WL-329 Wireless Dualband USB adapter 300N
++      0042  WL-345 Wireless USB adapter 300N X3
++      0047  WL-352v1 Wireless USB Adapter 300N 002
++      0048  WL-349v1 Wireless USB Adapter 150N 002
++      004a  WL-358v1 Wireless Micro USB Adapter 300N X3 002
++      004b  WL-360 Wireless Micro USB Adapter X3
++      061c  LN-028 Network USB 2.0 Adapter
+       21f4  44 St Bluetooth Device
+       2200  Sitecom bluetooth2.0 class 2 dongle CN-512
+       2208  Sitecom bluetooth2.0 class 2 dongle CN-520
+       2209  Sitecom bluetooth2.0 class 1 dongle CN-521
+-      9071  802.11bg
+-      9075  802.11bg
+-      90ac  WL-172
+-      9712  WL-113 rev 2
++      9071  WL-113 rev 1 Wireless Network USB Adapter
++      9075  WL-117 Hi-Speed USB Adapter
++      90ac  WL-172 Wireless Network USB Adapter 54g Turbo
++      9712  WL-113 rev 2 Wireless Network USB Adapter
+ 0df7  Mobile Action Technology, Inc.
+       0620  MA-620 Infrared Adapter
+       0700  MA-700 Bluetooth Adapter
+@@ -9676,13 +9993,23 @@
+       0001  Touchscreen
+ 0e03  Nippon Systemware Co., Ltd
+ 0e08  Winbest Technology Co., Ltd
++0e0b  Amigo Technology Inc.
++      9031  802.11n Wireless USB Card
++      9041  802.11n Wireless USB Card
+ 0e0c  Gesytec
+       0101  LonUSB LonTalk Network Adapter
+ 0e0f  VMware, Inc.
+       0002  Virtual USB Hub
++      0003  Virtual Mouse
++      0004  Virtual CCID
++      0005  Virtual Mass Storage
++      0006  Virtual Keyboard
++      f80a  Smoker FX2
+ 0e16  JMTek, LLC
+ 0e17  Walex Electronic, Ltd
+ 0e1b  Crewave
++0e20  Pegasus Technologies Ltd.
++      0101  NoteTaker
+ 0e21  Cowon Systems, Inc.
+       0300  iAudio CW200
+       0400  MP3 Player
+@@ -9706,9 +10033,11 @@
+       0009  Handyscope HS3 (br)
+       000a  Handyscope HS4
+       000b  Handyscope HS4 (br)
+-      000e  Handyscope HS4 Diff
+-      000f  Handyscope HS4 Diff (br)
++      000e  Handyscope HS4-DIFF
++      000f  Handyscope HS4-DIFF (br)
+       0010  Handyscope HS2
++      0011  TiePieSCOPE HS805 (br)
++      0012  TiePieSCOPE HS805
+       0018  Handyprobe HP2
+       0042  TiePieSCOPE HS801
+       00fd  USB To Parallel adapter
+@@ -9745,12 +10074,20 @@
+       6119  remote receive and control device
+       6441  C-Media Sound Device
+ 0e5d  Neltron Industrial Co., Ltd
+-0e66  Hawking
++0e5e  Conwise Technology Co., Ltd.
++      6622  CW6622
++0e66  Hawking Technologies
++      0001  HWUN1 Hi-Gain Wireless-300N USB Adapter w/ Upgradable Antenna
++      0003  HWDN1 Hi-Gain USB Wireless-300N Dish Adapter
++      0009  HWUN2 Hi-Gain Wireless-150N USB Adapter w/ Upgradable Antenna
++      000b  HWDN2 Hi-Gain USB Wireless-150N Dish Adapter
++      0013  Hi-Gain Wireless-N USB [rt2870]
+       400b  UF100 10/100 Network Adapter
+       400c  UF100 Ethernet [pegasus2]
+ 0e67  Fossil, Inc.
+       0002  Wrist PDA
+ 0e6a  Megawin Technology Co., Ltd
++      0101  MA100 [USB-UART Bridge IC]
+ 0e70  Tokyo Electronic Industry Co., Ltd
+ 0e72  Hsi-Chin Electronics Co., Ltd
+ 0e75  TVS Electronics, Ltd
+@@ -9767,7 +10104,9 @@
+ 0e8d  MediaTek Inc.
+       0004  MT6227 phone
+ 0e8f  GreenAsia Inc.
+-      0012  Joystick
++      0003  MaxFire Blae2
++      0012  USB Wireless 2.4GHz Gamepad
++      0016  4 port HUB
+ 0e90  WiebeTech, LLC
+       0100  Storage Adapter V1
+ 0e91  VTech Engineering Canada, Ltd
+@@ -9882,7 +10221,8 @@
+ 0f2f  Priva Design Services
+ 0f30  Jess Technology Co., Ltd
+       001c  PS3 Guitar Controller Dongle
+-      0110  10-Button Joypad
++      0110  Dual Analog Rumble Pad
++      0111  Colour Rumble Pad
+ 0f31  Chrysalis Development
+ 0f32  YFC-BonEagle Electric Co., Ltd
+ 0f37  Kokuyo Co., Ltd
+@@ -9913,6 +10253,22 @@
+ 0f61  Varian, Inc.
+ 0f62  Acrox Technologies Co., Ltd
+       1001  Targus Mini Trackball Optical Mouse
++0f63  LeapFrog Enterprises
++      0500  Fly Fusion
++      0600  Leap Port Turbo
++      0700  POGO
++      0800  Didj
++      0900  TAGSchool
++      0a00  Leapster 2
++      0b00  Crammer
++      0c00  Tag Jr
++      0d00  My Pal Scout
++      0e00  Tag32
++      0f00  Tag64
++      1000  Kiwi16
++      1100  Leapster L2x
++      1111  Fly Fusion
++      1300  Didj UK/France (Leapster Advance)
+ 0f68  Kobe Steel, Ltd
+ 0f69  Dionex Corp.
+ 0f6a  Vibren Technologies, Inc.
+@@ -9966,10 +10322,12 @@
+ 0fca  Research In Motion, Ltd.
+       0001  Blackberry Handheld
+ 0fce  Sony Ericsson Mobile Communications AB
++      00af  V640i Phone [PTP Camera]
+       00d4  C902 [MTP]
+       00d9  C702 Phone
+       1010  WMC Modem
+-      10d4  C902 [PictBridge]
++      10af  V640i Phone [PictBridge]
++      10d4  C902 Phone [PictBridge]
+       d008  V800-Vodafone 802SE WMC Modem
+       d016  K750i Phone
+       d017  K608i Phone
+@@ -9979,9 +10337,11 @@
+       d041  K510i Phone
+       d042  W810i Phone
+       d046  K610i Phone
+-      d0d4  C902 [Modem]
++      d0af  V640i Phone
++      d0d4  C902 Phone [Modem]
+       e042  W810i Phone
+-      e0d4  C902 [Mass Storage]
++      e0af  V640i Phone [Mass Storage]
++      e0d4  C902 Phone [Mass Storage] 
+ 0fcf  Dynastream Innovations, Inc.
+ 0fd0  Tulip Computers B.V.
+ 0fd1  Giant Electronics Ltd.
+@@ -10042,6 +10402,8 @@
+       3342  Cayman 3352 DSL Modem
+       3382  3380 Series Network Interface
+       6072  DSL Modem
++      9031  Motorola 802.11n Dualband USB Wireless Adapter
++      9032  Motorola 802.11n 5G USB Wireless Adapter
+       cb01  Cayman 3341 Ethernet DSL Router
+ 1010  Fukuda Denshi Co., Ltd
+ 1011  Mobile Media Tech.
+@@ -10094,13 +10456,16 @@
+       8002  GN-BR402W
+       8003  GN-WLBM101
+       8004  GN-WLBZ101 802.11b Adapter
+-      8005  802.11b
++      8005  GN-WLBZ201 802.11b Adapter
+       8006  GN-WBZB-M 802.11b Adapter
+       8007  GN-WBKG
+       8008  GN-WB01GS
+       800a  GN-WI05GS
+       800b  GN-WB30N 802.11n WLAN Card
++      800c  GN-WB31N 802.11n USB WLAN Card
++      800d  GN-WB32L 802.11n USB WLAN Card
+ 1046  Winbond Electronics Corp. [hex]
++      6694  Generic W6694 USB
+       8901  Bluetooth Device
+       9967  W9967CF/W9968CF Webcam IC
+ 1048  Targus Group International
+@@ -10113,6 +10478,7 @@
+       0006  Infinity Smart
+       0007  Infinity Smart module
+       0008  Infinity CryptoKey
++      0009  RE-BL PlayStation 3 IR-to-Bluetooth converter
+ 1050  Yubico.com
+       0010  Yubikey
+ 1053  Immanuel Electronics Co., Ltd
+@@ -10127,8 +10493,9 @@
+       0400  External HDD
+       0500  hub
+       0702  Passport External HDD
++      0900  MyBook Essential External HDD
+       0901  MyBook External HDD
+-      1001  External Hard Disk
++      1001  External Hard Disk [Elements]
+ 1059  Giesecke & Devrient GmbH
+       000b  StarSign Bio Token 3.0
+ 105c  Hong Ji Electric Wire & Cable (Dongguan) Co., Ltd
+@@ -10180,6 +10547,7 @@
+       2603  Packet Service
+       3701  Broadband Wireless modem
+       3702  Pantech PX-500
++      3714  PANTECH USB MODEM [UM175]
+       3eb4  Packet Service Diagnostic Serial Port (WDM)
+       4101  Packet Service Diagnostic Serial Port (WDM)
+       4102  Packet Service
+@@ -10280,6 +10648,7 @@
+ 10ce  Silicon Labs
+       ea6a  MobiData EDGE USB Modem
+ 10cf  Velleman Components, Inc.
++      2011  R-Engine MPEG2 encoder/decoder
+       5500  8055 Experiment Interface Board (address=0)
+       5501  8055 Experiment Interface Board (address=1)
+       5502  8055 Experiment Interface Board (address=2)
+@@ -10295,9 +10664,11 @@
+       1000  MP3 Player
+       1100  MPMan MP-Ki 128 MP3 Player/Recorder
+       1101  D-Wave 2GB MP4 Player / AK1025 MP3/MP4 Player
++      2200  Acer MP-120 MP3 player
+       8888  ADFU Device
+       ff51  ADFU Device
+       ff61  MP4 Player
++      ff66  Craig 2GB MP3/Video Player
+ 10de  Authenex, Inc.
+ 10df  In-Win Development, Inc.
+       0500  iAPP CR-e500 Card reader
+@@ -10305,6 +10676,8 @@
+ 10e1  CablePlus, Ltd
+ 10e2  Nada Electronics, Ltd
+ 10ec  Vast Technologies, Inc.
++10f0  Nexio Co., Ltd
++      2002  iNexio Touchscreen controller
+ 10f5  Turtle Beach
+       0200  Audio Advantage Roadie
+ 10fb  Pictos Technologies, Inc.
+@@ -10318,6 +10691,16 @@
+ 1101  EasyPass Industrial Co., Ltd
+       0001  FSK Electronics Super GSM Reader
+ 1108  Brightcom Technologies, Ltd
++110a  Moxa Technologies Co., Ltd.
++      1250  UPort 1250 2-Port RS-232/422/485
++      1251  UPort 1250I 2-Port RS-232/422/485 with Isolation
++      1410  UPort 1410 4-Port RS-232
++      1450  UPort 1450 4-Port RS-232/422/485
++      1451  UPort 1450I 4-Port RS-232/422/485 with Isolation
++      1613  UPort 1610-16 16-Port RS-232
++      1618  UPort 1610-8 8-Port RS-232
++      1653  UPort 1650-16 16-Port RS-232/422/485
++      1658  UPort 1650-8 8-Port RS-232/422/485
+ 1110  Analog Devices Canada, Ltd (Allied Telesyn)
+       5c01  Huawei MT-882 Remote NDIS Network Device
+       6489  ADSL ETH/USB RTR
+@@ -10335,7 +10718,11 @@
+       8888  Evolution Device
+ 1112  YM ELECTRIC CO., Ltd
+ 1113  Medion AG
++      a0a2  Active Sync device
+ 111e  VSO Electric Co., Ltd
++112a  RedRat
++      0001  RedRat3 IR Transceiver
++      0005  RedRat3II IR Transceiver
+ 112e  Master Hill Electric Wire and Cable Co., Ltd
+ 112f  Cellon International, Inc.
+ 1130  Tenx Technology, Inc.
+@@ -10407,6 +10794,7 @@
+ 1199  Sierra Wireless, Inc.
+       0019  AC595U
+       0021  AC597E
++      0024  MC5727 CDMA modem
+       0110  Composite Device
+       0112  CDMA 1xEVDO PC Card, AirCard 580
+       0120  AC595U
+@@ -10428,8 +10816,10 @@
+       6852  AirCard 880E Device
+       6853  AirCard 881E Device
+       6854  AirCard 885 Device
++      6856  ATT "USB Connect 881"
+       6870  MC8780 Device
+       6871  MC8781 Device
++      6893  MC8777 Device
+ 119a  ZHAN QI Technology Co., Ltd
+ 119b  ruwido austria GmbH
+       0400  Infrared Keyboard V2.01
+@@ -10442,6 +10832,8 @@
+       1518  iREZ K2
+ 11ab  Exito Electronics Co., Ltd
+ 11b0  ATECH FLASH TECHNOLOGY
++11c5  Inmax
++      0521  IMT-0521 Smartcard Reader
+ 11db  Topfield Co., Ltd.
+       1000  PVR
+       1100  PVR
+@@ -10481,9 +10873,13 @@
+       4017  PC-Chips 802.11b Adapter
+ 124b  Nyko (Honey Bee)
+       4d01  Airflo EX Joystick
++124c  MXI - Memory Experts International, Inc.
++      3200  Stealth MXP 1GB
+ 125c  Apogee Inc.
+       0010  Alta series CCD
+ 125f  A-DATA Technology Co., Ltd.
++1260  Standard Microsystems Corp.
++      ee22  Intersil ISL3887 [EZ-Connect 802.11g Adapter v3]
+ 1264  Covidien Energy-based Devices
+ 1266  Pirelli Broadband Solutions
+       6302  Fastweb DRG A226M ADSL Router
+@@ -10502,8 +10898,23 @@
+ 1275  Xaxero Marine Software Engineering, Ltd.
+       0002  WeatherFax 2000 Demodulator
+       0080  SkyEye Weather Satellite Receiver
++1283  zebris Medical GmbH
++      0100  USB-RS232 Adaptor
++      0110  CMS20
++      0111  CMS 10
++      0112  CMS 05
++      0114  ARCUS digma PC-Interface
++      0115  SAM Axioquick recorder
++      0116  SAM Axioquick recorder
++      0120  emed-X
++      0121  emed-AT
++      0130  PDM
++      0150  CMS10GI (Golf)
+ 1286  Marvell Semiconductor, Inc.
+       8001  BLOB boot loader firmware
++1291  Qualcomm Flarion Technologies, Inc. / Leadtek Research, Inc.
++      0010  FDM 2xxx Flash-OFDM modem
++      0011  LR7F06/LR7F14 Flash-OFDM modem
+ 1292  Innomedia
+       0258  Creative Labs VoIP Blaster
+ 1293  Belkin Components [hex]
+@@ -10513,17 +10924,27 @@
+ 129b  CyberTAN Technology
+       1666  TG54USB 802.11bg
+       1667  802.11bg
++      1828  Gigaset USB Adapter 300
+ 12a7  Trendchip Technologies Corp.
+ 12ab  Honey Bee Electronic International Ltd.
+ 12ba  Licensed by Sony Computer Entertainment America
++      0100  RedOctane Guitar for PlayStation(R)3
++      0120  RedOctane Drum Kit for PlayStation(R)3
+       0200  Harmonix Guitar for PlayStation(R)3
+       0210  Harmonix Drum Kit for PlayStation(R)3
+ 12d1  Huawei Technologies Co., Ltd.
+       1001  E620 USB Modem
+       1003  E220 HSDPA Modem / E270 HSDPA/HSUPA Modem
+       1009  U120
++      140b  EC1260 Wireless Data Modem HSD USB Card
++      1446  E1552 (HSPA modem)
+ 12d2  LINE TECH INDUSTRIAL CO., LTD.
++12d6  EMS Dr. Thomas Wuensche
++      0444  CPC-USB/ARM7
++      0888  CPC-USB/M16C
+ 12d7  BETTER WIRE FACTORY CO., LTD.
++12e6  Waldorf Music GmbH
++      0013  Blofeld
+ 12ef  Tapwave, Inc.
+       0100  Tapwave Handheld [Tapwave Zodiac]
+ 12f5  Dynamic System Electronics Corp.
+@@ -10535,7 +10956,7 @@
+ 12ff  Fascinating Electronics, Inc.
+       0101  Advanced RC Servo Controller
+ 1307  Transcend Information, Inc.
+-      0163  512MB/1GB Flash Drive
++      0163  256MB/512MB/1GB Flash Drive
+       0165  2GB/4GB Flash Drive
+       1169  TS2GJF210 JetFlash 210 2GB
+ 1310  Roper
+@@ -10570,10 +10991,25 @@
+       0203  EasiDock 200 Printer Port
+       0204  Ethernet
+       0304  EasiDock Ethernet
++1345  Sino Lite Technology Corp.
++      001c  Xbox Controller Hub
++1347  Moravian Instruments
++      0400  G2CCD USB 1.1 obsolete
++      0401  G2CCD-S with Sony ICX285 CCD
++      0402  G2CCD2
++      0403  G2/G3CCD-I KAI CCD
++      0404  G2/G3CCD-F KAF CCD
++      0410  G1-0400 CCD
++      0411  G1-0800 CCD
++      0412  G1-0300 CCD
++      0413  G1-2000 CCD
++      0414  G1-1400 CCD
+ 1348  Katsuragawa Electric Co., Ltd.
+ 134e  Digby's Bitpile, Inc. DBA D Bit
+ 1357  P&E Microcomputer Systems
+       0503  USB-ML-12 HCS08/HCS12 Multilink
++1366  SEGGER
++      0101  J-Link ARM
+ 136b  STEC
+ 1370  Swissbit
+       0323  Swissmemory cirrusWHITE
+@@ -10590,11 +11026,13 @@
+       5f00  WPN111 RangeMax(TM) Wireless USB 2.0 Adapter
+       5f01  WPN111 (no firmware)
+ 138a  DigitalPersona, Inc
+-      0001 Fingeprint Reader
++      0001  Fingeprint Reader
+ 138e  Jungo LTD
+       9000  Raisonance S.A. STM32 ARM evaluation board
+ 1390  TOMTOM B.V.
+       0001  GO 520 T
++1391  IdealTEK, Inc.
++      1000  URTC-1000
+ 1395  Sennheiser Communications
+       3556  USB Headset
+ 1397  BEHRINGER International GmbH
+@@ -10622,6 +11060,7 @@
+ 13ca  JyeTai Precision Industrial Co., Ltd.
+ 13cf  Wisair Ltd.
+ 13d1  A-Max Technology Macao Commercial Offshore Co. Ltd.
++      7019  MD 82288
+ 13d2  Shark Multimedia
+       0400  Pocket Ethernet [klsi]
+ 13d3  IMC Networks
+@@ -10655,6 +11094,9 @@
+       3243  DTV-DVB UDXTTM6010 - A/D Driver(Without HID)
+       3244  DTV-DVB UDTT 7047Z-USB 2.0 DVB-T Driver
+       3247  802.11 n/g/b Wireless LAN Adapter
++      3262  802.11 n/g/b Wireless LAN USB Adapter
++      3273  802.11 n/g/b Wireless LAN USB Mini-Card
++      3284  Wireless LAN USB Mini-Card
+       7020  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
+       7022  DTV-DVB UDST7022BDA DVB-S Box(Without HID)
+ 13dc  ALEREON, INC.
+@@ -10664,11 +11106,13 @@
+       0001  SL-1
+ 13e6  TechnoScope Co., Ltd.
+ 13fd  Initio Corporation
++      1340  Hi-Speed USB to SATA Bridge
+ 13fe  Kingston Technology Company Inc.
+       1a00  512MB/1GB Flash Drive
+       1a23  512MB Flash Drive
+       1d00  DataTraveler 2.0 1GB/4GB Flash Drive / Patriot Xporter 4GB Flash Drive
+       1f00  DataTraveler 2.0 4GB Flash Drive / Patriot Xporter 32GB (PEF32GUSB) Flash Drive
++      3100  2 GB USB stick
+ 1400  Axxion Group Corp.
+ 1402  Bowe Bell & Howell
+ 1403  Sitronix
+@@ -10680,17 +11124,27 @@
+       1110  Merlin S620
+       1120  Merlin EX720
+       1130  Merlin S720
+-      1400  Merlin U740
++      1400  Merlin U730/U740 (Vodafone)
++      1410  Merlin U740 (non-Vodafone)
++      1430  Merlin XU870
++      1450  Merlin X950D
+       2110  Ovation U720/MCD3000
++      2410  Expedite EU740
++      2420  Expedite EU850D/EU860D/EU870D
+       4100  U727
++      4400  Ovation MC930D/MC950D
+ 1415  Nam Tai E&E Products Ltd. or OmniVision Technologies, Inc.
+       0000  Sony SingStar USBMIC
++      0020  Sony Wireless SingStar
+       2000  Sony Playstation Eye
+ 1419  ABILITY ENTERPRISE CO., LTD.
+ 1429  Vega Technologies Industrial (Austria) Co.
+ 142a  Thales E-Transactions
++      0003  Artema Hybrid
++      0005  Artema Modular
+       0043  medCompact
+ 1430  RedOctane
++      4734  Guitar Hero4 hub
+ 1431  Pertech Resources, Inc.
+ 1435  Wistron NeWeb
+       0711  UR055G 802.11bg
+@@ -10700,12 +11154,8 @@
+       0829  AR5523 (no firmware)
+ 1436  Denali Software, Inc.
+ 143c  Altek Corporation
+-145f  Trust
+-      0106  Trust K56 V92 USB Modem
+-      013d  PC Camera (SN9C201 + OV7660)
+-      013f  Megapixel Auto Focus Webcam
+-      0142  WB-6250X Webcam
+-      015a  WB-8300X 2MP Webcam
++1443  Digilent
++      0007  CoolRunner-II CPLD Starter Kit
+ 1453  Radio Shack
+       4026  26-183 Serial Cable
+ 1456  Extending Wire & Cable Co., Ltd.
+@@ -10718,6 +11168,12 @@
+       5122  OpenMoko Neo1973 / Neo Freerunner kernel cdc_ether USB network
+       5123  OpenMoko Neo1973 internal USB CSR4 module
+       5124  OpenMoko Neo1973 Bluetooth Device ID service
++145f  Trust
++      0106  Trust K56 V92 USB Modem
++      013d  PC Camera (SN9C201 + OV7660)
++      013f  Megapixel Auto Focus Webcam
++      0142  WB-6250X Webcam
++      015a  WB-8300X 2MP Webcam
+ 1461  Staccato Communications
+ 1462  Micro Star International
+       5512  MegaStick-1 Flash Stick
+@@ -10726,7 +11182,9 @@
+ 147a  Formosa Industrial Computing, Inc.
+       e015  eHome Infrared Receiver
+       e016  eHome Infrared Receiver
++      e017  eHome Infrared Receiver
+ 147e  Upek
++      1000  Biometric Touchchip/Touchstrip Fingerprint Sensor
+       2016  Biometric Touchchip/Touchstrip Fingerprint Sensor
+ 147f  Hama GmbH & Co., KG
+ 1484  Elsa AG [hex]
+@@ -10742,6 +11200,8 @@
+       2570  802.11g WiFi
+       2573  RT2501USB Wireless Adapter
+       2671  RT2601USB Wireless Adapter
++      2870  RT2870 Wireless Adapter
++      3070  RT2870 Wireless Adapter
+       9020  RT2500USB Wireless Adapter
+       9021  RT2501USB Wireless Adapter
+ 1497  Panstrong Company Ltd.
+@@ -10760,6 +11220,7 @@
+ 14b2  Ralink Technology, Corp.
+       3a93  USB WLAN Device
+       3c02  rt2500 802.11g WLAN
++      3c05  rt2570 802.11g WLAN
+       3c22  rt73 802.11g WLAN
+       3c27  rt2870 802.11n WLAN
+ 14c0  Rockwell Automation, Inc.
+@@ -10769,8 +11230,11 @@
+ 14cd  Super Top
+       6600  USB 2.0 IDE DEVICE
+       6700  Card Reader
++      6900  Card Reader
+ 14d8  JAMER INDUSTRIES CO., LTD.
+ 14dd  Raritan Computer, Inc.
++14e1  Dialogue Technology Corp.
++      5000  PenMount 5000 Touch Controller
+ 14e5  SAIN Information & Communications Co., Ltd.
+ 14ea  Planex Communications
+       ab10  GW-US54GZ
+@@ -10780,6 +11244,7 @@
+ 1500  Ellisys
+ 1501  Pine-Tum Enterprise Co., Ltd.
+ 1513  Hypercom
++      0444  medMobile
+ 1516  CompUSA
+       1603  1GB Flash Drive
+       8628  128M Pen Drive
+@@ -10804,7 +11269,9 @@
+       0001  RZ01-020300 Optical Mouse [Diamondback]
+       0003  Krait Mouse
+       0007  DeathAdder Mouse
++      0101  Copperhead Mouse
+       0102  Tarantula Keyboard
++      0109  Lycosa Keyboard
+ 1546  U-Blox AG
+ 154a  Celectronic GmbH
+       8180  CARD STAR/medic2
+@@ -10838,12 +11305,36 @@
+ 158d  Oakley Inc.
+ 1598  Kunshan Guoji Electronics Co., Ltd.
+ 15a2  Freescale Semiconductor, Inc.
++15a4  Afatech Technologies, Inc.
++      1001  AF9015 DVB-T USB2.0 stick
++      9015  AF9015 DVB-T USB2.0 stick
++      9016  AF9015 DVB-T USB2.0 stick
+ 15a8  Teams Power Limited
++15a9  Gemtek
++      0004  WUBR177G
++      0006  Wireless 11n USB Adapter
++      0010  802.11n USB Wireless Card
+ 15aa  Gearway Electronics (Dong Guan) Co., Ltd.
+ 15ba  Olimex Ltd.
+       0003  OpenOCD JTAG
+       0004  OpenOCD JTAG TINY
++15c0  XL Imaging
++      0001  2M pixel Microscope Camera
++      0002  3M pixel Microscope Camera
++      0003  1.3M pixel Microscope Camera (mono)
++      0004  1.3M pixel Microscope Camera (colour)
++      0005  3M pixel Microscope Camera (Mk 2)
++      0006  2M pixel Microscope Camera (with capture button)
++      0007  3M pixel Microscope Camera (with capture button)
++      0008  1.3M pixel Microscope Camera (colour, with capture button)
++      0009  1.3M pixel Microscope Camera (colour, with capture button)
++      000a  2M pixel Microscope Camera (Mk 2)
++      0010  1.3M pixel "Tinycam"
++      0101  3M pixel Microscope Camera
+ 15c2  SoundGraph Inc.
++      0036  LC16M VFD Display/IR Receiver
++      0038  GD01 MX VFD Display/IR Receiver
++      ffda  iMON PAD Remote Controller
+       ffdc  iMON PAD Remote Controller
+ 15c6  Laboratoires MXM
+       1000  DigistimSP (cold)
+@@ -10855,6 +11346,7 @@
+       00c3  Mini Optical Mouse
+ 15d5  Coulomb Electronics Ltd.
+ 15d9  Unknown
++      0a33  Optical Mouse
+       0a37  Mouse
+ 15dc  Hynix Semiconductor Inc.
+ 15e0  Seong Ji Industrial Co., Ltd.
+@@ -11008,8 +11500,14 @@
+       0102  uDART In-Circuit Debugger
+       0200  SpYder USBSPYDER08
+ 164a  ChipX
++164c  Matrix Vision GmbH
++      0101  mvBlueFOX camera (no firmware)
++      0103  mvBlueFOX camera
+ 1657  Struck Innovative Systeme GmbH
+       3150  SIS3150 USB2.0 to VME interface
++165b  Frontier Design Group
++      8101  Tranzport Control Surface
++      fad1  Alphatrack Control Surface
+ 1660  Creatix Polymedia GmbH
+ 1668  Actiontec Electronics, Inc. [hex]
+       0009  Gateway
+@@ -11034,6 +11532,8 @@
+ 1677  China Huada Integrated Circuit Design (Group) Co., Ltd. (CIDC Group)
+ 1679  Total Phase
+       2001  Beagle USB 12 Protocol Analyzer
++1681  Prevo Technologies, Inc.
++      0001  Tuner's Dashboard
+ 1682  Maxwise Production Enterprise Ltd.
+ 1684  Godspeed Computer Corp.
+ 1685  Delock
+@@ -11085,6 +11585,8 @@
+       7811  AR5523
+       7812  AR5523 (no firmware)
+ 16ac  Dongguan ChingLung Wire & Cable Co., Ltd.
++16b5  Persentec, Inc.
++      0002  Otto driving companion
+ 16c0  VOTI
+       03e8  free for internal lab use 1000
+       03e9  free for internal lab use 1001
+@@ -11101,10 +11603,21 @@
+       076b  OpenPCD 13.56MHz RFID Reader
+       076c  OpenPICC 13.56MHz RFID Simulator (native)
+       08ac  OpenBeacon USB stick
++      08ca  Alpermann+Velte Universal Display
++      08cb  Alpermann+Velte Studio Clock
++      08cc  Alpermann+Velte SAM7S MT Boot Loader
++      08cd  Alpermann+Velte SAM7X MT Boot Loader
+ 16cc  silex technology, Inc.
+ 16d3  Frontline Test Equipment, Inc.
+ 16d5  AnyDATA Corporation
+       6501  CDMA 2000 1xRTT/EV-DO Modem
++16d6  JABLOCOM s.r.o.
++      8000  GDP-04 desktop phone
++      8001  EYE-02
++      8003  GDP-04 modem
++      8004  Bootloader
++      8005  GDP-04i
++      8007  BTP-06 modem
+ 16d8  CMOTECH Co., Ltd.
+       5141  CMOTECH CDMA Technologies modem
+       5533  CCU-550 CDMA EV-DO modem
+@@ -11127,11 +11640,25 @@
+ 1736  CANON IMAGING SYSTEM TECHNOLOGIES INC.
+ 1737  Linksys
+       0039  USB1000
++      0070  WUSB100 RangePlus Wireless USB Adapter
++      0071  WUSB600N Dual-Band Wireless-N USB Network Adapter
++      0078  WUSB100 RangePlus Wireless USB Network Adapter ver. 2
++      0079  WUSB600N Wireless-N USB Network Adapter with Dual-Band ver. 2
+ 1740  Senao
++      0605  LevelOne WUA-0605 N_Max Wireless USB Adapter
++      0615  LevelOne WUA-0615 N_Max Wireless USB Adapter
+       2000  NUB-8301 802.11bg
++      9701  EnGenius 802.11n Wireless USB Adapter
++      9702  EnGenius 802.11n Wireless USB Adapter
++      9703  EnGenius 802.11n Wireless USB Adapter
++      9705  EnGenius 802.11n Wireless USB Adapter
++      9706  EnGenius 802.11n Wireless USB Adapter
+ 1743  General Atomics
+ 174c  ASMedia Technology Inc.
+ 174f  Syntek
++      1105  SM-MS/Pro-MMC-XD Card Reader
++      1403  Integrated Webcam
++      1404  USB Camera device, 1.3 MPixel Web Cam
+       5212  USB 2.0 UVC PC Camera
+       5a11  PC Camera
+       5a31  Sonix USB 2.0 Camera
+@@ -11151,14 +11678,26 @@
+ 1772  System Level Solutions, Inc.
+ 1776  Arowana
+       501c  300K CMOS Camera
++177f  Sweex
++      0313  LW313 802.11n Adapter [ralink rt2770 + rt2720]
+ 1781  Multiple Vendors
+       083e  MetaGeek Wi-Spy
++      083f  MetaGeek Wi-Spy 2.4x
+       0938  Iguanaworks USB IR Transceiver
+ 1782  Spreadtrum Communications Inc.
+ 1784  TopSeed Technology Corp.
+ 1788  ShenZhen Litkconn Technology Co., Ltd.
+ 1796  Printrex, Inc.
+ 1797  JALCO CO., LTD.
++17a0  Samson Technologies Corp.
++      0001  C01U condenser microphone
++      0002  Q1U dynamic microphone
++      0100  C03U multi-pattern microphone
++      0101  UB1 boundary microphone
++      0200  StudioDock monitors (internal hub)
++      0201  StudioDock monitors (audio)
++      0301  Q2U handheld microphone with XLR
++      0302  GoMic compact condenser microphone
+ 17a4  Concept2
+       0001  Performance Monitor 3
+       0002  Performance Monitor 4
+@@ -11181,35 +11720,61 @@
+       0051  USB VGA Adaptor
+ 17eb  Cornice, Inc.
+ 17ef  Lenovo
++      1003  Integrated Smart Card Reader
+       3815  ChipsBnk 2GB USB Stick
+       4802  Lenovo Vc0323+MI1310_SOC Camera
+ 17f5  K.K. Rocky
+ 17f6  Unicomp, Inc
++1809  Advantech
++      4761  USB-4761 Portable Data Acquisition Module
+ 1822  Twinhan
+       3201  VisionDTV USB-Ter/HAMA USB DVB-T device cold
+       3202  VisionDTV USB-Ter/HAMA USB DVB-T device warm
+ 1831  Gwo Jinn Industries Co., Ltd.
+ 1832  Huizhou Shenghua Industrial Co., Ltd.
++183d  VIVOphone
++      0010  VoiceKey
+ 1854  Memory Devices Ltd.
+ 185b  Compro
+       d000  Compro Videomate DVB-U2000 - DVB-T USB cold
+       d001  Compro Videomate DVB-U2000 - DVB-T USB warm
+ 1861  Tech Technology Industrial Company
+ 1862  Teridian Semiconductor Corp.
++1870  Nexio Co., Ltd
++      0001  iNexio Touchscreen controller
+ 1871  Aveo Technology Corp.
++187f  Siano Mobile Silicon
++      0010  Stallar Board
++      0100  Stallar Board
++      0200  Nova A
++      0201  Nova B
++      0202  Nice
++      0300  Vega
++      0301  VeNice
+ 1894  Topseed
+       5632  Atek Tote Remote
+       5641  TSAM-004 Presentation Remote
+ 1897  Evertop Wire Cable Co.
++18a5  Verbatim, Ltd
++      0214  Portable Hard Drive
++      0216  External Hard Drive
++      0218  External Hard Drive
+ 18b4  e3C Technologies
+       1001  DUTV007
++      1002  EC168 (v5) based USB DVB-T receiver
+       1689  DUTV009
++      fffa  EC168 (v2) based USB DVB-T receiver
++      fffb  EC168 (v3) based USB DVB-T receiver
+ 18b6  Mikkon Technology Limited
+ 18b7  Zotek Electronic Co., Ltd.
+-18c5  AMIT
++18c5  AMIT Technology, Inc.
+       0002  CG-WLUSB2GO
++      0008  CG-WLUSB2GNR Corega Wireless USB Adapter
++      0012  CG-WLUSB10 Corega Wireless USB Adapter
+ 18cd  Ecamm
+       cafe  Pico iMage
++18d1  Google Inc.
++      4e11  Nexus One Phone
+ 18d5  Starline International Group Limited
+ 18d9  Kaba
+       01a0  B-Net 91 07
+@@ -11223,13 +11788,15 @@
+ 18ea  Matrox Graphics, Inc.
+       0002  DualHead2Go [Analog Edition]
+       0004  TripleHead2Go [Digital Edition]
++18ec  Arkmicro Technologies Inc.
++      3118  USB to IrDA adapter [ARK3116T]
+ 18fd  FineArch Inc.
+ 190d  Motorola GSG
+ 1914  Alco Digital Devices Limited
+-1915  Linksys
+-      2233  WUSB11 v2.8 802.11b Adapter
+-      2234  WUSB54G 802.11g Adapter
+-      2236  WUSB11 v3.0 802.11b Adapter
++1915  Nordic Semiconductor ASA
++      2233  Linksys WUSB11 v2.8 802.11b Adapter
++      2234  Linksys WUSB54G 802.11g Adapter
++      2236  Linksys WUSB11 v3.0 802.11b Adapter
+ 192f  Avago Technologies, Pte.
+ 1930  Shenzhen Xianhe Technology Co., Ltd.
+ 1931  Ningbo Broad Telecommunication Co., Ltd.
+@@ -11243,6 +11810,7 @@
+       7002  Libra-Q11 IR remote
+       7006  Libra-Q26 / 1.0 Remote
+       7777  Scorpius wireless keyboard
++      7779  Scorpius-P20MT
+ 1967  CASIO HITACHI Mobile Communications Co., Ltd.
+ 196b  Wispro Technology Inc.
+ 1970  Dane-Elec Corp. USA
+@@ -11264,6 +11832,8 @@
+       1000  ProScope HR
+ 19af  S Life
+       6611  Celestia VoIP Phone
++19b4  Celestron
++      0101  Handheld Digital Microscope 44302
+ 19b5  B & W Group
+ 19b6  Infotech Logistic, LLC
+ 19ca  Mindtribe
+@@ -11271,6 +11841,9 @@
+ 19cf  Parrot SA
+ 19d2  ONDA Communication S.p.A.
+       0002  ET502HS/MT505UP ZTE MF632
++      0031  ZTE MF636
++      0064  ZTE MF627 AU
++      2000  ZTE MF627/MF628/MF628+ HSDPA
+ 19e1  WeiDuan Electronic Accessory (S.Z.) Co., Ltd.
+ 19e8  Industrial Technology Research Institute
+ 19ef  Pak Heng Technology (Shenzhen) Co., Ltd.
+@@ -11285,8 +11858,11 @@
+ 1a12  KES Co., Ltd.
+ 1a25  Amphenol East Asia Ltd.
+ 1a2a  Seagate Branded Solutions
++1a32  Quanta Microsystems, Inc.
++      0304  802.11n Wireless LAN Card
+ 1a36  Biwin Technology Ltd.
+ 1a40  TERMINUS TECHNOLOGY INC.
++      0101  USB-2.0 4-Port HUB
+ 1a41  Action Electronics Co., Ltd.
+ 1a44  VASCO Data Security International
+       0001  Digipass 905 SmartCard Reader
+@@ -11299,8 +11875,10 @@
+ 1a6f  Sagem Orga GmbH
+ 1a79  Bayer Health Care LLC
+ 1a7b  Lumberg Connect  GmbH & Co. KG
+-1a86  Unknown
+-      7523 HL-340 USB-Serial adapter
++1a86  QinHeng Electronics
++      5523  CH341 in serial mode, usb to serial port converter
++      5584  CH341 in parallel mode, usb to printer port converter
++      7523  HL-340 USB-Serial adapter
+ 1a89  Dynalith Systems Co., Ltd.
+ 1a8b  SGS Taiwan Ltd.
+ 1a98  Leica Camera AG
+@@ -11312,6 +11890,7 @@
+ 1ae4  ic-design Reinhard Gottinger GmbH
+ 1ae7  X-TENSIONS
+       0381  VS-DVB-T 380U (af9015 based)
++      2001  SpeedLink SL-6825
+ 1aed  High Top Precision Electronic Co., Ltd.
+ 1aef  Conntech Electronic (Suzhou) Corporation
+ 1b04  Meilhaus Electronic GmBH
+@@ -11400,30 +11979,30 @@
+       0064  Pleo robotic dinosaur
+ 1b36  ViXS Systems, Inc.
+ 1b3b  iPassion Technology Inc.
+-      2933  PC Camera/WebCam controller
+-      2935  PC Camera/WebCam controller
+-      2936  PC Camera/WebCam controller
+-      2937  PC Camera/WebCam controller
+-      2938  PC Camera/WebCam controller
+-      2939  PC Camera/WebCam controller
+-      2950  PC Camera/WebCam controller
+-      2951  PC Camera/WebCam controller
+-      2952  PC Camera/WebCam controller
+-      2953  PC Camera/WebCam controller
+-      2955  PC Camera/WebCam controller
+-      2956  PC Camera/WebCam controller
+-      2957  PC Camera/WebCam controller
+-      2958  PC Camera/WebCam controller
+-      2959  PC Camera/WebCam controller
+-      2960  PC Camera/WebCam controller
+-      2961  PC Camera/WebCam controller
+-      2962  PC Camera/WebCam controller
+-      2963  PC Camera/WebCam controller
+-      2965  PC Camera/WebCam controller
+-      2966  PC Camera/WebCam controller
+-      2967  PC Camera/WebCam controller
+-      2968  PC Camera/WebCam controller
+-      2969  PC Camera/WebCam controller
++      2933  PC Camera/Webcam controller
++      2935  PC Camera/Webcam controller
++      2936  PC Camera/Webcam controller
++      2937  PC Camera/Webcam controller
++      2938  PC Camera/Webcam controller
++      2939  PC Camera/Webcam controller
++      2950  PC Camera/Webcam controller
++      2951  PC Camera/Webcam controller
++      2952  PC Camera/Webcam controller
++      2953  PC Camera/Webcam controller
++      2955  PC Camera/Webcam controller
++      2956  PC Camera/Webcam controller
++      2957  PC Camera/Webcam controller
++      2958  PC Camera/Webcam controller
++      2959  PC Camera/Webcam controller
++      2960  PC Camera/Webcam controller
++      2961  PC Camera/Webcam controller
++      2962  PC Camera/Webcam controller
++      2963  PC Camera/Webcam controller
++      2965  PC Camera/Webcam controller
++      2966  PC Camera/Webcam controller
++      2967  PC Camera/Webcam controller
++      2968  PC Camera/Webcam controller
++      2969  PC Camera/Webcam controller
+ 1b3f  Generalplus Technology Inc.
+ 1b47  Energizer Holdings, Inc.
+       0001  CHUSB Duo Charger (NiMH AA/AAA USB smart charger)
+@@ -11432,6 +12011,8 @@
+ 1b5a  Chao Zhou Kai Yuan Electric Co., Ltd.
+ 1b65  The Hong Kong Standards and Testing Centre Ltd.
+ 1b72  ATERGI TECHNOLOGY CO., LTD.
++1b75  Ovislink Corp.
++      3072  AirLive WN-360USB adapter
+ 1b76  Legend Silicon Corp.
+ 1b80  Afatech
+       c810  AF9015 BDA Device
+@@ -11449,6 +12030,7 @@
+ 1ba2  Lite Metals & Plastic (Shenzhen) Co., Ltd.
+ 1ba4  Ember Corporation
+       0001  InSight USB Link
++1ba6  Abilis Systems
+ 1ba8  China Telecommunication Technology Labs
+ 1bad  Harmonix Music
+       0002  Guitar for Xbox 360
+@@ -11460,6 +12042,7 @@
+ 1bc5  AVIXE Technology (China) Ltd.
+ 1bce  Contac Cable Industrial Limited
+ 1bcf  Sunplus Innovation Technology Inc.
++      0007  Optical Mouse
+ 1bd0  Hangzhou Riyue Electronic Co., Ltd.
+ 1bde  P-TWO INDUSTRIES, INC.
+ 1bef  Shenzhen Tongyuan Network-Communication Cables Co., Ltd
+@@ -11490,6 +12073,8 @@
+       3000  Micro USB Web Camera
+ 1c6b  Philips & Lite-ON Digital Solutions Corporation
+ 1c6c  Skydigital Inc.
++1c73  AMT
++      861f  Anysee E30 USB 2.0 DVB-T Receiver
+ 1c77  Kaetat Industrial Co., Ltd.
+ 1c78  Datascope Corp.
+ 1c79  Unigen Corporation
+@@ -11520,13 +12105,19 @@
+ 1ce1  Amphenol KAE
+ 1cfc  ANDES TECHNOLOGY CORPORATION
+ 1cfd  Flextronics Digital Design Japan, LTD.
++1d07  Solid-Motion
+ 1d08  NINGBO HENTEK DRAGON ELECTRONICS CO., LTD.
+ 1d09  TechFaith Wireless Technology Limited
++      1026  HSUPA Modem FLYING-LARK46-VER0.07 [Flying Angel]
+ 1d0a  Johnson Controls, Inc. The Automotive Business Unit
+ 1d0b  HAN HUA CABLE & WIRE TECHNOLOGY (J.X.) CO., LTD.
+ 1d14  ALPHA-SAT TECHNOLOGY LIMITED
+ 1d1f  Diostech Co., Ltd.
+ 1d20  SAMTACK INC.
++1d4d  PEGATRON CORPORATION
++      0002  Ralink RT2770/2720 802.11b/g/n Wireless LAN Mini-USB Device
++      000c  Ralink RT3070 802.11b/g/n Wireless Lan USB Device
++      000e  Ralink RT3070 802.11b/g/n Wireless Lan USB Device
+ 1d50  OpenMoko, Inc.
+ 1d5b  Smartronix, Inc.
+ 1d6b  Linux Foundation
+@@ -11535,14 +12126,32 @@
+       0003  3.0 root hub
+       0100  PTP Gadget
+       0101  Audio Gadget
++1e0e  Qualcomm / Option
++1e10  Point Grey Research, Inc.
++      2004  Sony 1.3MP 1/3" ICX445 IIDC video camera [Chameleon]
+ 1e1f  INVIA
+ 1e29  Festo AG & Co. KG
+       0101  CPX Adapter
+       0401  iL3-TP
+ 1e41  Cleverscope
++1e54  TypeMatrix
++      2030  2030 USB Keyboard
+ 1e68  TrekStor GmbH & Co. KG
+       001b  DataStation maxi g.u
++1e71  NZXT
++      0001  Avatar Optical Mouse
++1e74  Coby Electronics Corporation
++      6511  MP705-8G MP3 player
++      6512  MP705-4G
++1e7d  ROCCAT
++      2ced  Kone Mouse
+ 1ebb  NuCORE Technology, Inc.
++1eda  AirTies Wireless Networks
++      2310  802.11n USB Wireless LAN Card
++1f28  Cal-Comp
++      0020  CDMA USB Modem A600
++      0021  CD INSTALLER USB Device
++1f87  Stantum
+ 2001  D-Link Corp. [hex]
+       0001  DWL-120 WIRELESS ADAPTER
+       0201  DHN-120 10Mb Home Phoneline Adapter
+@@ -11586,6 +12195,7 @@
+       9b00  Broadband Cable Modem Remote NDIS Device
+       abc1  DSB-650 Ethernet [pegasus]
+       f013  DLink 7 port USB2.0 Hub
++      f103  DUB-H7 7-port USB 2.0 hub
+       f10d  Accent Communications Modem
+       f110  DUB-AV300 A/V Capture
+       f111  DBT-122 Bluetooth adapter
+@@ -11593,17 +12203,43 @@
+       f116  Formosa 2
+       f117  Formosa 3
+       f118  Formosa 4
++2013  Unknown (Pinnacle?)
++      0245  PCTV 73ESE
++      0246  PCTV 74E
++      0248  PCTV 282E
+ 2019  PLANEX
+       3220  GW-US11S WLAN
+       5303  GW-US54GXS 802.11bg
+       5304  GWUS300 802.11n
+       ab01  GW-US54HP
++      ab24  GW-US300MiniS
++      ab25  150N Wireless LAN USB Adapter
+       ab50  GW-US54Mini2
+       c002  GW-US54SG
+       c007  GW-US54GZL
+       ed02  GW-USMM
+ 2040  Hauppauge
++      0c80  Windham
++      0c90  Windham
++      1700  CataMount
++      1800  Okemo A
++      1801  Okemo B
++      2000  Tiger Minicard
++      2009  Tiger Minicard R2
++      200a  Tiger Minicard
++      2010  Tiger Minicard
++      2011  WinTV MiniCard [Dell Digital TV Receiver]
++      2019  Tiger Minicard
++      2400  WinTV PVR USB2 (Model 24019)
+       4700  WinTV Nova-S-USB2
++      4902  HD PVR
++      4982  HD PVR
++      5500  Windham
++      5510  Windham
++      5520  Windham
++      5530  Windham
++      5580  Windham
++      5590  Windham
+       6502  WinTV HVR-900
+       6503  WinTV HVR-930
+       6513  WinTV HVR-980
+@@ -11612,21 +12248,39 @@
+       7070  Nova-T Stick 3
+       9300  WinTV NOVA-T USB2 (cold)
+       9301  WinTV NOVA-T USB2 (warm)
++      b910  Windham
++      b980  Windham
++      b990  Windham
++      c000  Windham
++      c010  Windham
++2047  Texas Instruments
++      0200  MSP430 USB HID Bootstrap Loader
++20b1  XMOS Ltd
++      10ad  XUSB Loader
++      f7d1  X2TAG - USB to JTAG interface
++20df  Simtec Electronics
++      0001  Entropy Key [UDEKEY01]
+ 2101  ActionStar
+       0201  SIIG 4-to-2 Printer Switch
+ 2162  Creative (?)
+       2031  Network Blaster Wireless Adapter
+       500c  DE5771 Modem Blaster
+       8001  Broadxent BritePort DSL Bridge 8010U
++21d6  Agecodagis SARL
++      0002  Seismic recorder [Tellus]
+ 2222  MacAlly
+       0004  iWebKey Keyboard
+       4050  AirStick joystick
++2227  SAMWOO Enterprise
++      3105  SKYDATA SKD-U100
+ 2233  RadioShack Corporation
+       6323  USB Electronic Scale
+ 22b8  Motorola PCS
+       0001  Wally 2.2 chipset
+       0002  Wally 2.4 chipset
+       0005  V.60c/V.60i GSM Phone
++      0830  2386C-HT820
++      0833  2386C-HT820 [Flash Mode]
+       0850  Bluetooth Device
+       1001  Patriot 1.0 (GSM) chipset
+       1002  Patriot 2.0 chipset
+@@ -11663,6 +12317,8 @@
+       4002  A920/A925 UMTS Phone
+       4003  OMAP 1.0 chipset flash
+       4008  OMAP 1.0 chipset RDL
++      41d9  Motorola Droid
++      41db  Motorola Droid (USB Debug)
+       4204  MPx200 Smartphone
+       4214  MPc GSM
+       4224  MPx220 Smartphone
+@@ -11805,7 +12461,7 @@
+ 2821  Unknown
+       3300  Wireless Adapter
+ 2899  Toptronic Industrial Co., Ltd
+-      012c Camera Device
++      012c  Camera Device
+ 2c02  Planex Communications
+       14ea  GW-US11H WLAN
+ 2fb2  Fujitsu, Ltd
+@@ -11850,7 +12506,9 @@
+       1f50  DAQPad-6036E
+       2f80  DAQPad-6052E
+       2f90  DAQPad-6052E
++      702b  GPIB-USB-B
+       703c  USB-485 RS485 Cable
++      709b  GPIB-USB-HS
+       7254  NI MIO (data acquisition card) firmware updater
+       729e  USB-6251 (OEM) data acquisition card
+ 40bb  I-O Data
+@@ -11865,12 +12523,14 @@
+       1008  iFP-800 series mp3/ogg vorbis player
+       100a  iFP-1000 series mp3/ogg vorbis player
+       1014  T20 series mp3/ogg vorbis player (ums firmware)
++      1041  E100 (ums)
+       1101  iFP-100 series mp3 player (ums firmware)
+       1103  iFP-300 series mp3 player (ums firmware)
+       1105  iFP-500 series mp3 player (ums firmware)
+       1113  T10 (alternate)
+       1117  T10
+       1119  T30 series mp3/ogg/wma player
++      1141  E100 (mtp)
+       2002  H10 6GB
+       2101  H10 20GB (mtp)
+       2102  H10 5GB (mtp)
+@@ -11879,13 +12539,17 @@
+       0058  Port Replicator
+       1001  Keyboard Hub
+       1002  Keyboard Hub
++      1003  Keyboard Hub
++      1005  Multimedia Pro Keyboard Hub
+       2001  Keyboard HID Support
+       2002  SK-8125 Keyboard
+       2003  Keyboard
+       2005  RT7D50 Keyboard
++      2011  Multimedia Pro Keyboard
+       2100  SK-3106 Keyboard
+       2101  SmartCard Reader Keyboard
+       2105  Model L100 Keyboard
++      2106  Dell QuietKey Keyboard
+       2500  DRAC4 Remote Access Card
+       3010  Optical Wheel Mouse
+       3012  Optical Wheel Mouse
+@@ -11968,6 +12632,7 @@
+       8157  Integrated Keyboard
+       8158  Integrated Touchpad / Trackstick
+       8501  Bluetooth Adapter
++      9500  USB CP210x UART Bridge Controller [DW700]
+       a001  Hub
+       a005  Internal 2.0 Hub
+       a700  Hub (in 1905FP LCD Monitor)
+@@ -11995,6 +12660,7 @@
+       7288  Ultra Traveldrive 160G 2.5" HDD
+ 4971  SimpleTech
+       cb01  SP-U25/120G
++      ce17  1TB SimpleDrive II USB External Hard Drive
+ 5032  Grandtec
+       0bb8  Grandtec USB1.1 DVB-T (cold)
+       0bb9  Grandtec USB1.1 DVB-T (warm)
+@@ -12016,6 +12682,16 @@
+       0005  Genius MousePen 8x6 Tablet
+       0041  Genius PenSketch 6x8 Tablet
+       0042  Genius PenSketch 12x9 Tablet
++5555  Epiphan Systems Inc.
++      1110  VGA2USB
++      1120  KVM2USB
++      2222  DVI2USB
++      3333  VGA2USB Pro
++      3337  KVM2USB Pro
++      3340  VGA2USB LR
++      3344  KVM2USB LR
++      3411  DVI2USB Solo
++      3422  DVI2USB Duo
+ 55aa  OnSpec Electronic, Inc.
+       0015  Hard Drive
+       0102  SuperDisk
+@@ -12031,13 +12707,21 @@
+       b200  Compact Flash Reader
+       b204  MMC/ SD Reader
+       b207  Memory Stick Reader
++595a  IRTOUCHSYSTEMS Co. Ltd.
++      0001  Touchscreen
+ 5986  Acer, Inc
+       0100  Orbicam
+       0101  USB2.0 Camera
+       0102  Crystal Eye Webcam
+       0200  OrbiCam
++      0203  BisonCam NB Pro 1300
+ 5a57  Zinwell
+       0260  RT2570
++      0280  802.11a/b/g/n USB Wireless LAN Card
++      0282  802.11b/g/n USB Wireless LAN Card
++      0283  802.11b/g/n USB Wireless LAN Card
++      0284  802.11a/b/g/n USB Wireless LAN Card
++      5257  Metronic 495257 wifi 802.11ng
+ 6189  Sitecom
+       182d  USB 2.0 Ethernet
+       2068  USB to serial cable (v2)
+@@ -12046,6 +12730,8 @@
+ 636c  CoreLogic, Inc.
+ 6547  Arkmicro Technologies Inc.
+       0232  ARK3116 Serial
++6615  IRTOUCHSYSTEMS Co. Ltd.
++      0001  Touchscreen
+ 6666  Prototype product Vendor ID
+       0667  WiseGroup Smart Joy PSX, PS-PC Smart JoyPad
+       2667  JCOP BlueZ Smartcard reader
+@@ -12057,6 +12743,10 @@
+ 6a75  Shanghai Jujo Electronics Co., Ltd
+ 7104  CME (Central Music Co.)
+       2202  UF5/UF6/UF7/UF8 MIDI Master Keyboard
++7392  Edimax Technology Co., Ltd
++      7711  EW-7711UTn nLite Wireless USB Adapter
++      7717  EW-7717UN 802.11n Wireless USB Adapter
++      7718  EW-7718UN 802.11n Wireless USB Adapter
+ 8086  Intel Corp.
+       0001  AnyPoint (TM) Home Network 1.6 Mbps Wireless Adapter
+       0100  Personal Audio Player 3000
+@@ -12076,6 +12766,7 @@
+       1110  PRO/Wireless LAN Module
+       1111  PRO/Wireless 2011B 802.11b Adapter
+       1134  Hollister Mobile Monitor
++      1139  In-Target Probe (ITP)
+       1234  Prototype Reader/Writer
+       3100  PRO/DSL 3220 Modem - WAN
+       3101  PRO/DSL 3220 Modem
+@@ -12087,10 +12778,16 @@
+       beef  SCM Miniature Card Reader/Writer
+       c013  Wireless HID Station
+       f001  XScale PXA27x Bulverde flash
++      f1a5  Z-U130 [Value Solid State Drive]
++8087  Intel Corp.
++      0020  Integrated Rate Matching Hub
+ 8341  EGO Systems, Inc.
+       2000  Flashdisk
+ 9016  Sitecom
+       182d  WL-022 802.11b Adapter
++9148  GeoLab, Ltd
++# All of GeoLab's devices share the same ID 0004.
++      0004  R3 Compatible Device
+ 9710  MosChip Semiconductor
+       7703  MCS7703 Serial Port Adapter
+       7705  Printer cable
+@@ -12099,6 +12796,24 @@
+       7830  MCS7830 Ethernet
+ 99fa  Grandtec
+       8988  V.cap Camera Device
++a128  AnMo Electronics Corp. / Dino-Lite (?)
++      0610  Dino-Lite Digital Microscope (SN9C201 + HV7131R)
++      0611  Dino-Lite Digital Microscope (SN9C201 + HV7131R)
++      0612  Dino-Lite Digital Microscope (SN9C120 + HV7131R)
++      0613  Dino-Lite Digital Microscope (SN9C201 + HV7131R)
++      0614  Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111)
++      0615  Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111)
++      0616  Dino-Lite Digital Microscope (SN9C120 + HV7131R)
++      0617  Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111)
++      0618  Dino-Lite Digital Microscope (SN9C201 + HV7131R)
++a168  AnMo Electronics Corporation
++      0610  Dino-Lite Digital Microscope
++      0611  Dino-Lite Digital Microscope
++      0613  Dino-Lite Digital Microscope
++      0614  Dino-Lite Pro Digital Microscope
++      0615  Dino-Lite Pro Digital Microscope
++      0617  Dino-Lite Pro Digital Microscope
++      0618  Dino-Lite Digital Microscope
+ a600  Asix
+       e110  OK1ZIA Davac 4.x
+ a727  3Com
+@@ -12109,8 +12824,24 @@
+       cdee  Petcam
+ c251  Keil Software, Inc.
+       2710  ULink
++cace  CACE Technologies Inc.
++      0002  AirPCAP Classic 802.11 packet capture adapter
+ d209  Ultimarc
+       0301  I-PAC Arcade Control Interface
++      0501  Ultra-Stik Ultimarc Ultra-Stik Player 1
++e4e4  Xorcom Ltd.
++      1130  Astribank series
++      1131  Astribank series
++      1132  Astribank series
++      1140  Astribank series
++      1141  Astribank series
++      1142  Astribank series
++      1150  Astribank series
++      1151  Astribank series
++      1152  Astribank series
++      1160  Astribank 2 series
++      1161  Astribank 2 series
++      1162  Astribank 2 series
+ eb03  MakingThings
+       0920  Make Controller Kit
+ eb1a  eMPIA Technology, Inc.
+@@ -12124,6 +12855,7 @@
+       2870  Pinnacle PCTV Stick
+       50a3  Gadmei UTV380 TV Box
+       50a6  Gadmei UTV330 TV Box
++eb2a  KWorld
+ f003  Hewlett Packard
+       6002  PhotoSmart C500
+@@ -12333,38 +13065,33 @@
+ # Syntax:
+ # R item_type  item_type_name
+-# Main Items
+-R 80  Input
+-R 90  Output
+-R b0  Feature
+-R a0  Collection
+-R c0  End Collection
+-
+-# Global Items
+ R 04  Usage Page
++R 08  Usage
+ R 14  Logical Minimum
++R 18  Usage Minimum
+ R 24  Logical Maximum
++R 28  Usage Maximum
+ R 34  Physical Minimum
++R 38  Designator Index
+ R 44  Physical Maximum
++R 48  Designator Minimum
+ R 54  Unit Exponent
++R 58  Designator Maximum
+ R 64  Unit
+ R 74  Report Size
+-R 84  Report ID
+-R 94  Report Count
+-R a4  Push
+-R b4  Pop
+-
+-# Local Items
+-R 08  Usage
+-R 18  Usage Minimum
+-R 28  Usage Maximum
+-R 38  Designator Index
+-R 48  Designator Minimum
+-R 58  Designator Maximum
+ R 78  String Index
++R 80  Input
++R 84  Report ID
+ R 88  String Minimum
++R 90  Output
++R 94  Report Count
+ R 98  String Maximum
++R a0  Collection
++R a4  Push
+ R a8  Delimiter
++R b0  Feature
++R b4  Pop
++R c0  End Collection
+ # List of Physical Descriptor Bias Types
+@@ -12559,9 +13286,9 @@
+       034  Stick Face Angle
+       035  Stick Heel/Toe
+       036  Stick Follow Through
+-      047  Stick Temp
+       038  Stick Type
+       039  Stick Height
++      047  Stick Temp
+       050  Putter
+       051  1 Iron
+       052  2 Iron
+@@ -13698,7 +14425,7 @@
+       01  Bokmal
+       02  Nynorsk
+ L 0015  Polish
+-L 0016        Portuguese
++L 0016  Portuguese
+       01  Portuguese
+       02  Brazilian
+ L 0017  forgotten
diff --git a/update-usbids.sh.in b/update-usbids.sh.in
new file mode 100755 (executable)
index 0000000..4a487ed
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+# see also update-pciids.sh (fancier)
+
+[ "$1" = "-q" ] && quiet="true" || quiet="false"
+
+set -e
+SRC="http://www.linux-usb.org/usb.ids"
+DEST=@usbids@
+
+# if usb.ids is read-only (because the filesystem is read-only),
+# then just skip this whole process.
+if ! touch ${DEST} >&2 >/dev/null ; then
+       ${quiet} || echo "${DEST} is read-only, exiting."
+       exit 0
+fi
+
+if which wget >/dev/null 2>&1 ; then
+       DL="wget -O $DEST.new $SRC"
+       ${quiet} && DL="$DL -q"
+elif which lynx >/dev/null 2>&1 ; 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
+       # --reference is supported only by chmod from GNU file, so let's ignore any errors
+       chmod -f --reference=$DEST.old $DEST.new 2>/dev/null || true
+fi
+mv $DEST.new $DEST
+
+${quiet} || echo "Done."
diff --git a/usb-devices b/usb-devices
new file mode 100755 (executable)
index 0000000..b2052e2
--- /dev/null
@@ -0,0 +1,172 @@
+#!/bin/bash
+
+# Copyright: 2009 Greg Kroah-Hartman <greg@kroah.com>
+#            2009 Randy Dunlap <rdunlap@xenotime.net>
+#            2009 Frans Pop <elendil@planet.nl>
+#
+# This software may be used and distributed according to the terms of
+# the GNU General Public License (GPL), version 2, or at your option
+# any later version.
+
+print_string() {
+       file=$1
+       name=$2
+       if [ -f $file ]; then
+               echo "S:  $name=`cat $file`"
+       fi
+}
+
+class_decode() {
+       local class=$1          # v4: in hex
+
+       case $class in
+       "00") echo ">ifc " ;;
+       "01") echo "audio" ;;
+       "02") echo "commc" ;;
+       "03") echo "HID  " ;;
+       "05") echo "PID  " ;;
+       "06") echo "still" ;;
+       "07") echo "print" ;;
+       "08") echo "stor." ;;
+       "09") echo "hub  " ;;
+       "0a") echo "data " ;;
+       "0b") echo "scard" ;;
+       "0d") echo "c-sec" ;;
+       "0e") echo "video" ;;
+       "0f") echo "perhc" ;;
+       "dc") echo "diagd" ;;
+       "e0") echo "wlcon" ;;
+       "ef") echo "misc " ;;
+       "fe") echo "app. " ;;
+       "ff") echo "vend." ;;
+       "*")  echo "unk. " ;;
+       esac
+}
+
+print_endpoint() {
+       local eppath=$1
+
+       addr=`cat $eppath/bEndpointAddress`
+       attr=`cat $eppath/bmAttributes`
+       dir=`cat $eppath/direction`
+       eptype=`cat $eppath/type`
+       maxps_hex="0x`cat $eppath/wMaxPacketSize`"
+       # Extract MaxPS size (bits 0-10) and multiplicity values (bits 11-12)
+       maxps=`printf "%4i*%s\n" $(($maxps_hex & 0x7ff)) \
+                               $((1 + (($maxps_hex >> 11) & 0x3)))`
+       interval=`cat $eppath/interval`
+
+       printf "E:  Ad=%s(%s) Atr=%s(%s) MxPS=%s Ivl=%s\n" \
+               $addr $dir $attr $eptype "$maxps" $interval
+}
+
+print_interface() {
+       local ifpath=$1
+
+       ifnum=`cat $ifpath/bInterfaceNumber`
+       altset=`cat $ifpath/bAlternateSetting`
+       numeps=`cat $ifpath/bNumEndpoints`
+       class=`cat $ifpath/bInterfaceClass`
+       subclass=`cat $ifpath/bInterfaceSubClass`
+       protocol=`cat $ifpath/bInterfaceProtocol`
+       if [ -L $ifpath/driver ]; then          # v4: allow for no driver
+               driver=`readlink $ifpath/driver`
+               driver=`basename $driver`
+       else
+               driver="(none)"
+       fi
+       classname=`class_decode $class`
+       printf "I:  If#=%2i Alt=%2i #EPs=%2i Cls=%s(%s) Sub=%s Prot=%s Driver=%s\n" \
+               $ifnum $altset $numeps $class "$classname" $subclass \
+               $protocol $driver
+
+       for endpoint in $ifpath/ep_??
+       do
+               if [ -L $endpoint ]; then       # v4: verify endpoint exists
+                       print_endpoint $endpoint
+               fi
+       done
+}
+
+print_device() {
+       local devpath=$1
+       local parent=$2
+       local level=$3
+       local count=$4
+
+       [ -d $devpath ] || return
+       cd $devpath
+
+       local busnum=`cat busnum`
+       local devnum=`cat devnum`
+
+       if [ $level -gt 0 ]; then
+               port=$((${devpath##*[-.]} - 1))
+       else
+               port=0
+       fi
+       speed=`cat speed`
+       maxchild=`cat maxchild`
+       printf "\nT:  Bus=%02i Lev=%02i Prnt=%02i Port=%02i Cnt=%02i Dev#=%3i Spd=%-3s MxCh=%2i\n" \
+               $busnum $level $parent $port $count $devnum $speed $maxchild
+
+       ver=`cat version`
+       devclass=`cat bDeviceClass`
+       devsubclass=`cat bDeviceSubClass`
+       devprotocol=`cat bDeviceProtocol`
+       maxps0=`cat bMaxPacketSize0`
+       numconfigs=`cat bNumConfigurations`
+       classname=`class_decode $devclass`
+       printf "D:  Ver=%5s Cls=%s(%s) Sub=%s Prot=%s MxPS=%2i #Cfgs=%3i\n" \
+               $ver $devclass "$classname" $devsubclass $devprotocol \
+               $maxps0 $numconfigs
+
+       vendid=`cat idVendor`
+       prodid=`cat idProduct`
+       revmajor=`cat bcdDevice | cut -c 1-2`
+       revminor=`cat bcdDevice | cut -c 3-4`
+       printf "P:  Vendor=%s ProdID=%s Rev=%s.%s\n" \
+               $vendid $prodid $revmajor $revminor
+
+       print_string manufacturer "Manufacturer"
+       print_string product Product
+       print_string serial SerialNumber
+
+       numifs=`cat bNumInterfaces`
+       cfgnum=`cat bConfigurationValue`
+       attr=`cat bmAttributes`
+       maxpower=`cat bMaxPower`
+       printf "C:  #Ifs=%2i Cfg#=%2i Atr=%s MxPwr=%s\n" \
+               $numifs $cfgnum $attr $maxpower
+
+       # There's not really any useful info in endpoint 00
+       #print_endpoint $devpath/ep_00
+
+       for interface in $busnum-*:?.*
+       do
+               print_interface $devpath/$interface
+       done
+
+       local devcount=0
+       for subdev in $busnum-*
+       do
+               echo "$subdev" | grep -Eq "^$busnum-[0-9]+(\.[0-9]+)*$" \
+                       || continue
+
+               devcount=$(($devcount + 1))
+               if [ -d $devpath/$subdev ]; then
+                       print_device $devpath/$subdev \
+                               $devnum $(($level +1)) $devcount
+               fi
+       done
+}
+
+if [ ! -d /sys/bus ]; then
+       echo "Error: directory /sys/bus does not exist; is sysfs mounted?" >&2
+       exit 1
+fi
+
+for device in /sys/bus/usb/devices/usb*
+do
+       print_device $device 0 0 0
+done
diff --git a/usb-devices.1.in b/usb-devices.1.in
new file mode 100644 (file)
index 0000000..35f9bbb
--- /dev/null
@@ -0,0 +1,51 @@
+.TH usb-devices 1 "23 June 2009" "usbutils-VERSION" "Linux USB Utilities"
+.IX usb-devices
+.SH NAME
+usb-devices \- print USB device details
+.SH SYNOPSIS
+.B usb-devices
+
+.SH DESCRIPTION
+.B usb-devices
+is a (bash) shell script that can be used to display details of USB
+buses in the system and the devices connected to them.
+
+The output of the script is similar to the \fIusb/devices\fP file
+available either under \fI/proc/bus\fP (if usbfs is mounted), or under
+\fI/sys/kernel/debug\fP (if debugfs is mounted there). The script is
+primairily intended to be used if the file is not available.
+
+In contrast to the \fIusb/devices\fP file, this script only lists
+\fIactive\fP interfaces (those marked with a "*" in the \fIusb/devices\fP
+file) and their endpoints.
+
+Be advised that there can be differences in the way information is sorted,
+as well as in the format of the output.
+
+.SH RETURN VALUE
+If sysfs is not mounted, a non-zero exit code is returned.
+
+.SH FILES
+.TP
+.B /sys/bus/usb/devices/usb*
+The part of the sysfs tree the script walks through to assemble the
+printed information.
+.TP
+.B /proc/bus/usb/devices
+Location where the \fIusb/devices\fP file can normally be found for
+Linux kernels before 2.6.31, if usbfs is mounted.
+.TP
+.B /sys/kernel/debug/usb/devices
+Location where the \fIusb/devices\fP file can normally be found for
+Linux kernel 2.6.31 and later, if debugfs is mounted.
+
+.SH SEE ALSO
+.BR lsusb (8),
+.BR usbview (8).
+
+.SH AUTHORS
+Greg Kroah-Hartman <greg@kroah.com>
+.P
+Randy Dunlap <rdunlap@xenotime.net>
+.P
+Frans Pop <elendil@planet.nl>
diff --git a/usb.ids b/usb.ids
new file mode 100644 (file)
index 0000000..92bc8d1
--- /dev/null
+++ b/usb.ids
@@ -0,0 +1,14557 @@
+#
+#      List of USB ID's
+#
+#      Maintained by Stephen J. Gowdy <linux.usb.ids@gmail.com>
+#      If you have any new entries, please submit then via
+#              http://www.linux-usb.org/usb-ids.html
+#      or send entries as patches (diff -u old new) in the
+#      body of your email (a bot will attempt to deal with it).
+#      The latest version can be obtained from
+#              http://www.linux-usb.org/usb.ids
+#
+# Version: 2010.02.11
+# Date:    2010-02-11 20:34:12
+#
+
+# Vendors, devices and interfaces. Please keep sorted.
+
+# Syntax:
+# vendor  vendor_name
+#      device  device_name                             <-- single tab
+#              interface  interface_name               <-- two tabs
+
+0001  Fry's Electronics
+0002  Ingram
+0003  Club Mac
+0004  Nebraska Furniture Mart
+0053  Planex
+       5301  GW-US54ZGL 802.11bg
+0079  DragonRise Inc.
+       0006  Generic USB Joystick
+0105  Unknown
+       145f  802.11bg
+0145  Unknown
+       0112  Card Reader
+0204  Chipsbank Microelectronics Co., Ltd
+       6025  CBM2080 Flash drive controller
+       6026  CBM1180 Flash drive controller
+02ad  HUMAX Co., Ltd.
+       138c  PVR Mass Storage
+0324  OCZ Technology Inc
+       bc06  OCZ ATV USB 2.0 Flash Drive
+       bc08  OCZ Rally2/ATV USB 2.0 Flash Drive
+0325  OCZ Technology Inc
+       ac02  ATV Turbo / Rally2 Dual Channel USB 2.0 Flash Drive
+0386  LTS
+       0001  PSX for USB Converter
+03e8  EndPoints, Inc.
+       0004  SE401 Webcam
+       0008  101 Ethernet [klsi]
+       0015  ATAPI Enclosure
+       2123  SiPix StyleCam Deluxe
+       8004  Aox 99001
+03e9  Thesys Microelectronics
+03ea  Data Broadcasting Corp.
+03eb  Atmel Corp.
+       0902  4-Port Hub
+       2002  Mass Storage Device
+       2015  at90usbkey sample firmware (HID keyboard)
+       2018  at90usbkey sample firmware (CDC ACM)
+       2019  stk525 sample firmware (microphone)
+       201c  at90usbkey sample firmware (HID mouse)
+       201d  at90usbkey sample firmware (HID generic)
+       2022  at90usbkey sample firmware (composite device)
+       2103  JTAG ICE mkII
+       2104  AVR ISP mkII
+       2106  STK600 development board
+       2107  AVR Dragon
+       2ffb  at90usb AVR DFU bootloader
+       2ffd  at89c5130/c5131 DFU bootloader
+       2fff  at89c5132/c51snd1c DFU bootloader
+       3301  at43301 4-Port Hub
+       3312  4-Port Hub
+       5601  at76c510 Prism-II 802.11b Access Point
+       5603  Cisco 7920 WiFi IP Phone
+       6124  at91sam SAMBA bootloader
+       7603  at76c503a D-Link DWL-120 802.11b Adapter
+       7604  FastVNET
+       7605  at76c503a 802.11b Adapter
+       7606  at76c505 802.11b Adapter
+       7611  at76c510 rfmd2948 802.11b Access Point
+       7613  WL-1130 USB
+       7614  AT76c505a Wireless Adapter
+       ff07  Tux Droid fish dongle
+03ec  Iwatsu America, Inc.
+03ed  Mitel Corp.
+03ee  Mitsumi
+       0000  CD-R/RW Drive
+       2501  eHome Infrared Receiver
+       2502  eHome Infrared Receiver
+       5609  Japanese Keyboard
+       641f  WIF-0402C Bluetooth Adapter
+       6438  Bluetooth Device
+       6440  WML-C52APR Bluetooth Adapter
+       6901  SmartDisk FDD
+       6902  Floppy Disk Drive
+       7500  CD-R/RW
+       ffff  Dongle with BlueCore in DFU mode
+03f0  Hewlett-Packard
+       0004  DeskJet 895c
+       0011  OfficeJet G55
+       0012  DeskJet 1125C Printer Port
+       0024  KU-0316 Keyboard
+       0101  ScanJet 4100c
+       0102  PhotoSmart S20
+       0104  DeskJet 880c/970c
+       0105  ScanJet 4200c
+       0107  CD-Writer Plus
+       010c  Multimedia Keyboard Hub
+       0111  G55xi Printer/Scanner/Copier
+       0117  LaserJet 3200
+       011c  hn210w 802.11b Adapter
+       011d  Integrated Bluetooth Module
+       0121  HP49g+ Calculator
+       0122  HID Internet Keyboard
+       0201  ScanJet 6200c
+       0202  PhotoSmart S20
+       0204  DeskJet 815c
+       0205  ScanJet 3300c
+       0207  CD-Writer Plus 8200e
+       020c  Multimedia Keyboard
+       0211  OfficeJet G85
+       0212  DeskJet 1220C
+       0217  LaserJet 2200
+       0218  APOLLO P2500/2600
+       0304  DeskJet 810c/812c
+       0305  ScanJet 4300c
+       0307  CD-Writer+ CD-4e
+       0311  OfficeJet G85xi
+       0312  Color Inkjet CP1700
+       0314  designjet 30/130 series
+       0317  LaserJet 1200
+       0324  SK-2885 keyboard
+       0401  ScanJet 5200c
+       0404  DeskJet 830c/832c
+       0405  ScanJet 3400cse
+       0411  OfficeJet G95
+       0412  Printing Support
+       0417  LaserJet 1200 series
+       0423  HS-COMBO
+       0504  DeskJet 885c
+       0505  ScanJet 2100c
+       0507  DVD+RW
+       050c  5219 Wireless Keyboard
+       0511  OfficeJet K60
+       0512  DeckJet 450
+       0517  LaserJet 1000
+       051d  integrated module with Bluetooth wireless technology.
+       0601  ScanJet 6300c
+       0604  DeskJet 840c
+       0605  ScanJet 2200c
+       0611  OfficeJet K60xi
+       0612  business inkjet 3000
+       0624  Bluetooth Dongle
+       0701  ScanJet 5300c/5370c
+       0704  DeskJet 825c
+       0705  ScanJet 4400c
+       0711  OfficeJet K80
+       0712  DeskJet 1180c
+       0714  Printing Support
+       0801  ScanJet 7400c
+       0804  DeskJet 816c
+       0805  HP4470C
+       0811  OfficeJet K80xi
+       0817  LaserJet 3300
+       0901  ScanJet 2300c
+       0904  DeskJet 845c
+       0912  Printing Support
+       0917  LaserJet 3330
+       0924  Modular Smartcard Keyboard
+       0a01  ScanJet 2400c
+       0a17  color LaserJet 3700
+       0b01  ScanJet 82x0C
+       0b0c  Wireless Keyboard and Optical Mouse receiver
+       0b17  LaserJet 2300d
+       0c17  LaserJet 1010
+       0c24  Bluetooth Dongle
+       0d12  OfficeJet 9100 series
+       0d17  LaserJet 1012
+       0e17  LaserJet 1015
+       0f0c  Wireless Keyboard and Optical Mouse receiver
+       0f11  OfficeJet V40
+       0f12  Printing Support
+       0f17  LaserJet 1150
+       1001  Photo Scanner 1000
+       1002  PhotoSmart 140 series
+       1004  DeskJet 970c/970cse
+       1005  ScanJet 5400c
+       1011  OfficeJet V40xi
+       1016  Jornada 548 / iPAQ HW6515 Pocket PC
+       1017  LaserJet 1300
+       1024  Smart Card Keyboard
+       1102  PhotoSmart 240 series
+       1104  DeskJet 959c
+       1105  ScanJet 5470c
+       1111  OfficeJet v60
+       1116  Jornada 568 Pocket PC
+       1117  LaserJet 1300n
+       1151  PSC-750xi Printer/Scanner/Copier
+       1202  PhotoSmart 320 series
+       1204  DeskJet 930c
+       1205  ScanJet 4500C/5550C
+       1211  OfficeJet v60xi
+       1217  LaserJet 2300L
+       1302  PhotoSmart 370 series
+       1305  ScanJet 4570c
+       1311  OfficeJet V30
+       1312  DeskJet 460
+       1317  LaserJet 1005
+       1405  ScanJet 3670
+       1411  PSC 750
+       1424  f2105 Monitor Hub
+       1502  PhotoSmart 420 series
+       1504  DeskJet 920c
+       1511  PSC 750xi
+       1512  Printing Support
+       1517  color LaserJet 3500
+       1524  Smart Card Keyboard - KR
+       1602  PhotoSmart 330 series
+       1604  DeskJet 940c
+       1605  ScanJet 5530C PhotoSmart
+       1611  psc 780
+       1617  LaserJet 3015
+       161d  Wireless Rechargeable Optical Mouse (HID)
+       1624  Smart Card Keyboard - JP
+       1702  PhotoSmart 380 series
+       1704  DeskJet 948C
+       1705  ScanJet 5590
+       1711  psc 780xi
+       1712  Printing Support
+       1717  LaserJet 3020
+       171d  Wireless (Bluetooth + WLAN) Interface [Integrated Module]
+       1801  Inkjet P-2000U
+       1802  PhotoSmart 470 series
+       1804  DeskJet 916C
+       1805  ScanJet 7650
+       1811  PSC 720
+       1817  LaserJet 3030
+       181d  integrated module with Bluetooth 2.0 wireless technology.
+       1902  PhotoSmart A430 series
+       1904  DeskJet 3820
+       1911  OfficeJet V45
+       1917  LaserJet 3380
+       1a02  PhotoSmart A510 series
+       1a11  OfficeJet 5100 series
+       1a17  color LaserJet 4650
+       1b02  PhotoSmart A610 series
+       1b04  DeskJet 3810
+       1b05  ScanJet 4850C/4890C
+       1c02  PhotoSmart A710 series
+       1c17  Color LaserJet 2550l
+       1d02  PhotoSmart A310 series
+       1d17  LaserJet 1320
+       1e02  PhotoSmart A320 Printer series
+       1e11  PSC-950
+       1e17  LaserJet 1160 series
+       1f02  PhotoSmart A440 Printer series
+       1f11  PSC 920
+       1f12  OfficeJet Pro K5300
+       1f17  color LaserJet 5550
+       2001  Floppy
+       2002  Hub
+       2004  DeskJet 640c
+       2005  ScanJet 3570c
+       2012  OfficeJet Pro K5400
+       2102  PhotoSmart 7345
+       2104  DeskJet 630c
+       2112  OfficeJet Pro L7500
+       2202  PhotoSmart 7600 series
+       2205  ScanJet 3500c
+       2212  OfficeJet Pro L7600
+       2217  color LaserJet 9500 MFP
+       2302  PhotoSmart 7600 series
+       2304  DeskJet 656c
+       2305  ScanJet 3970c
+       2311  OfficeJet d series
+       2312  OfficeJet Pro L7700
+       2317  LaserJet 4350
+       2402  PhotoSmart 7700 series
+       2405  ScanJet 4070 PhotoSmart
+       2417  LaserJet 4250
+       2424  LP1965 19" Monitor Hub
+       2502  PhotoSmart 7700 series
+       2505  ScanJet 3770
+       2512  OfficeJet Pro L7300
+       2517  LaserJet 2410
+       2524  LP3065 30" Monitor Hub
+       2602  PhotoSmart A520 series
+       2605  ScanJet 3800c
+       2611  OfficeJet 7100 series
+       2617  Color LaserJet 2820 series
+       2624  Pole Display (HP522 2 x 20 Line Display)
+       2702  PhotoSmart A620 series
+       2704  DeskJet 915
+       2717  Color LaserJet 2830
+       2811  PSC-2100
+       2817  Color LaserJet 2840
+       2902  PhotoSmart A820 series
+       2911  PSC 2200
+       2917  LaserJet 2420
+       2a11  PSC 2150 series
+       2a17  LaserJet 2430
+       2b11  PSC 2170 series
+       2b17  LaserJet 1020
+       2c12  Officejet J4680
+       2c17  Printing Support
+       2c24  Logitech M-UAL-96 Mouse
+       2d11  OfficeJet 6110
+       2d17  Printing Support
+       2e11  PSC 1000
+       2e17  Printing Support
+       2e24  LP2275w Monitor Hub
+       2f11  PSC 1200
+       2f17  EWS 2605dn
+       3002  PhotoSmart P1000
+       3004  DeskJet 980c
+       3005  ScanJet 4670v
+       3011  PSC 1100 series
+       3017  Printing Support
+       3102  PhotoSmart P1100 Printer w/ Card Reader
+       3104  DeskJet 960c
+       3111  OfficeJet 4100 series
+       3117  EWS 2605dtn
+       3202  PhotoSmart 1215
+       3211  OfficeJet 4105 series
+       3217  LaserJet 3050
+       3302  PhotoSmart 1218
+       3304  DeskJet 990c
+       3312  OfficeJet J6410
+       3317  LaserJet 3052
+       3402  PhotoSmart 1115
+       3404  DeskJet 6122
+       3417  LaserJet 3055
+       3502  PhotoSmart 230
+       3504  DeskJet 6127c
+       3511  PSC 2300
+       3517  LaserJet 3390
+       3602  PhotoSmart 1315
+       3611  PSC 2410 PhotoSmart
+       3617  EWS 2605
+       3711  PSC 2500
+       3717  EWS UPD
+       3724  Webcam
+       3802  PhotoSmart 100
+       3817  LaserJet P2015 series
+       3902  PhotoSmart 130
+       3a02  PhotoSmart 7150
+       3a11  OfficeJet 5500 series
+       3a17  Printing Support
+       3b02  PhotoSmart 7150~
+       3b11  PSC 1300 series
+       3b17  LaserJet M1005 MFP
+       3c02  PhotoSmart 7350
+       3c11  PSC 1358
+       3c17  EWS UPD
+       3d02  PhotoSmart 7350~
+       3d11  OfficeJet 4215
+       3d17  LaserJet P1005
+       3e02  PhotoSmart 7550
+       3e17  LaserJet P1006
+       3f02  PhotoSmart 7550~
+       3f11  PSC-1315/PSC-1317
+       4002  PhotoSmart 720 / PhotoSmart 935 (storage)
+       4004  cp1160
+       4102  PhotoSmart 618
+       4105  ScanJet 4370
+       4111  OfficeJet 7200 series
+       4117  Printing Support
+       4202  PhotoSmart 812
+       4205  ScanJet G3010
+       4211  OfficeJet 7300 series
+       4217  EWS CM1015
+       4302  PhotoSmart 850 (ptp)
+       4311  OfficeJet 7400 series
+       4317  Color LaserJet CM1017
+       4402  PhotoSmart 935 (ptp)
+       4417  EWS UPD
+       4502  PhotoSmart 945 (PTP mode)
+       4505  ScanJet G4010
+       4511  PhotoSmart 2600
+       4517  EWS UPD
+       4605  ScanJet G4050
+       4611  PhotoSmart 2700
+       4811  PSC 1600
+       4911  PSC 2350
+       4b11  OfficeJet 6200
+       4c11  PSC 1500 series
+       4c17  EWS UPD
+       4d11  PSC 1400
+       4d17  EWS UPD
+       4e11  PhotoSmart 2570 series
+       4f11  OfficeJet 5600 (USBHUB)
+       5004  DeskJet 995c
+       5011  PhotoSmart 3100 series
+       5017  EWS UPD
+       5111  PhotoSmart 3200 series
+       5211  PhotoSmart 3300 series
+       5311  OfficeJet 6300
+       5411  OfficeJet 4300
+       5511  DeskJet F300 series
+       5611  PhotoSmart C3180
+       5617  LaserJet M1120 MFP
+       5711  PhotoSmart C4100 series
+       5717  LaserJet M1120n MFP
+       5811  PhotoSmart C5100 series
+       5817  LaserJet M1319f MFP
+       5911  PhotoSmart C6180
+       5a11  PhotoSmart C7100 series
+       5b11  OfficeJet J2100 series
+       5c11  PhotoSmart C4200 Printer series
+       5d11  PhotoSmart C5200 series
+       5e11  PhotoSmart D7400 series
+       6004  DeskJet 5550
+       6102  Hewlett Packard Digital Camera
+       6104  DeskJet 5650c
+       6117  color LaserJet 3550
+       6202  PhotoSmart 215
+       6204  DeskJet 5150c
+       6217  Color LaserJet 4700
+       6302  PhotoSmart 318/612
+       6317  Color LaserJet 4730mfp
+       6402  PhotoSmart 715 (ptp)
+       6411  PhotoSmart C8100 series
+       6417  LaserJet 5200
+       6502  PhotoSmart 120 (ptp)
+       6511  PhotoSmart C7200 series
+       6602  PhotoSmart 320
+       6611  PhotoSmart C4380 series
+       6617  LaserJet 5200L
+       6702  PhotoSmart 720 (ptp)
+       6717  Color LaserJet 3000
+       6802  PhotoSmart 620 (ptp)
+       6811  PhotoSmart D5300 series
+       6817  Color LaserJet 3800
+       6911  PhotoSmart D7200 series
+       6917  Color LaserJet 3600
+       6a02  PhotoSmart 735 (ptp)
+       6a11  PhotoSmart C6200 series
+       6a17  LaserJet 4240
+       6b02  PhotoSmart R707 (PTP mode)
+       6b11  Photosmart C4500 series
+       6c17  Color LaserJet 4610
+       6f17  Color LaserJet CP6015 series
+       7004  DeskJet 3320c
+       7102  PhotoSmart 635 (PTP mode)
+       7104  DeskJet 3420c
+       7117  CM8060 Color MFP with Edgeline Technology
+       7202  PhotoSmart 43x (ptp)
+       7204  DeskJet 36xx
+       7217  LaserJet M5035 MFP
+       7302  PhotoSmart M307 (PTP mode)
+       7304  DeskJet 35xx
+       7317  LaserJet P3005
+       7404  Printing Support
+       7417  LaserJet M4345 MFP
+       7504  Printing Support
+       7517  LaserJet M3035 MFP
+       7604  DeskJet 3940
+       7617  LaserJet P3004
+       7702  PhotoSmart R817 (PTP mode)
+       7704  DeskJet D4100
+       7717  CM8050 Color MFP with Edgeline Technology
+       7804  DeskJet D1360
+       7817  Color LaserJet CP3505
+       7917  LaserJet M5025 MFP
+       7a02  PhotoSmart M415 (PTP mode)
+       7a17  LaserJet M3027 MFP
+       7b02  PhotoSmart M23 (PTP mode)
+       7b17  Color LaserJet CP4005
+       7c17  Color LaserJet CM6040 series
+       7d04  DeskJet F2100 Printer series
+       7d17  Color LaserJet CM4730 MFP
+       7e04  DeskJet F4100 Printer series
+       8017  LaserJet P4515
+       8104  Printing Support
+       8117  LaserJet P4015
+       811c  Ethernet HN210E
+       8204  Printing Support
+       8217  LaserJet P4014
+       8317  LaserJet M9050 MFP
+       8404  DeskJet 6800 series
+       8417  LaserJet M9040 MFP
+       8504  DeskJet 6600 series
+       8604  DeskJet 5440
+       8704  DeskJet 5940
+       8804  DeskJet 6980 series
+       8904  DeskJet 6940 series
+       9002  PhotoSmart M437
+       9102  PhotoSmart M537
+       9302  PhotoSmart R930 series
+       9402  PhotoSmart R837
+       9502  PhotoSmart R840 series
+       9602  PhotoSmart M730 series
+       9702  PhotoSmart R740 series
+       9802  PhotoSmart Mz60 series
+       9902  PhotoSmart M630 series
+       9a02  PhotoSmart E330 series
+       9b02  PhotoSmart M540 series
+       9c02  PhotoSmart M440 series
+       a004  DeskJet 5850c
+       b002  PhotoSmart 7200 series
+       b102  PhotoSmart 7200 series
+       b116  Webcam
+       b202  PhotoSmart 7600 series
+       b302  PhotoSmart 7600 series
+       b402  PhotoSmart 7700 series
+       b502  PhotoSmart 7700 series
+       b602  PhotoSmart 7900 series
+       b702  PhotoSmart 7900 series
+       b802  PhotoSmart 7400 series
+       b902  PhotoSmart 7800 series
+       ba02  PhotoSmart 8100 series
+       bb02  PhotoSmart 8400 series
+       bc02  PhotoSmart 8700 series
+       bd02  PhotoSmart Pro B9100 series
+       bef4  NEC Picty760
+       c002  PhotoSmart 7800 series
+       c102  PhotoSmart 8000 series
+       c202  PhotoSmart 8200 series
+       c302  DeskJet D2300
+       c402  PhotoSmart D5100 series
+       c502  PhotoSmart D6100 series
+       c602  PhotoSmart D7100 series
+       c702  PhotoSmart D7300 series
+       c802  PhotoSmart D5060 Printer
+       d104  Bluetooth Dongle
+       efbe  NEC Picty900
+       f0be  NEC Picty920
+       f1be  NEC Picty800
+03f1  Genoa Technology
+03f2  Oak Technology, Inc.
+03f3  Adaptec, Inc.
+       0020  AWN-8020 WLAN
+       0080  AVC-1100 Audio Capture
+       0083  AVC-2200 Device
+       0087  AVC-2210 Loader
+       0088  AVC-2210 Device
+       008b  AVC-2310 Loader
+       008c  AVC-2310 Device
+       0094  eHome Infrared Receiver
+       009b  AVC-1410 GameBridge TV NTSC
+       2000  USBXchange
+       2001  USBXchange Adapter
+       2002  USB2-Xchange
+       2003  USB2-Xchange Adapter
+       adcc  Composite Device Support
+03f4  Diebold, Inc.
+03f5  Siemens Electromechanical
+03f8  Epson Imaging Technology Center
+03f9  KeyTronic Corp.
+       0100  Keyboard
+       0101  Keyboard
+       0102  Keyboard Mouse
+03fb  OPTi, Inc.
+03fc  Elitegroup Computer Systems
+03fd  Xilinx, Inc.
+03fe  Farallon Comunications
+0400  National Semiconductor Corp.
+       05dc  Rigol Technologies DS1000USB Oscilloscope
+       0807  Bluetooth Dongle
+       080a  Bluetooth Device
+       1000  Mustek BearPaw 1200 Scanner
+       1001  Mustek BearPaw 2400 Scanner
+       1237  Hub
+       a000  Smart Display Reference Device
+       c35b  Printing Support
+       c55d  Rigol Technologies DS5000USB Oscilloscope
+0401  National Registry, Inc.
+0402  ALi Corp.
+       5462  M5462 IDE Controller
+       5602  Video Camera Controller
+       5603  USB 2.0 Q-tec Webcam 300
+       5606  USB 2.0 Camera
+       5621  USB 2.0 Storage Device
+       5623  VistaScan Astra 3600
+       5627  Welland ME-740PS USB2 3.5" Power Saving Enclosure
+       5632  USB 2.0 Host-to-Host Link
+       5635  USB 2.0 Flash Card Reader
+       5636  USB 2.0 Storage Device
+       5637  M5637 IDE Controller
+       5667  Music player
+0403  Future Technology Devices International, Ltd
+       0000  H4SMK 7 Port Hub
+       0232  Serial Converter
+       6001  FT232 USB-Serial (UART) IC
+       6007  Serial Converter
+       6008  Serial Converter
+       6009  Serial Converter
+       6010  FT2232C Dual USB-UART/FIFO IC
+       6011  FT4232H
+       8040  4 Port Hub
+       8070  7 Port Hub
+       8370  7 Port Hub
+       8371  PS/2 Keyboard And Mouse
+       8372  FT8U100AX Serial Port
+       bcd8  Stellaris Development Board
+       bcd9  Stellaris Evaluation Board
+       c630  lcd2usb interface
+       c7d0  RR-CirKits LocoBuffer-USB
+       c8b8  Alpermann+Velte MTD TCU
+       c8b9  Alpermann+Velte MTD TCU 1HE
+       c8ba  Alpermann+Velte Rubidium H1
+       c8bb  Alpermann+Velte Rubidium H3
+       c8bc  Alpermann+Velte Rubidium S1
+       c8bd  Alpermann+Velte Rubidium T1
+       c8be  Alpermann+Velte Rubidium D1
+       cc48  product FTDI TACTRIX_OPENPORT_13M 0xcc48 OpenPort 1.3 Mitsubishi
+       cc49  product FTDI TACTRIX_OPENPORT_13S 0xcc49 OpenPort 1.3 Subaru
+       cc4a  product FTDI TACTRIX_OPENPORT_13U 0xcc4a OpenPort 1.3 Universal
+       d010  SCS PTC-IIusb
+       d011  SCS Position-Tracker/TNC
+       d012  SCS DRAGON 1
+       d013  SCS DRAGON 1
+       d6f8  UNI Black BOX
+       e0d0  Total Phase Aardvark I2C/SPI analyzer
+       e700  Elster Unicom III Optical Probe
+       e888  Expert ISDN Control USB
+       e889  USB-RS232 OptoBridge
+       e88a  Expert mouseCLOCK USB II
+       e88b  Precision Clock MSF USB
+       e88c  Expert mouseCLOCK USB II HBG
+       ea90  Eclo 1-Wire Adapter
+       ed72  Hameg HM1508-2 Oscilloscope
+       f1a0  Asix PRESTO Programmer
+       f208  Papenmeier Braille-Display
+       f680  Suunto Sports Instrument
+       f918  Ant8 Logic Probe
+       fa00  Matrix Orbital USB Serial
+       fa01  Matrix Orbital MX2 or MX3
+       fa02  Matrix Orbital MX4 or MX5
+       fa03  Matrix Orbital VK/LK202 Family
+       fa04  Matrix Orbital VK/LK204 Family
+       fc08  Crystalfontz CFA-632 USB LCD
+       fc09  Crystalfontz CFA-634 USB LCD
+       fc0b  Crystalfontz CFA-633 USB LCD
+       fc0c  Crystalfontz CFA-631 USB LCD
+       fc0d  Crystalfontz CFA-635 USB LCD
+       fc82  SEMC DSS-20 SyncStation
+       fd48  ShipModul MiniPlex-4xUSB NMEA Multiplexer
+       fd49  ShipModul MiniPlex-4xUSB-AIS NMEA Multiplexer
+       ff08  ToolHouse LoopBack Adapter
+       ff18  Logbook Bus
+       ff19  Logbook Bus
+       ff1a  Logbook Bus
+       ff1b  Logbook Bus
+       ff1c  Logbook Bus
+       ff1d  Logbook Bus
+       ff1e  Logbook Bus
+       ff1f  Logbook Bus
+0404  NCR Corp.
+       0202  78XX Scanner
+       0203  78XX Scanner - Embedded System
+       0310  K590 Printer, Self-Service
+       0311  7167 Printer, Receipt/Slip
+       0312  7197 Printer Receipt
+       0320  5932-USB Keyboard
+       0321  5953-USB Dynakey
+       0322  5932-USB Enhanced Keyboard
+       0323  5932-USB Enhanced Keyboard, Flash-Recovery/Download
+       0324  5953-USB Enhanced Dynakey
+       0325  5953-USB Enhanced Dynakey Flash-Recovery/Download
+       0328  K016: USB-MSR ISO 3-track MSR: POS Standard (See HID pages)
+       0329  K018: USB-MSR JIS 2-Track MSR: POS Standard
+       032a  K016: USB-MSR ISO 3-Track MSR: HID Keyboard Mode
+       032b  K016/K018: USB-MSR Flash-Recovery/Download
+0405  Synopsys, Inc.
+0406  Fujitsu-ICL Computers
+0407  Fujitsu Personal Systems, Inc.
+0408  Quanta Computer, Inc.
+       030c  HP Webcam
+       3000  Optical dual-touch panel
+0409  NEC Corp.
+       0011  PC98 Series Layout Keyboard Mouse
+       0012  ATerm IT75DSU ISDN TA
+       0014  Japanese Keyboard
+       0019  109 Japanese Keyboard with Bus-Powered Hub
+       001a  PC98 Series Layout Keyboard with Bus-Powered Hub
+       0025  Mini Keyboard with Bus-Powered Hub
+       0027  MultiSync Monitor
+       002c  Clik!-USB Drive
+       0034  109 Japanese Keyboard with One-touch start buttons
+       003f  Wireless Keyboard with One-touch start buttons
+       0040  Floppy
+       004e  SuperScript 1400 Series
+       004f  Wireless Keyboard with One-touch start buttons
+       0058  HighSpeed Hub
+       0059  HighSpeed Hub
+       005a  HighSpeed Hub
+       006a  Conceptronic USB Harddisk Box
+       0081  SuperScript 1400 Series
+       0082  SuperScript 1400 Series
+       0094  Japanese Keyboard with One-touch start buttons
+       0095  Japanese Keyboard
+       00a9  AtermIT21L 128K Support Standard
+       00aa  AtermITX72 128K Support Standard
+       00ab  AtermITX62 128K Support Standard
+       00ac  AtermIT42 128K Support Standard
+       00ae  INSMATEV70G-MAX Standard
+       00af  AtermITX70 128K Support Standard
+       00b0  AtermITX80 128K Support Standard
+       00b2  AtermITX80D 128K Support Standard
+       00c0  Wireless Remocon
+       00f7  Smart Display PK-SD10
+       011d  e228 Mobile Phone
+       0203  HID Audio Controls
+       55aa  Hub
+       55ab  Hub [iMac/iTouch kbd]
+       8010  Intellibase Hub
+       8011  Intellibase Hub
+       efbe  P!cty 900 [HP DJ]
+       f0be  P!cty 920 [HP DJ 812c]
+040a  Kodak Co.
+       0001  DVC-323
+       0002  DVC-325
+       0100  DC-220
+       0110  DC-260
+       0111  DC-265
+       0112  DC-290
+       0120  DC-240
+       0121  DC-240 (PTP firmware)
+       0130  DC-280
+       0131  DC-5000
+       0132  DC-3400
+       0140  DC-4800
+       0160  DC4800
+       0170  DX3900
+       0200  Digital Camera
+       0300  EZ-200
+       0400  MC3
+       0402  Digital Camera
+       0403  Z7590
+       0500  DX3500
+       0510  DX3600
+       0525  DX3215
+       0530  DX3700
+       0535  EasyShare CX4230 Camera
+       0540  LS420
+       0550  DX4900
+       0555  DX4330
+       0560  CX4200
+       0565  CX4210
+       0566  CX4300
+       0567  LS753
+       0568  LS443
+       0569  LS663
+       0570  DX6340
+       0571  CX6330
+       0572  DX6440
+       0573  CX6230
+       0574  CX6200
+       0575  DX6490
+       0576  DX4530
+       0577  DX7630
+       0578  CX7300/CX7310
+       0579  CX7220
+       057a  CX7330
+       057b  CX7430
+       057c  CX7530
+       057d  DX7440
+       057e  C300
+       057f  DX7590
+       0580  Z730
+       0581  Digital Camera
+       0582  Digital Camera
+       0583  Digital Camera
+       0584  CX6445
+       0585  Digital Camera
+       0586  CX7525
+       0587  Digital Camera
+       0588  Digital Camera
+       0589  EasyShare C360
+       058a  C310
+       058b  Digital Camera
+       058c  C330
+       058d  C340
+       058e  V530
+       058f  V550
+       0590  Digital Camera
+       0591  Digital Camera
+       0592  Digital Camera
+       0593  Digital Camera
+       0594  Digital Camera
+       0595  Digital Camera
+       0596  Digital Camera
+       0597  Digital Camera
+       0598  Digital Camera
+       0599  Digital Camera
+       059a  Digital Camera
+       059b  Digital Camera
+       059c  Digital Camera
+       059d  Digital Camera
+       059e  Digital Camera
+       059f  Digital Camera
+       05a0  Digital Camera
+       05a1  Digital Camera
+       05a2  Digital Camera
+       05a3  Digital Camera
+       05a4  Digital Camera
+       05a5  Digital Camera
+       05a6  Digital Camera
+       05a7  Digital Camera
+       05a8  Digital Camera
+       05a9  Digital Camera
+       05aa  Digital Camera
+       05ab  Digital Camera
+       05ac  Digital Camera
+       05ad  Digital Camera
+       05ae  Digital Camera
+       05af  Digital Camera
+       05b0  Digital Camera
+       05b1  Digital Camera
+       05b2  Digital Camera
+       05b3  EasyShare Z710 Camera
+       05b4  Digital Camera
+       05b5  Digital Camera
+       05b6  Digital Camera
+       05b7  Digital Camera
+       05b8  Digital Camera
+       05b9  Digital Camera
+       05ba  Digital Camera
+       05bb  Digital Camera
+       05bc  Digital Camera
+       05bd  Digital Camera
+       05be  Digital Camera
+       05bf  Digital Camera
+       05c0  Digital Camera
+       05c1  Digital Camera
+       05c2  Digital Camera
+       05c3  Digital Camera
+       05c4  Digital Camera
+       05c5  Digital Camera
+       05d3  EasyShare M320 Camera
+       1001  EasyShare SV811 Digital Picture Frame
+       4000  InkJet Color Printer
+       410d  EasyShare G600 Printer Dock
+       5010  Wireless Adapter
+       5012  DBT-220 Bluetooth Adapter
+       6001  i30
+       6002  i40
+       6003  i50
+       6004  i60
+       6005  i80
+040b  Weltrend Semiconductor
+       6510  Weltrend Bar Code Reader
+       6520  XBOX Xploder
+       6533  Speed-Link Competition Pro
+040c  VTech Computers, Ltd
+040d  VIA Technologies, Inc.
+       3184  VNT VT6656 USB-802.11 Wireless LAN Adapter
+       6205  USB 2.0 Card Reader
+040e  MCCI
+040f  Echo Speech Corp.
+0411  MelCo., Inc.
+       0001  LUA-TX Ethernet [pegasus]
+       0005  LUA-TX Ethernet
+       0006  WLI-USB-L11 Wireless LAN Adapter
+       0009  LUA2-TX Ethernet
+       000b  WLI-USB-L11G-WR Wireless LAN Adapter
+       000d  WLI-USB-L11G Wireless LAN Adapter
+       0012  LUA-KTX Ethernet
+       0013  USB2-IDE Adapter
+       0016  WLI-USB-S11 802.11b Adapter
+       0018  USB2-IDE Adapter
+       001c  USB-IDE Bridge: DUB-PxxG
+       0027  WLI-USB-KS11G 802.11b Adapter
+       003d  LUA-U2-KTX Ethernet
+       0044  WLI-USB-KB11 Wireless LAN Adapter
+       004d  WLI-USB-B11 Wireless LAN Adapter
+       0050  WLI2-USB2-G54 Wireless LAN Adapter
+       005e  WLI-U2-KG54-YB WLAN
+       0065  Python2 WDM Encoder
+       0066  WLI-U2-KG54 WLAN
+       0067  WLI-U2-KG54-AI WLAN
+       0089  Buffalo RUF-C/U2 Flash Drive
+       008b  Nintendo Wi-Fi
+       0091  WLI-U2-KAMG54 Wireless LAN Adapter
+       0092  WLI-U2-KAMG54 Bootloader
+       0097  WLI-U2-KG54-BB
+       00a9  WLI-U2-AMG54HP Wireless LAN Adapter
+       00aa  WLI-U2-AMG54HP Bootloader
+       00b3  PC-OP-RS1 RemoteStation
+       00ca  802.11n Network Adapter
+       00cb  WLI-U2-G300N 802.11n Adapter
+       00d8  WLI-U2-SG54HP
+       00d9  WLI-U2-G54HP
+       00da  WLI-U2-KG54L 802.11bg
+       00e8  Buffalo WLI-UC-G300N Wireless LAN Adapter
+       012e  Buffalo WLI-UC-AG300N Wireless LAN Adapter
+       0148  Buffalo WLI-UC-G300HP Wireless LAN Adapter
+       0150  Buffalo WLP-UC-AG300 Wireless LAN Adapter
+       0157  Buffalo External Hard Drive HD-PEU2
+       015d  Buffalo WLI-UC-GN Wireless LAN Adapter
+0412  Award Software International
+0413  Leadtek Research, Inc.
+       1310  WinFast TV - NTSC + FM
+       1311  WinFast TV - NTSC + MTS + FM
+       1312  WinFast TV - PAL BG + FM
+       1313  WinFast TV - PAL BG+TXT + FM
+       1314  WinFast TV Audio - PHP PAL I
+       1315  WinFast TV Audio - PHP PAL I+TXT
+       1316  WinFast TV Audio - PHP PAL DK
+       1317  WinFast TV Audio - PHP PAL DK+TXT
+       1318  WinFast TV - PAL I/DK + FM
+       1319  WinFast TV - PAL N + FM
+       131a  WinFast TV Audio - PHP SECAM LL
+       131b  WinFast TV Audio - PHP SECAM LL+TXT
+       131c  WinFast TV Audio - PHP SECAM DK
+       131d  WinFast TV - SECAM DK + TXT + FM
+       131e  WinFast TV - NTSC Japan + FM
+       1320  WinFast TV - NTSC
+       1321  WinFast TV - NTSC + MTS
+       1322  WinFast TV - PAL BG
+       1323  WinFast TV - PAL BG+TXT
+       1324  WinFast TV Audio - PHP PAL I
+       1325  WinFast TV Audio - PHP PAL I+TXT
+       1326  WinFast TV Audio - PHP PAL DK
+       1327  WinFast TV Audio - PHP PAL DK+TXT
+       1328  WinFast TV - PAL I/DK
+       1329  WinFast TV - PAL N
+       132a  WinFast TV Audio - PHP SECAM LL
+       132b  WinFast TV Audio - PHP SECAM LL+TXT
+       132c  WinFast TV Audio - PHP SECAM DK
+       132d  WinFast TV - SECAM DK + TXT
+       132e  WinFast TV - NTSC Japan
+       6023  EMP Audio Device
+       6024  WinFast PalmTop/Novo TV Video
+       6025  WinFast DTV Dongle (cold state)
+       6026  WinFast DTV Dongle (warm state)
+       6125  WinFast DTV Dongle
+       6126  WinFast DTV Dongle BDA Driver
+       6f00  WinFast DTV Dongle (STK7700P based)
+0414  Giga-Byte Technology Co., Ltd
+0416  Winbond Electronics Corp.
+       0035  W89C35 802.11bg WLAN Adapter
+       0101  Hub
+       0961  AVL Flash Card Reader
+       3810  Smart Card Controller
+       3811  Generic Controller - Single interface
+       3812  Smart Card Controller_2Interface
+       3813  Panel Display
+       5518  4-Port Hub
+       551a  PC Sync Keypad
+       551b  PC Async Keypad
+       551c  Sync Tenkey
+       551d  Async Tenkey
+       551e  Keyboard
+       551f  Keyboard w/ Sys and Media
+       5521  Keyboard
+       6481  16-bit Scanner
+       7721  Memory Stick Reader/Writer
+       7722  Memory Stick Reader/Writer
+       7723  SD Card Reader
+0417  Symbios Logic
+0418  AST Research
+0419  Samsung Info. Systems America, Inc.
+       0001  IrDA Remote Controller
+       3001  Xerox P1202 Laser Printer
+       3003  Olivetti PG L12L
+       3201  Docuprint P8ex
+       3404  SCX-5x12 series
+       3406  MFP 830 series
+       3407  ML-912
+       3601  InkJet Color Printer
+       3602  InkJet Color Printer
+       4602  Remote NDIS Network Device
+       8001  Hub
+       8002  SyncMaster 757DFX HID Device
+041a  Phoenix Technologies, Ltd
+041b  d'TV
+041d  S3, Inc.
+041e  Creative Technology, Ltd
+       1002  Nomad II
+       1003  Blaster GamePad Cobra
+       1050  GamePad Cobra
+       1053  Mouse Gamer HD7600L
+       3000  SoundBlaster Extigy
+       3002  SB External Composite Device
+       3010  SoundBlaster MP3+
+       3014  SB External Composite Device
+       3015  Sound Blaster Digital Music LX
+       3020  SoundBlaster Audigy 2 NX
+       3030  SB External Composite Device
+       3040  SoundBlaster Live! 24-bit External SB0490
+       3060  Sound Blaster Audigy 2 ZS External
+       3061  SoundBlaster Audigy 2 ZS Video Editor
+       3090  Sound Blaster Digital Music SX
+       3f02  E-Mu 0202
+       3f04  E-Mu 0404
+       4003  VideoBlaster Webcam Go Plus [W9967CF]
+       4004  Nomad II MG
+       4005  Webcam Blaster Go ES
+       4007  Go Mini
+       400a  PC-Cam 300
+       400b  PC-Cam 600
+       400c  Webcam 5 [pwc]
+       400d  Webcam PD1001
+       400f  PC-CAM 550 (Composite)
+       4011  Webcam PRO eX
+       4012  PC-CAM350
+       4013  PC-Cam 750
+       4015  CardCam Value
+       4016  CardCam
+       4017  Webcam Mobile [PD1090]
+       4018  Webcam Vista [PD1100]
+       4019  Audio Device
+       401a  Webcam Vista [PD1100]
+       401c  Webcam NX [PD1110]
+       401d  Webcam NX Ultra
+       401e  Webcam NX Pro
+       401f  Webcam Notebook [PD1171]
+       4020  Webcam NX
+       4021  Webcam NX Ultra
+       4022  Webcam NX Pro
+       4028  Vista Plus cam [VF0090]
+       4029  Webcam Live!
+       402f  DC-CAM 3000Z
+       4034  Webcam Instant
+       4035  Webcam Instant
+       4036  Webcam Live!/Live! Pro
+       4037  Webcam Live!
+       4038  ORITE CCD Webcam [PC370R]
+       4039  Webcam Live! Effects
+       403a  Webcam NX Pro 2
+       403b  Creative Webcam Vista [VF0010]
+       403c  Webcam Live! Ultra
+       403d  Webcam Notebook Ultra
+       403e  Webcam Vista Plus
+       4041  Webcam Live! Motion
+       4045  Live! Cam Voice
+       4049  Live! Cam Voice
+       4051  Live! Cam Notebook Pro [VF0250]
+       4052  Live! Cam Vista IM
+       4053  Live! Cam Video IM
+       4054  Live! Cam Video IM
+       4055  Live! Cam Video IM Pro
+       4056  Live! Cam Video IM Pro
+       4057  Live! Cam Optia
+       4058  Live! Cam Optia AF
+       4061  Live! Cam Notebook Pro [VF0400]
+       4063  Live! Cam Video IM Pro
+       4068  Webcam Live! Notebook
+       4100  Nomad Jukebox 2
+       4101  Nomad Jukebox 3
+       4102  NOMAD MuVo^2
+       4106  Nomad MuVo
+       4107  NOMAD MuVo
+       4108  Nomad Jukebox Zen
+       4109  Nomad Jukebox Zen NX
+       410b  Nomad Jukebox Zen USB 2.0
+       410c  Nomad MuVo NX
+       410f  NOMAD MuVo^2 (Flash)
+       4110  Nomad Jukebox Zen Xtra
+       4111  Dell Digital Jukebox
+       4116  MuVo^2
+       4117  Nomad MuVo TX
+       411b  Zen Touch
+       411c  Nomad MuVo USB 2.0
+       411d  Zen
+       411e  Zen Micro
+       4123  Zen Portable Media Center
+       4124  MuVo^2 FM (uHDD)
+       4126  Dell DJ (2nd gen)
+       4127  Dell DJ
+       4128  NOMAD Jukebox Zen Xtra (mtp)
+       412b  MuVo N200 with FM radio
+       412f  Dell Digital Jukebox 2.Gen
+       4130  Zen Micro (mtp)
+       4131  Zen Touch (mtp)
+       4133  Mass Storage Device
+       4134  Zen Neeon
+       4136  Zen Sleek
+       4137  Zen Sleek (mtp)
+       4139  Zen Nano Plus
+       413c  Zen MicroPhoto
+       4150  Zen V (MTP)
+       4151  Zen Vision:M (mtp)
+       4152  Zen V Plus
+       4155  Zen Stone plus
+       4157  Zen (MTP)
+       500f  Broadband Blaster 8012U-V
+       5015  TECOM Bluetooth Device
+       ffff  Webcam Live! Ultra
+041f  LCS Telegraphics
+0420  Chips and Technologies
+       1307  Celly SIM Card Reader
+0421  Nokia Mobile Phones
+       0001  E61i (PC Suite mode)
+       0018  6288 GSM Smartphone
+       0019  6288 GSM Smartphone (imaging mode)
+       001a  6288 GSM Smartphone (file transfer mode)
+       0024  5610 XpressMusic (Storage mode)
+       0025  5610 XpressMusic (PC Suite mode)
+       0028  5610 XpressMusic (Imaging mode)
+       002d  6120 Phone (Mass storage mode)
+       002e  6120 Phone (Media-Player mode)
+       002f  6120 Phone (PC-Suite mode)
+       0042  E51 (PC Suite mode)
+       0064  3109c GSM Phone
+       006d  N95 (Storage mode)
+       006e  N95 (Multimedia mode)
+       006f  N95 (Printing mode)
+       0070  N95 (PC Suite mode)
+       0096  N810 Internet Tablet
+       00aa  E71 (Mass storage mode)
+       00ab  E71 (PC Suite mode)
+       00e4  E71 (Media transfer mode)
+       0103  ADL Flashing Engine AVALON Parent
+       0104  ADL Re-Flashing Engine Parent
+       0105  Nokia Firmware Upgrade Mode
+       0106  ROM Parent
+       01c7  N900 (Storage Mode)
+       01c8  N900 (PC-Suite Mode)
+       0400  7600 Phone Parent
+       0401  6650 GSM Phone
+       0402  6255 Phone Parent
+       0404  5510
+       0405  9500 GSM Communicator
+       0407  Music Player HDR-1(tm)
+       040b  N-Gage GSM Phone
+       040d  6620 Phone Parent
+       040e  6651 Phone Parent
+       040f  6230 GSM Phone
+       0410  6630 Imaging Smartphone
+       0411  7610 Phone Parent
+       0413  6260 Phone Parent
+       0414  7370
+       0415  9300 GSM Smartphone
+       0416  6170 Phone Parent
+       0417  7270 Phone Parent
+       0418  E70 (PC Suite mode)
+       0419  E60 (PC Suite mode)
+       041a  9500 GSM Communicator (RNDIS)
+       041b  9300 GSM Smartphone (RNDIS)
+       041c  7710 Phone Parent
+       041d  6670 Phone Parent
+       041e  6680
+       041f  6235 Phone Parent
+       0421  3230 Phone Parent
+       0422  6681 Phone Parent
+       0423  6682 Phone Parent
+       0428  6230i Modem
+       0429  6230i MultiMedia Card
+       0431  770 Internet Tablet
+       0432  N90 Phone Parent
+       0435  E70 (IP Passthrough/RNDIS mode)
+       0436  E60 (IP Passthrough/RNDIS mode)
+       0437  6265 Phone Parent
+       043a  N70 USB Phone Parent
+       043b  3155 Phone Parent
+       043c  6155 Phone Parent
+       043d  6270 Phone Parent
+       0443  N70 Phone Parent
+       044c  NM850iG Phone Parent
+       044d  E61 (PC Suite mode)
+       044e  E61 (Data Exchange mode)
+       044f  E61 (IP Passthrough/RNDIS mode)
+       0453  9300 Phone Parent
+       0456  6111 Phone Parent
+       0457  6111 Phone (Printing mode)
+       045a  6280 Phone Parent
+       045d  6282 Phone Parent
+       046e  6110 Navigator
+       0485  MTP Device
+       04c3  N800 Internet Tablet
+       04ce  E90 Communicator (PC Suite mode)
+       04cf  E90 Communicator (Storage mode)
+       04f9  6300 (PC Suite mode)
+       0508  E65 (PC Suite mode)
+       0600  Digital Pen SU-1B
+       0610  CS-15 (Internet Stick 3G modem)
+       0800  Connectivity Cable DKU-5
+       0801  Data Cable DKU-6
+       0802  CA-42 Phone Parent
+0422  ADI Systems, Inc.
+0423  Computer Access Technology Corp.
+       000a  NetMate Ethernet
+       000c  NetMate2 Ethernet
+       000d  USB Chief Analyzer
+       0100  Generic Universal Protocol Analyzer
+       0101  UPA USBTracer
+       0200  Generic 10K Universal Protocol Analyzer
+       020a  PETracer ML
+       0300  Generic Universal Protocol Analyzer
+       0301  2500H Tracer Trainer
+       030a  PETracer x1
+       1237  Andromeda Hub
+0424  Standard Microsystems Corp.
+       0001  Integrated Hub
+       0acd  Sitecom Internal Multi Memory reader/writer MD-005
+       0fdc  Floppy
+       10cd  Sitecom Internal Multi Memory reader/writer MD-005
+       2020  USB Hub
+       20cd  Sitecom Internal Multi Memory reader/writer MD-005
+       20fc  6-in-1 Card Reader
+       2228  9-in-2 Card Reader
+       223a  8-in-1 Card Reader
+       2503  USB 2.0 Hub
+       2504  USB 2.0 Hub
+       2512  USB 2.0 Hub
+       2514  USB 2.0 Hub
+       2524  USB MultiSwitch Hub
+       2602  USB 2.0 Hub
+0425  Motorola Semiconductors HK, Ltd
+       0101  G-Tech Wireless Mouse & Keyboard
+       f102  G-Tech U+P Wireless Mouse
+0426  Integrated Device Technology, Inc.
+       0426  WDM Driver
+0427  Motorola Electronics Taiwan, Ltd
+0428  Advanced Gravis Computer Tech, Ltd
+       4001  GamePad Pro
+0429  Cirrus Logic
+042a  Ericsson Austrian, AG
+042b  Intel Corp.
+       9316  8x931Hx Customer Hub
+042c  Innovative Semiconductors, Inc.
+042d  Micronics
+042e  Acer, Inc.
+       0380  MP3 Player
+042f  Molex, Inc.
+0430  Sun Microsystems, Inc.
+       0002  109 Keyboard
+       0005  Type 6 Keyboard
+       000a  109 Japanese Keyboard
+       000b  109 Japanese Keyboard
+       0082  109 Japanese Keyboard
+       0083  109 Japanese Keyboard
+       0100  3-button Mouse
+       36ba  Bus Powered Hub
+0431  Itac Systems, Inc.
+       0100  Mouse-Trak 3-button Track Ball
+0432  Unisys Corp.
+0433  Alps Electric, Inc.
+       1101  IBM Game Controller
+       abab  Keyboard
+0434  Samsung Info. Systems America, Inc.
+0435  Hyundai Electronics America
+0436  Taugagreining HF
+       0005  CameraMate (DPCM_USB)
+0437  Framatome Connectors USA
+0438  Advanced Micro Devices, Inc.
+0439  Voice Technologies Group
+043d  Lexmark International, Inc.
+       0001  Laser Printer
+       0002  Optra E310 Printer
+       0003  Laser Printer
+       0004  Laser Printer
+       0005  Laser Printer
+       0006  Laser Printer
+       0007  Laser Printer
+       0008  Inkjet Color Printer
+       0009  Optra S2450 Printer
+       000a  Laser Printer
+       000b  Inkjet Color Printer
+       000c  Optra E312 Printer
+       000d  Laser Printer
+       000e  Laser Printer
+       000f  Laser Printer
+       0010  Laser Printer
+       0011  Laser Printer
+       0012  Inkjet Color Printer
+       0013  Inkjet Color Printer
+       0014  InkJet Color Printer
+       0015  InkJet Color Printer
+       0016  Z12 Color Jetprinter
+       0017  Z32 printer
+       0018  Z52 Printer
+       0019  Forms Printer
+       001a  Z65 Printer
+       001b  InkJet Photo Printer
+       001c  Kodak Personal Picture Maker 200 Printer
+       001d  InkJet Color Printer
+       001e  InkJet Photo Printer
+       001f  Kodak Personal Picture Maker 200 Card Reader
+       0020  Z51 Printer
+       0021  Z33 Printer
+       0022  InkJet Color Printer
+       0023  Laser Printer
+       0024  Laser Printer
+       0025  InkJet Color Printer
+       0026  InkJet Color Printer
+       0027  InkJet Color Printer
+       0028  InkJet Color Printer
+       0029  Scan Print Copy
+       002a  Scan Print Copy
+       002b  Scan Print Copy
+       002c  Scan Print Copy
+       002d  X70/X73 Scan/Print/Copy
+       002e  Scan Print Copy
+       002f  Scan Print Copy
+       0030  Scan Print Copy
+       0031  Scan Print Copy
+       0032  Scan Print Copy
+       0033  Scan Print Copy
+       0034  Scan Print Copy
+       0035  Scan Print Copy
+       0036  Scan Print Copy
+       0037  Scan Print Copy
+       0038  Scan Print Copy
+       0039  Scan Print Copy
+       003a  Scan Print Copy
+       003b  Scan Print Copy
+       003c  Scan Print Copy
+       003d  X83 Scan/Print/Copy
+       003e  Scan Print Copy
+       003f  Scan Print Copy
+       0040  Scan Print Copy
+       0041  Scan Print Copy
+       0042  Scan Print Copy
+       0043  Scan Print Copy
+       0044  Scan Print Copy
+       0045  Scan Print Copy
+       0046  Scan Print Copy
+       0047  Scan Print Copy
+       0048  Scan Print Copy
+       0049  Scan Print Copy
+       004a  Scan Print Copy
+       004b  Scan Print Copy
+       004c  Scan Print Copy
+       004d  Laser Printer
+       004e  Laser Printer
+       004f  InkJet Color Printer
+       0050  InkJet Color Printer
+       0051  Laser Printer
+       0052  Laser Printer
+       0053  InkJet Color Printer
+       0054  InkJet Color Printer
+       0057  Z35 Printer
+       0058  Laser Printer
+       005a  X63
+       005c  InkJet Color Printer
+       0060  X74/X75 Scanner
+       0061  X74 Hub
+       0065  X5130
+       0069  X74/X75 Printer
+       006d  X125
+       0072  X6170 Printer
+       0073  InkJet Color Printer
+       0078  InkJet Color Printer
+       0079  InkJet Color Printer
+       007a  Generic Hub
+       007b  InkJet Color Printer
+       007c  Lexmark X1110/X1130/X1140/X1150/X1170/X1180/X1185
+       007d  Photo 3150
+       008a  4200 series
+       008b  InkJet Color Printer
+       008c  to CF/SM/SD/MS Card Reader
+       008e  InkJet Color Printer
+       008f  X422
+       0093  X5250
+       0095  E220 Printer
+       0096  2200 series
+       0097  P6250
+       0098  7100 series
+       009e  P910 series Human Interface Device
+       009f  InkJet Color Printer
+       00a9  IBM Infoprint 1410 MFP
+       00ab  InkJet Color Printer
+       00b2  3300 series
+       00b8  7300 series
+       00b9  8300 series
+       00ba  InkJet Color Printer
+       00bb  2300 series
+       00bd  Printing Support
+       00be  Printing Support
+       00bf  Printing Support
+       00c0  6300 series
+       00c1  4300 series
+       00c7  Printing Support
+       00c8  Printing Support
+       00c9  Printing Support
+       00cb  Printing Support
+       00d0  9300 series
+       00d3  X340 Scanner
+       00d4  X342n Scanner
+       00d5  Printing Support
+       00d6  X340 Scanner
+       00e8  X642e
+       00e9  2400 series
+       00f6  3400 series
+       00f7  InkJet Color Printer
+       00ff  InkJet Color Printer
+       010b  2500 series
+       010d  3500-4500 series
+       010f  6500 series
+       4303  Xerox WorkCentre Pro 412
+043e  LG Electronics USA, Inc.
+       42bd  Flatron 795FT Plus Monitor
+       4a4d  Flatron 915FT Plus Monitor
+       7001  MF-PD100 Soul Digital MP3 Player
+       7013  MP3 Player
+       8484  LPC-U30 Webcam II
+       8585  LPC-UC35 Webcam
+       8888  Electronics VCS Camera II(LPC-U20)
+       9800  Remote Control Receiver_iMON
+       9803  eHome Infrared Receiver
+       9804  DMB Receiver Control
+       9c01  LGE Sync
+043f  RadiSys Corp.
+0440  Eizo Nanao Corp.
+0441  Winbond Systems Lab.
+       1456  Hub
+0442  Ericsson, Inc.
+       abba  Bluetooth Device
+0443  Gateway, Inc.
+       000e  Multimedia Keyboard
+       002e  Millennium Keyboard
+0445  Lucent Technologies, Inc.
+0446  NMB Technologies Corp.
+       6781  Keyboard with PS/2 Mouse Port
+       6782  Keyboard
+0447  Momentum Microsystems
+044a  Shamrock Tech. Co., Ltd
+044b  WSI
+044c  CCL/ITRI
+044d  Siemens Nixdorf AG
+044e  Alps Electric Co., Ltd
+       1104  Japanese Keyboard
+       2002  MD-5500 Printer
+       2014  Bluetooth Device
+       3001  UGTZ4 Bluetooth
+       3002  Bluetooth Device
+       3003  Bluetooth Device
+       3004  Bluetooth Adapter
+       3005  Integrated Bluetooth Device
+       3006  Bluetooth Adapter
+       3007  Bluetooth Controller (ALPS/UGX)
+       300c  Bluetooth Controller (ALPS/UGPZ6)
+       300d  Bluetooth Controller (ALPS/UGPZ6)
+       3010  Bluetooth Adapter
+       ffff  Compaq Bluetooth Multiport Module
+044f  ThrustMaster, Inc.
+       0400  HOTAS Cougar
+       a003  Rage 3D Game Pad
+       a01b  PK-GP301 Driving Wheel
+       a0a0  Top Gun Joystick
+       a0a1  Top Gun Joystick (rev2)
+       a0a3  Fusion Digital GamePad
+       a201  PK-GP201 PlayStick
+       b203  360 Modena Pro Wheel
+       b300  Firestorm Dual Power
+       b304  Firestorm Dual Power
+       b307  vibrating Upad
+       b30b  Wireless VibrationPad
+       b603  force feedback Wheel
+       b605  force feedback Racing Wheel
+       b700  Tacticalboard
+0450  DFI, Inc.
+0451  Texas Instruments, Inc.
+       1234  Bluetooth Device
+       1428  Hub
+       1446  TUSB2040/2070 Hub
+       16a6  BM-USBD1 BlueRobin RF heart rate sensor receiver
+       2036  TUSB2036 Hub
+       2046  TUSB2046 Hub
+       2077  TUSB2077 Hub
+       3410  TUSB3410 Microcontroller
+       3f02  SMC WSKP100 Wi-Fi Phone
+       5409  Frontier Labs NEX IA+ Digital Audio Player
+       6000  AU5 ADSL Modem (pre-reenum)
+       6001  AU5 ADSL Modem
+       6060  RNDIS/BeWAN ADSL2+
+       6070  RNDIS/BeWAN ADSL2+
+       625f  Trekstor USB-Stick 12 CS-D 12 GB
+       dbc0  Device Bay Controller
+       e001  GraphLink
+       e004  TI-89 Titanium Calculator
+       e008  TI-84 Plus Silver Calculator
+       f430  MSP-FET430UIF JTAG Tool
+       f432  MSP-eZ430U USB Tool
+       ffff  Bluetooth Device
+0452  Mitsubishi Electronics America, Inc.
+       0021  HID Monitor Controls
+       0050  Diamond Pro 900u CRT Monitor
+       0051  Integrated Hub
+0453  CMD Technology
+       6781  NMB Keyboard
+       6783  Chicony Composite Keyboard
+0454  Vobis Microcomputer AG
+0455  Telematics International, Inc.
+0456  Analog Devices, Inc.
+0457  Silicon Integrated Systems Corp.
+       0150  Super Talent 1GB Flash Drive
+       0151  Super Flash 1GB / GXT  64MB Flash Drive
+       0162  SiS162 usb Wireless LAN Adapter
+       0163  802.11 Wireless LAN Adapter
+       5401  Wireless Adapter RO80211GS-USB
+0458  KYE Systems Corp. (Mouse Systems)
+       0001  Mouse
+       0002  Genius NetMouse Pro
+       0003  Genius NetScroll+
+       0006  Easy Mouse+ USB(USB\Vid_0458&Pid;_0006) Mouse
+       000b  NetMouse Wheel(P+U)
+       000c  TACOMA Fingerprint V1.06.01
+       000e  VideoCAM Web
+       0013  TACOMA Fingerprint Mouse V1.06.01
+       001a  Genius WebScroll+
+       0036  Pocket Mouse LE
+       004c  Slimstar Pro Keyboard
+       0056  Ergo 300 Mouse
+       0057  Enhanced Gaming Device
+       0059  Enhanced Laser Device
+       005a  Enhanced Device
+       005b  Enhanced Device
+       005c  Enhanced Laser Gaming Device
+       005d  Enhanced Device
+       0061  Bluetooth Dongle
+       0083  Bluetooth Dongle
+       0100  EasyPen Tablet
+       0101  CueCat
+       1001  Joystick
+       1002  Game Pad
+       1003  Genius VideoCam
+       1004  Flight2000 F-23 Joystick
+       100a  Aashima Technology Trust Sight Fighter Vibration Feedback Joystick
+       2001  ColorPage-Vivid Pro Scanner
+       2004  ColorPage-HR6 V1 Scanner
+       2005  ColorPage-HR6/Vivid3
+       2007  ColorPage-HR6 V2 Scanner
+       2008  ColorPage-HR6 V2 Scanner
+       2009  ColorPage-HR6A Scanner
+       2011  ColorPage-Vivid3x Scanner
+       2012  Plustek Scanner
+       2013  ColorPage-HR7 Scanner
+       2014  ColorPage-Vivid4
+       2015  ColorPage-HR7LE Scanner
+       2016  ColorPage-HR6X Scanner
+       2017  ColorPage-Vivid3xe
+       2018  ColorPage-HR7X
+       2019  ColorPage-HR6X Slim
+       201a  ColorPage-Vivid4xe
+       201b  ColorPage-Vivid4x
+       201c  ColorPage-HR8
+       201d  ColorPage-Vivid 1200 X
+       201e  ColorPage-Slim 1200
+       201f  ColorPage-Vivid 1200 XE
+       2020  ColorPage-Slim 1200 USB2
+       2021  ColorPage-SF600
+       3017  SPEED WHEEL 3 Vibration
+       3018  Wireless 2.4Ghz Game Pad
+       3019  10-Button USB Joystick with Vibration
+       301a  MaxFire G-12U Vibration
+       301d  Genius MaxFire MiniPad
+       400f  Genius TVGo DVB-T02Q MCE
+       6001  GF3000F Ethernet Adapter
+       7004  VideoCAM Express V2
+       7006  Dsc 1.3 Smart Camera Device
+       7007  VideoCAM Web
+       7009  G-Shot G312 Still Camera Device
+       700c  VideoCAM Web V3
+       700d  G-Shot G511 Composite Device
+       700f  VideoCAM Web
+       7012  WebCAM USB2.0
+       7014  VideoCAM Live V3
+       701c  G-Shot G512 Still Camera
+       7020  Sim 321C
+       7025  Eye 311Q Camera Device
+       7029  Genius Look 320s (SN9C201 + HV7131R)
+       702f  Genius Slim 322
+       7045  Genius Look 1320 V2
+       704c  Genius i-Look 1321
+       705a  Asus USB2.0 Webcam
+       705c  Genius iSlim 1300AF
+0459  Adobe Systems, Inc.
+045a  SONICblue, Inc.
+       07da  Supra Express 56K modem
+       0b4a  SupraMax 2890 56K Modem [Lucent Atlas]
+       0b68  SupraMax 56K Modem
+       5001  Rio 600 MP3 Player
+       5002  Rio 800 MP3 Player
+       5003  Nike Psa/Play MP3 Player
+       5005  Rio S10 MP3 Player
+       5006  Rio S50 MP3 Player
+       5007  Rio S35 MP3 Player
+       5008  Rio 900 MP3 Player
+       5009  Rio S30 MP3 Player
+       500d  Fuse MP3 Player
+       500e  Chiba MP3 Player
+       500f  Cali MP3 Player
+       5010  Rio S11 MP3 Player
+       501c  Virgin MPF-1000
+       501d  Rio Fuse
+       501e  Rio Chiba
+       501f  Rio Cali
+       503f  Cali256 MP3 Player
+       5202  Rio Riot MP3 Player
+       5210  Rio Karma Music Player
+       5220  Rio Nitrus MP3 Player
+       5221  Rio Eigen
+045b  Hitachi, Ltd
+045d  Nortel Networks, Ltd
+045e  Microsoft Corp.
+       0007  SideWinder Game Pad
+       0008  SideWinder Precision Pro
+       0009  IntelliMouse
+       000b  Natural Keyboard Elite
+       000e  SideWinder® Freestyle Pro
+       0014  Digital Sound System 80
+       001a  SideWinder Precision Racing Wheel
+       001b  SideWinder Force Feedback 2 Joystick
+       001c  Internet Keyboard Pro
+       001d  Natural Keyboard Pro
+       001e  IntelliMouse Explorer
+       0023  Trackball Optical
+       0024  Trackball Explorer
+       0025  IntelliEye Mouse
+       0026  SideWinder GamePad Pro
+       0027  SideWinder PnP GamePad
+       0028  SideWinder Dual Strike
+       0029  IntelliMouse Optical
+       002b  Internet Keyboard Pro
+       002d  Internet Keyboard
+       002f  Integrated Hub
+       0033  Sidewinder Strategic Commander
+       0034  SideWinder Force Feedback Wheel
+       0038  SideWinder Precision 2
+       0039  IntelliMouse Optical
+       003b  SideWinder Game Voice
+       003c  SideWinder Joystick
+       0040  Wheel Mouse Optical
+       0047  IntelliMouse Explorer 3.0
+       0048  Office Keyboard 1.0A
+       0053  Optical Mouse
+       0059  Wireless IntelliMouse Explorer
+       005c  Office Keyboard (106/109)
+       005f  Wireless MultiMedia Keyboard
+       0061  Wireless MultiMedia Keyboard (106/109)
+       0063  Wireless Natural MultiMedia Keyboard
+       0065  Wireless Natural MultiMedia Keyboard (106/109)
+       006a  Wireless Optical Mouse (IntelliPoint)
+       006d  eHome Remote Control Keyboard keys
+       006e  MN510 802.11b Adapter
+       006f  Smart Display Reference Device
+       0070  Wireless MultiMedia Keyboard
+       0071  Wireless MultiMedia Keyboard (106/109)
+       0072  Wireless Natural MultiMedia Keyboard
+       0073  Wireless Natural MultiMedia Keyboard (106/109)
+       0079  IXI Ogo CT-17 handheld device
+       007a  10/100 USB NIC
+       007d  Notebook Optical Mouse
+       007e  Wireless Transceiver for Bluetooth
+       0080  Digital Media Pro Keyboard
+       0083  Basic Optical Mouse
+       0084  Basic Optical Mouse
+       008a  Wireless Keyboard and Mouse
+       008b  Dual Receiver Wireless Mouse (IntelliPoint)
+       008c  Wireless Intellimouse Explorer 2.0
+       0095  IntelliMouse Explorer 4.0 (IntelliPoint)
+       009c  Wireless Transceiver for Bluetooth 2.0
+       00a0  eHome Infrared Receiver
+       00b0  Digital Media Pro Keyboard
+       00b9  Wireless Optical Mouse 3.0
+       00bb  Fingerprint Reader
+       00bc  Fingerprint Reader
+       00bd  Fingerprint Reader
+       00c2  Wireless Adapter MN-710
+       00c9  MTP Device
+       00cb  Basic Optical Mouse v2.0
+       00ce  Generic PPC Flash device
+       00d1  Optical Mouse with Tilt Wheel
+       00da  eHome Infrared Receiver
+       00db  Natural Ergonomic Keyboard 4000 V1.0
+       00dd  Comfort Curve Keyboard 2000 V1.0
+       00e1  Wireless Laser Mouse 6000 Reciever
+       00f4  LifeCam VX-6000 (SN9C20x + OV9650)
+       00f5  LifeCam VX-3000
+       00f7  LifeCam VX-1000
+       00f8  LifeCam NX-6000
+       00f9  Wireless Desktop Receiver 3.1
+       0202  Xbox Controller
+       0280  XBox Device
+       0284  Xbox DVD Playback Kit
+       0285  Xbox Controller S
+       0288  Xbox Controller S Hub
+       0289  Xbox Controller S
+       028b  Xbox360 DVD Emulator
+       028d  Xbox360 Memory Unit 64MB
+       028e  Xbox360 Controller
+       028f  Xbox360 Wireless Controller
+       0290  Xbox360 Performance Pipe (PIX)
+       0292  Xbox360 Wireless Networking Adapter
+       029c  Xbox360 HD-DVD Drive
+       029d  Xbox360 HD-DVD Drive
+       029e  Xbox360 HD-DVD Memory Unit
+       02a0  Xbox360 Big Button IR
+       0400  Windows Powered Pocket PC 2002
+       0401  Windows Powered Pocket PC 2002
+       0402  Windows Powered Pocket PC 2002
+       0403  Windows Powered Pocket PC 2002
+       0404  Windows Powered Pocket PC 2002
+       0405  Windows Powered Pocket PC 2002
+       0406  Windows Powered Pocket PC 2002
+       0407  Windows Powered Pocket PC 2002
+       0408  Windows Powered Pocket PC 2002
+       0409  Windows Powered Pocket PC 2002
+       040a  Windows Powered Pocket PC 2002
+       040b  Windows Powered Pocket PC 2002
+       040c  Windows Powered Pocket PC 2002
+       040d  Windows Powered Pocket PC 2002
+       040e  Windows Powered Pocket PC 2002
+       040f  Windows Powered Pocket PC 2002
+       0410  Windows Powered Pocket PC 2002
+       0411  Windows Powered Pocket PC 2002
+       0412  Windows Powered Pocket PC 2002
+       0413  Windows Powered Pocket PC 2002
+       0414  Windows Powered Pocket PC 2002
+       0415  Windows Powered Pocket PC 2002
+       0416  Windows Powered Pocket PC 2002
+       0417  Windows Powered Pocket PC 2002
+       0432  Windows Powered Pocket PC 2003
+       0433  Windows Powered Pocket PC 2003
+       0434  Windows Powered Pocket PC 2003
+       0435  Windows Powered Pocket PC 2003
+       0436  Windows Powered Pocket PC 2003
+       0437  Windows Powered Pocket PC 2003
+       0438  Windows Powered Pocket PC 2003
+       0439  Windows Powered Pocket PC 2003
+       043a  Windows Powered Pocket PC 2003
+       043b  Windows Powered Pocket PC 2003
+       043c  Windows Powered Pocket PC 2003
+       043d  Becker Traffic Assist Highspeed 7934
+       043e  Windows Powered Pocket PC 2003
+       043f  Windows Powered Pocket PC 2003
+       0440  Windows Powered Pocket PC 2003
+       0441  Windows Powered Pocket PC 2003
+       0442  Windows Powered Pocket PC 2003
+       0443  Windows Powered Pocket PC 2003
+       0444  Windows Powered Pocket PC 2003
+       0445  Windows Powered Pocket PC 2003
+       0446  Windows Powered Pocket PC 2003
+       0447  Windows Powered Pocket PC 2003
+       0448  Windows Powered Pocket PC 2003
+       0449  Windows Powered Pocket PC 2003
+       044a  Windows Powered Pocket PC 2003
+       044b  Windows Powered Pocket PC 2003
+       044c  Windows Powered Pocket PC 2003
+       044d  Windows Powered Pocket PC 2003
+       044e  Windows Powered Pocket PC 2003
+       044f  Windows Powered Pocket PC 2003
+       0450  Windows Powered Pocket PC 2003
+       0451  Windows Powered Pocket PC 2003
+       0452  Windows Powered Pocket PC 2003
+       0453  Windows Powered Pocket PC 2003
+       0454  Windows Powered Pocket PC 2003
+       0455  Windows Powered Pocket PC 2003
+       0456  Windows Powered Pocket PC 2003
+       0457  Windows Powered Pocket PC 2003
+       0458  Windows Powered Pocket PC 2003
+       0459  Windows Powered Pocket PC 2003
+       045a  Windows Powered Pocket PC 2003
+       045b  Windows Powered Pocket PC 2003
+       045c  Windows Powered Pocket PC 2003
+       045d  Windows Powered Pocket PC 2003
+       045e  Windows Powered Pocket PC 2003
+       045f  Windows Powered Pocket PC 2003
+       0460  Windows Powered Pocket PC 2003
+       0461  Windows Powered Pocket PC 2003
+       0462  Windows Powered Pocket PC 2003
+       0463  Windows Powered Pocket PC 2003
+       0464  Windows Powered Pocket PC 2003
+       0465  Windows Powered Pocket PC 2003
+       0466  Windows Powered Pocket PC 2003
+       0467  Windows Powered Pocket PC 2003
+       0468  Windows Powered Pocket PC 2003
+       0469  Windows Powered Pocket PC 2003
+       046a  Windows Powered Pocket PC 2003
+       046b  Windows Powered Pocket PC 2003
+       046c  Windows Powered Pocket PC 2003
+       046d  Windows Powered Pocket PC 2003
+       046e  Windows Powered Pocket PC 2003
+       046f  Windows Powered Pocket PC 2003
+       0470  Windows Powered Pocket PC 2003
+       0471  Windows Powered Pocket PC 2003
+       0472  Windows Powered Pocket PC 2003
+       0473  Windows Powered Pocket PC 2003
+       0474  Windows Powered Pocket PC 2003
+       0475  Windows Powered Pocket PC 2003
+       0476  Windows Powered Pocket PC 2003
+       0477  Windows Powered Pocket PC 2003
+       0478  Windows Powered Pocket PC 2003
+       0479  Windows Powered Pocket PC 2003
+       047a  Windows Powered Pocket PC 2003
+       047b  Windows Powered Pocket PC 2003
+       04c8  Windows Powered Smartphone 2002
+       04c9  Windows Powered Smartphone 2002
+       04ca  Windows Powered Smartphone 2002
+       04cb  Windows Powered Smartphone 2002
+       04cc  Windows Powered Smartphone 2002
+       04cd  Windows Powered Smartphone 2002
+       04ce  Windows Powered Smartphone 2002
+       04d7  Windows Powered Smartphone 2003
+       04d8  Windows Powered Smartphone 2003
+       04d9  Windows Powered Smartphone 2003
+       04da  Windows Powered Smartphone 2003
+       04db  Windows Powered Smartphone 2003
+       04dc  Windows Powered Smartphone 2003
+       04dd  Windows Powered Smartphone 2003
+       04de  Windows Powered Smartphone 2003
+       04df  Windows Powered Smartphone 2003
+       04e0  Windows Powered Smartphone 2003
+       04e1  Windows Powered Smartphone 2003
+       04e2  Windows Powered Smartphone 2003
+       04e3  Windows Powered Smartphone 2003
+       04e4  Windows Powered Smartphone 2003
+       04e5  Windows Powered Smartphone 2003
+       04e6  Windows Powered Smartphone 2003
+       04e7  Windows Powered Smartphone 2003
+       04e8  Windows Powered Smartphone 2003
+       04e9  Windows Powered Smartphone 2003
+       04ea  Windows Powered Smartphone 2003
+       0708  Transceiver v 3.0 for Bluetooth
+       070a  Charon Bluetooth Dongle (DFU)
+       0721  LifeCam NX-3000 (UVC-compliant)
+       0723  LifeCam VX-7000 (UVC-compliant)
+       0734  Wireless Optical Desktop 700
+       930a  ISOUSB.SYS Intel 82930 Isochronous IO Test Board
+       fff8  Keyboard
+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  Primascan Colorado 2600u/Visioneer 4400 Scanner
+       0360  Colorado 19200 Scanner
+       0361  Colorado 1200u Scanner
+       0363  VistaScan Astra 3600(ENG)
+       0364  LG Electronics Scanworks 600U Scanner
+       0365  VistaScan Astra 3600(ENG)
+       0366  6400
+       0367  VistaScan Astra 3600(ENG)
+       0371  Visioneer Onetouch 8920 Scanner
+       0374  UMAX Astra 2500
+       0375  VistaScan Astra 3600(ENG)
+       0377  Medion MD 5345 Scanner
+       0378  VistaScan Astra 3600(ENG)
+       037b  Medion MD 6190 Scanner
+       037c  VistaScan Astra 3600(ENG)
+       0380  G2-600 Scanner
+       0381  ReadyScan 636i Scanner
+       0382  G2-600 #2 Scanner
+       0383  G2E-600 Scanner
+       038a  UMAX Astra 3000/3600
+       038b  Xerox 2400 Onetouch
+       038c  UMAX Astra 4100
+       0392  Medion/Lifetec/Tevion/Cytron MD 6190
+       03a8  9420M
+       0813  IBM UltraPort Camera
+       0815  Micro Innovations IC200 Webcam
+       0819  Fujifilm IX-30 Camera [webcam mode]
+       081a  Fujifilm IX-30 Camera [storage mode]
+       081c  Elitegroup ECS-C11 Camera
+       081d  Elitegroup ECS-C11 Storage
+       0a00  Micro Innovations Web Cam 320
+       4d01  Comfort Keyboard
+       4d02  Mouse-in-a-Box
+       4d03  Kensington Mouse-in-a-box
+       4d04  Mouse
+       4d06  Balless Mouse (HID)
+       4d15  Dell Optical Mouse
+       4d17  Optical Mouse
+       4d2a  PoPo Elixir Mouse (HID)
+       4d2b  Wireless Laser Mini Mouse (HID)
+       4d2c  PoPo Mini Pointer Mouse (HID)
+       4d2e  Optical Mobile Mouse (HID)
+0463  MGE UPS Systems
+       0001  UPS
+       ffff  UPS
+0464  AMP/Tycoelectronics Corp.
+0467  AT&T Paradyne
+0468  Wieson Technologies Co., Ltd
+046a  Cherry GmbH
+       0001  My3000 Keyboard
+       0003  My3000 Hub
+       0004  CyBoard Keyboard
+       0005  XX33 SmartCard Reader Keyboard
+       0010  SmartBoard XX44
+       0011  G83 (RS 6000) Keyboard
+       0021  CyMotion Expert Combo
+       0023  CyMotion Master Linux Keyboard
+       0027  CyMotion Master Solar Keyboard
+       002a  Wireless Mouse & Keyboard
+       002d  SmartTerminal XX44
+       003e  SmartTerminal ST-2xxx
+046b  American Megatrends, Inc.
+       0001  Keyboard
+       0101  PS/2 Keyboard, Mouse & Joystick Ports
+       0301  USB 1.0 Hub
+       0500  Serial & Parallel Ports
+046c  Toshiba Corp., Digital Media Equipment
+046d  Logitech, Inc.
+       0082  Acer Aspire 5672 Webcam
+       0200  WingMan Extreme Joystick
+       0203  M2452 Keyboard
+       0301  M4848 Mouse
+       0401  HP PageScan
+       0402  NEC PageScan
+       040f  Logitech/Storm PageScan
+       0430  Mic (Cordless)
+       0801  QuickCam Home
+       0802  Webcam C200
+       0804  Webcam C250
+       0805  Webcam C300
+       0807  Webcam B500
+       0808  Webcam C600
+       0809  Webcam Pro 9000
+       080a  Portable Webcam C905
+       080f  Webcam C120
+       0810  QuickCam Pro
+       0820  QuickCam VC
+       0830  QuickClip
+       0840  QuickCam Express
+       0850  QuickCam Web
+       0870  QuickCam Express
+       0890  QuickCam Traveler
+       0892  OrbiCam
+       0894  CrystalCam
+       0895  QuickCam for Dell Notebooks
+       0896  OrbiCam
+       0897  QuickCam for Dell Notebooks
+       0899  QuickCam for Dell Notebooks
+       089d  QuickCam E2500 series
+       08a0  QuickCam IM
+       08a1  QuickCam IM with sound
+       08a2  Labtec Webcam Pro
+       08a3  QuickCam QuickCam Chat
+       08a6  QuickCam IM
+       08a7  QuickCam Image
+       08a9  Notebook Deluxe
+       08aa  Labtec Notebooks
+       08ac  QuickCam Cool
+       08ad  QuickCam Communicate STX
+       08ae  QuickCam for Notebooks
+       08af  QuickCam Easy/Cool
+       08b0  QuickCam 3000 Pro [pwc]
+       08b1  QuickCam Notebook Pro
+       08b2  QuickCam Pro 4000
+       08b3  QuickCam Zoom
+       08b4  QuickCam Zoom
+       08b5  QuickCam Sphere
+       08b9  QuickCam IM
+       08bd  Microphone (Pro 4000)
+       08c0  QuickCam Pro 3000
+       08c1  QuickCam Fusion
+       08c2  QuickCam PTZ
+       08c3  Camera (Notebooks Pro)
+       08c5  QuickCam Pro 5000
+       08c6  QuickCam for DELL Notebooks
+       08c7  QuickCam OEM Cisco VT Camera II
+       08c9  QuickCam Ultra Vision
+       08ca  Mic (Fusion)
+       08cb  Mic (Notebooks Pro)
+       08cc  Mic (PTZ)
+       08ce  QuickCam Pro 5000
+       08cf  QuickCam UpdateMe
+       08d0  QuickCam Express
+       08d7  QuickCam Communicate STX
+       08d8  QuickCam for Notebook Deluxe
+       08d9  QuickCam IM/Connect
+       08da  QuickCam Messanger
+       08dd  QuickCam for Notebooks
+       08e0  QuickCam Express
+       08e1  Labtec Webcam
+       08f0  QuickCam Messenger
+       08f1  QuickCam Express
+       08f2  Microphone (Messenger)
+       08f3  QuickCam Express
+       08f4  Labtec Webcam
+       08f5  QuickCam Messenger Communicate
+       08f6  QuickCam Messenger Plus
+       0900  ClickSmart 310
+       0901  ClickSmart 510
+       0903  ClickSmart 820
+       0905  ClickSmart 820
+       0910  QuickCam Cordless
+       0920  QuickCam Express
+       0921  Labtec Webcam
+       0922  QuickCam Live
+       0928  QuickCam Express
+       0929  Labtec Webcam Pro
+       092a  QuickCam for Notebooks
+       092b  Labtec Webcam Plus
+       092c  QuickCam Chat
+       092d  QuickCam Express / Go
+       092e  QuickCam Chat
+       092f  QuickCam Express Plus
+       0950  Pocket Camera
+       0960  ClickSmart 420
+       0970  Pocket750
+       0990  QuickCam Pro 9000
+       0991  QuickCam Pro for Notebooks
+       0992  QuickCam Communicate Deluxe
+       0994  QuickCam Orbit/Sphere AF
+       09a1  QuickCam Communicate MP/S5500
+       09a2  QuickCam Communicate Deluxe/S7500
+       09a4  QuickCam E 3500
+       09a5  Quickcam 3000 For Business
+       09a6  QuickCam Vision Pro
+       09b0  Acer OrbiCam
+       09b2  Fujitsu Webcam
+       09c0  QuickCam for Dell Notebooks Mic
+       09c1  QuickCam Deluxe for Notebooks
+       0a01  USB Headset
+       0a02  Premium Stereo USB Headset 350
+       0a03  Logitech USB Microphone
+       0a04  V20 portable speakers (USB powered)
+       0a13  Z-5 Speakers
+       0b02  BT Mini-Receiver (HID proxy mode)
+       8801  Video Camera
+       b305  BT Mini-Receiver
+       bfe4  Premium Optical Wheel Mouse
+       c000  N43 [Pilot Mouse]
+       c001  N48/M-BB48 [FirstMouse Plus]
+       c002  M-BA47 [MouseMan Plus]
+       c003  MouseMan
+       c004  WingMan Gaming Mouse
+       c005  WingMan Gaming Wheel Mouse
+       c00b  MouseMan Wheel
+       c00c  Optical Wheel Mouse
+       c00d  MouseMan Wheel+
+       c00e  M-BJ58/M-BJ69 Optical Wheel Mouse
+       c00f  MouseMan Traveler/Mobile
+       c011  Optical MouseMan
+       c012  Mouseman Dual Optical
+       c014  Corded Workstation Mouse
+       c015  Corded Workstation Mouse
+       c016  M-UV69a/HP M-UV96 Optical Wheel Mouse
+       c018  Optical Wheel Mouse
+       c019  Optical Tilt Wheel Mouse
+       c01a  M-BQ85 Optical Wheel Mouse
+       c01b  MX310 Optical Mouse
+       c01c  Optical Mouse
+       c01d  MX510 Optical Mouse
+       c01e  MX518 Optical Mouse
+       c024  MX300 Optical Mouse
+       c025  MX500 Optical Mouse
+       c030  iFeel Mouse
+       c031  iFeel Mouse+
+       c032  MouseMan iFeel
+       c033  iFeel MouseMan+
+       c034  MouseMan Optical
+       c035  Mouse
+       c036  Mouse
+       c037  Mouse
+       c038  Mouse
+       c03d  M-BT96a Pilot Optical Mouse
+       c03e  Premium Optical Wheel Mouse
+       c03f  UltraX Optical Mouse
+       c040  Corded Tilt-Wheel Mouse
+       c041  G5 Laser Mouse
+       c042  G3 Laser Mouse
+       c043  MX320/MX400 Laser Mouse
+       c044  LX3 Optical Mouse
+       c045  Optical Mouse
+       c046  RX1000 Laser Mouse
+       c047  Laser Mouse
+       c049  G5 Laser Mouse
+       c050  RX 250 Optical Mouse
+       c051  G3 (MX518) Optical Mouse
+       c053  Laser Mouse
+       c101  UltraX Media Remote
+       c122  Harmony 700 Remote
+       c201  WingMan Extreme Joystick with Throttle
+       c202  WingMan Formula
+       c207  WingMan Extreme Digital 3D
+       c208  WingMan Gamepad Extreme
+       c209  WingMan Gamepad
+       c20a  WingMan RumblePad
+       c20b  WingMan Action Pad
+       c20c  WingMan Precision
+       c20d  WingMan Attack 2
+       c20e  WingMan Formula GP
+       c211  iTouch Cordless Reciever
+       c212  WingMan Extreme Digital 3D
+       c213  J-UH16 (Freedom 2.4 Cordless Joystick)
+       c214  ATK3 (Attack III Joystick)
+       c215  Extreme 3D Pro
+       c216  Dual Action Gamepad
+       c218  Logitech RumblePad 2 USB
+       c219  Cordless RumblePad 2
+       c21a  Precision Gamepad
+       c21c  G13 Advanced Gameboard
+       c221  G15 Keyboard / Keyboard
+       c222  G15 Keyboard / LCD
+       c223  G15 Keyboard / USB Hub
+       c281  WingMan Force
+       c283  WingMan Force 3D
+       c285  WingMan Strike Force 3D
+       c286  Force 3D Pro
+       c291  WingMan Formula Force
+       c293  WingMan Formula Force GP
+       c294  Driving Force
+       c295  Momo Force Steering Wheel
+       c298  Driving Force Pro
+       c299  G25 Racing Wheel
+       c2a0  Wingman Force Feedback Mouse
+       c2a1  WingMan Force Feedback Mouse
+       c301  iTouch Keyboard
+       c302  iTouch Pro Keyboard
+       c303  iTouch Keyboard
+       c305  Internet Keyboard
+       c307  Internet Keyboard
+       c308  Internet Navigator Keyboard
+       c309  Internet Keyboard
+       c30a  iTouch Composite
+       c30b  NetPlay Keyboard
+       c30c  Internet Keys (X)
+       c30d  Internet Keys
+       c30e  UltraX Keyboard (Y-BL49)
+       c30f  Logicool HID-Compliant Keyboard (106 key)
+       c312  DeLuxe 250 Keyboard
+       c315  Classic New Touch Keyboard
+       c316  HID-Compliant Keyboard
+       c317  Wave Corded Keyboard
+       c318  Illuminated Keyboard
+       c401  TrackMan Marble Wheel
+       c402  Marble Mouse (2-button)
+       c403  Turbo TrackMan Marble FX
+       c404  TrackMan Wheel
+       c408  Marble Mouse (4-button)
+       c501  Cordless Mouse Receiver
+       c502  Cordless Mouse & iTouch Keys
+       c503  Cordless Mouse+Keyboard Receiver
+       c504  Cordless Mouse+Keyboard Receiver
+       c505  Cordless Mouse+Keyboard Receiver
+       c506  MX-700 Cordless Mouse Receiver
+       c508  Cordless Trackball
+       c509  Cordless Keyboard & Mouse
+       c50a  Cordless Mouse
+       c50b  Cordless Desktop Optical
+       c50c  Cordless Desktop S510
+       c50d  Cordless Mouse
+       c50e  MX-1000 Cordless Mouse Receiver
+       c510  Cordless Mouse
+       c512  LX-700 Cordless Desktop Receiver
+       c513  MX3000 Cordless Desktop Receiver
+       c514  Cordless Mouse
+       c517  LX710 Cordless Desktop Laser
+       c518  MX610 Laser Cordless Mouse
+       c51a  MX Revolution/G7 Cordless Mouse
+       c51b  V220 Cordless Optical Mouse for Notebooks
+       c521  MX620 Laser Cordless Mouse
+       c526  MX Revolution Cordless Mouse
+       c625  3Dconnexion Space Pilot 3D Mouse
+       c626  3DConnexion Space Navigator 3D Mouse
+       c627  3DConnexion Space Explorer 3D Mouse
+       c702  Cordless Presenter
+       c703  Elite Keyboard Y-RP20 + Mouse MX900 (Bluetooth)
+       c707  Bluetooth wireless hub
+       c708  Bluetooth wireless hub
+       c709  BT Mini-Receiver (HCI mode)
+       c70a  MX5000 Cordless Desktop
+       c70b  BT Mini-Receiver (HID proxy mode)
+       c70c  BT Mini-Receiver (HID proxy mode)
+       c70d  Bluetooth wireless hub
+       c70e  MX1000 Bluetooth Laser Mouse
+       c70f  Bluetooth wireless hub
+       c712  Bluetooth wireless hub
+       c715  Bluetooth wireless hub
+       c71a  Bluetooth wireless hub
+       c71d  Bluetooth wireless hub
+       c720  Bluetooth wireless hub
+       ca03  MOMO Racing
+       ca04  Formula Vibration Feedback Wheel
+       d001  QuickCam Pro
+046e  Behavior Tech. Computer Corp.
+       0100  Keyboard
+       3001  Mass Storage Device
+       3002  Mass Storage Device
+       3003  Mass Storage Device
+       3005  Mass Storage Device
+       3008  Mass Storage Device
+       5250  KeyMaestro Multimedia Keyboard
+       5273  KeyMaestro Multimedia Keyboard
+       5308  KeyMaestro Keyboard
+       5408  KeyMaestro Multimedia Keyboard/Hub
+       5720  Smart Card Reader
+       6782  BTC 7932 mouse+keyboard
+046f  Crystal Semiconductor
+0471  Philips
+       0101  DSS350 Digital Speaker System
+       0104  DSS330 Digital Speaker System [uda1321]
+       0105  UDA1321
+       014f  GoGear SA9200
+       0160  MP3 Player
+       0161  MP3 Player
+       0201  Hub
+       0222  Creative Nomad Jukebox
+       0302  PCA645VC Webcam [pwc]
+       0303  PCA646VC Webcam [pwc]
+       0304  Askey VC010 Webcam [pwc]
+       0307  PCVC675K Webcam [pwc]
+       0308  PCVC680K Webcam [pwc]
+       030b  PC VGA Camera (Vesta Fun)
+       030c  PCVC690K Webcam [pwc]
+       0310  PCVC730K Webcam [pwc]
+       0311  PCVC740K ToUcam Pro [pwc]
+       0312  PCVC750K Webcam [pwc]
+       0314  DMVC 1000K
+       0316  DMVC 2000K Video Capture
+       0321  FunCam
+       0322  DMVC1300K PC Camera
+       0325  SPC 200NC PC Camera
+       0326  SPC 300NC PC Camera
+       0327  Webcam SPC 6000 NC (Webcam w/ mic)
+       0328  SPC 700NC PC Camera
+       0329  SPC 900NC PC Camera / ORITE CCD Webcam(PC370R)
+       032d  SPC 210NC PC Camera
+       032e  SPC 315NC PC Camera
+       0330  SPC 710NC PC Camera
+       0331  SPC 1300NC PC Camera
+       0332  SPC 1000NC PC Camera
+       0333  SPC 620NC PC Camera
+       0334  SPC 520/525NC PC Camera
+       0401  Semiconductors CICT Keyboard
+       0402  PS/2 Mouse on Semiconductors CICT Keyboard
+       0406  15 inch Detachable Monitor
+       0407  10 inch Mobile Monitor
+       0471  Digital Speaker System
+       0601  OVU1020 IR Dongle (Kbd+Mouse)
+       0602  ATI Remote Wonder II Input Device
+       0603  ATI Remote Wonder II Controller
+       0608  eHome Infrared Receiver
+       060a  TSU9600 Remote Control
+       060e  RF Dongle
+       0617  IEEE802.15.4 RF Dongle
+       0619  TSU9400 Remote Control
+       0700  Semiconductors CICT Hub
+       0701  150P1 TFT Display
+       0809  AVNET Bluetooth Device
+       0811  JR24 CDRW
+       0815  eHome Infrared Receiver
+       0844  SA2111/02 1GB Flash Audio Player
+       1120  Creative Rhomba MP3 player
+       1125  Nike psa[128max Player
+       1137  HDD065 MP3 player
+       1201  Arima Bluetooth Device
+       1230  Wireless Adapter 11g
+       1232  SNU6500 Wireless Adapter
+       1233  Wireless Adapter Bootloader Download
+       1236  SNU5600 802.11bg
+       1237  TalkTalk SNU5630NS/05 802.11bg
+       1552  ISP 1581 Hi-Speed USB MPEG2 Encoder Reference Kit
+       1801  Diva MP3 player
+       200a  Wireless Network Adapter
+       200f  802.11n Wireless Adapter
+       2034  Webcam SPC530NC
+       203f  TSU9200 Remote Control
+       2046  TSU9800 Remote Control
+       205e  TSU9300 Remote Control
+       262c  SPC230NC Webcam
+       485d  Senselock SenseIV v2.x
+0472  Chicony Electronics Co., Ltd
+       0065  PFU-65 Keyboard
+       b086  Asus USB2.0 Webcam
+       b091  Webcam
+0473  Sanyo Information Business Co., Ltd
+0474  Sanyo Electric Co., Ltd
+       0110  Digital Voice Recorder R200
+       0217  Xacti J2
+       022f  C5 Digital Media Camera (mass storage mode)
+       0230  C5 Digital Media Camera (PictBridge mode)
+       0231  C5 Digital Media Camera (PC control mode)
+       0401  Optical Drive
+       0701  SCP-4900 Cellphone
+       071f  Usb Com Port Enumerator
+       0722  W33SA Camera
+0475  Relisys/Teco Information System
+       0100  NEC Petiscan
+       0103  Eclipse 1200U/Episode
+       0210  Scorpio Ultra 3
+0476  AESP
+0477  Seagate Technology, Inc.
+0478  Connectix Corp.
+       0001  QuickCam
+       0002  QuickClip
+       0003  QuickCam Pro
+0479  Advanced Peripheral Laboratories
+047a  Semtech Corp.
+       0004  ScreenCoder UR7HCTS2-USB
+047b  Silitek Corp.
+       0001  Keyboard
+       0002  Keyboard and Mouse
+       00f9  SK-1789u Keyboard
+       0101  BlueTooth Keyboard and Mouse
+       020b  SK-3105 SmartCard Reader
+       050e  Internet Compact Keyboard
+       1000  Trust Office Scan USB 19200
+       1002  HP ScanJet 4300c Parallel Port
+047c  Dell Computer Corp.
+047d  Kensington
+       1001  Mouse*in*a*Box
+       1002  Expert Mouse Pro
+       1003  Orbit TrackBall
+       1004  MouseWorks
+       1005  TurboBall
+       1006  TurboRing
+       1009  Orbit TrackBall for Mac
+       1012  PocketMouse
+       1013  Mouse*in*a*Box Optical Pro
+       1014  Expert Mouse Pro Wireless
+       1015  Expert Mouse
+       1016  ADB/USB Orbit
+       1018  Studio Mouse
+       101d  Mouse*in*a*Box Optical Pro
+       101e  Studio Mouse Wireless
+       101f  PocketMouse Pro
+       1020  Expert Mouse Trackball
+       1021  Expert Mouse Wireless
+       1022  Orbit Optical
+       1023  Pocket Mouse Pro Wireless
+       1024  PocketMouse
+       1025  Mouse*in*a*Box Optical Elite Wireless
+       1026  Pocket Mouse Pro
+       1027  StudioMouse
+       1028  StudioMouse Wireless
+       1029  Mouse*in*a*Box Optical Elite
+       102a  Mouse*in*a*Box Optical
+       102b  PocketMouse
+       102c  Iridio
+       102d  Pilot Optical
+       102e  Pilot Optical Pro
+       102f  Pilot Optical Pro Wireless
+       104a  PilotMouse Mini Retractable
+       105d  PocketMouse Bluetooth
+       105e  Bluetooth EDR Dongle
+       1061  PocketMouse Grip
+       1062  PocketMouse Max
+       1063  PocketMouse Max Wireless
+       1064  PocketMouse 2.0 Wireless
+       1065  PocketMouse 2.0
+       1066  PocketMouse Max Glow
+       1067  ValueMouse
+       1068  ValueOpt White
+       1069  ValueOpt Black
+       106a  PilotMouse Laser Wireless Mini
+       106b  PilotMouse Laser - 3 Button
+       106c  PilotMouse Laser - Gaming
+       106d  PilotMouse Laser - Wired
+       106e  PilotMouse Micro Laser
+       1070  ValueOpt Travel
+       1071  ValueOpt RF TX
+       1072  PocketMouse Colour
+       1073  PilotMouse Laser - 6 Button
+       1074  PilotMouse Laser Wireless Mini
+       1075  SlimBlade Presenter Media Mouse
+       1076  SlimBlade Media Mouse
+       1077  SlimBlade Presenter Mouse
+       1152  Bluetooth EDR Dongle
+       2002  Optical Elite Wireless
+       2010  Wireless Presentation Remote
+       2021  PilotBoard Wireless
+       2030  PilotBoard Wireless
+       2034  SlimBlade Media Notebook Set
+       4003  Gravis Xterminator Digital Gamepad
+       4005  Gravis Eliminator GamePad Pro
+       4006  Gravis Eliminator AfterShock
+       4007  Gravis Xterminator Force
+       4008  Gravis Destroyer TiltPad
+       5001  Cabo I Camera
+       5002  VideoCam CABO II
+       5003  VideoCam
+047e  Agere Systems, Inc. (Lucent)
+       0300  ORiNOCO Card
+       1001  USS720 Parallel Port
+       2892  Systems Soft Modem
+       bad1  Lucent 56k Modem
+       f101  Atlas Modem
+047f  Plantronics, Inc.
+       0101  Bulk Driver
+       0301  Bulk Driver
+       0ca1  USB DSP v4 Audio Interface
+       4254  BUA-100 Bluetooth Adapter
+0480  Toshiba America Info. Systems, Inc.
+       0001  InTouch Module
+       0004  InTouch Module
+       0011  InTouch Module
+       0014  InTouch Module
+0481  Zenith Data Systems
+0482  Kyocera Corp.
+       000e  FS-1020D Printer
+       0100  Finecam S3x
+       0101  Finecam S4
+       0103  Finecam S5
+       0105  Finecam L3
+       0106  Finecam
+       0107  Digital Camera Device
+       0108  Digital Camera Device
+       0203  AH-K3001V
+       0204  iBurst Terminal
+0483  SGS Thomson Microelectronics
+       0137  BeWAN ADSL USB ST (blue or green)
+       0138  Unicorn II (ST70138B + MTC-20174TQ chipset)
+       1307  Cytronix 6in1 Card Reader
+       163d  Cool Icam Digi-MP3
+       2015  TouchChip® Fingerprint Reader
+       2016  Fingerprint Reader
+       2017  Biometric Smart Card Reader
+       2018  BioSimKey
+       2302  Portable Flash Device (PFD)
+       4810  ISDN adapter
+       481d  BT Digital Access adapter
+       5000  ST Micro Bluetooth Device
+       5001  ST Micro Bluetooth Device
+       7270  ST Micro Serial Bridge
+       7554  56k SoftModem
+       ff10  Swann ST56 Modem
+0484  Specialix
+0485  Nokia Monitors
+0486  ASUS Computers, Inc.
+0487  Stewart Connector
+0488  Cirque Corp.
+0489  Foxconn / Hon Hai
+       0502  SmartMedia Card Reader Firmware Loader
+       0503  SmartMedia Card Reader
+       e000  T-Com TC 300
+       e003  Pirelli DP-L10
+048a  S-MOS Systems, Inc.
+048c  Alps Electric Ireland, Ltd
+048d  Integrated Technology Express, Inc.
+048f  Eicon Tech.
+0490  United Microelectronics Corp.
+0491  Capetronic
+       0003  Taxan Monitor Control
+0492  Samsung SemiConductor, Inc.
+0493  MAG Technology Co., Ltd
+0495  ESS Technology, Inc.
+0496  Micron Electronics
+0497  Smile International
+       c001  Camera Device
+0498  Capetronic (Kaohsiung) Corp.
+0499  Yamaha Corp.
+       1000  UX256 MIDI I/F
+       1001  MU1000
+       1002  MU2000
+       1003  MU500
+       1004  UW500
+       1005  MOTIF6
+       1006  MOTIF7
+       1007  MOTIF8
+       1008  UX96 MIDI I/F
+       1009  UX16 MIDI I/F
+       100a  EOS BX
+       100c  UC-MX
+       100d  UC-KX
+       100e  S08
+       100f  CLP-150
+       1010  CLP-170
+       1011  P-250
+       1012  TYROS
+       1013  PF-500
+       1014  S90
+       1015  MOTIF-R
+       1016  MDP-5
+       1017  CVP-204
+       1018  CVP-206
+       1019  CVP-208
+       101a  CVP-210
+       101b  PSR-1100
+       101c  PSR-2100
+       101d  CLP-175
+       101e  PSR-K1
+       101f  EZ-J24
+       1020  EZ-250i
+       1021  MOTIF ES 6
+       1022  MOTIF ES 7
+       1023  MOTIF ES 8
+       1024  CVP-301
+       1025  CVP-303
+       1026  CVP-305
+       1027  CVP-307
+       1028  CVP-309
+       1029  CVP-309GP
+       102a  PSR-1500
+       102b  PSR-3000
+       102e  ELS-01/01C
+       1030  PSR-295/293
+       1031  DGX-205/203
+       1032  DGX-305
+       1033  DGX-505
+       103c  MOTIF-RACK ES
+       1054  S90XS Keyboard/Music Synthesizer
+       2000  DGP-7
+       2001  DGP-5
+       3001  YST-MS55D USB Speaker
+       3003  YST-M45D USB Speaker
+       4000  NetVolante RTA54i Broadband&ISDN Router
+       4001  NetVolante RTW65b Broadband Wireless Router
+       4002  NetVolante RTW65i Broadband&ISDN Wireless Router
+       4004  NetVolante RTA55i Broadband VoIP Router
+       5000  CS1D
+       5001  DSP1D
+       5002  DME32
+       5003  DM2000
+       5004  02R96
+       5005  ACU16-C
+       5006  NHB32-C
+       5007  DM1000
+       5008  01V96
+       5009  SPX2000
+       500a  PM5D
+       500b  DME64N
+       500c  DME24N
+       6001  CRW2200UX Lightspeed 2 External CD-RW Drive
+       7000  DTX
+       7010  UB99
+049a  Gandalf Technologies, Ltd
+049b  Curtis Computer Products
+049c  Acer Advanced Labs, Inc.
+       0002  Keyboard (???)
+049d  VLSI Technology
+049f  Compaq Computer Corp.
+       0002  InkJet Color Printer
+       0003  iPAQ PocketPC
+       000e  Internet Keyboard
+       0012  InkJet Color Printer
+       0018  PA-1/PA-2 MP3 Player
+       0019  InkJet Color Printer
+       001a  S4 100 Scanner
+       001e  IJ650 Inkjet Printer
+       001f  WL215 Adapter
+       0021  S200 Scanner
+       0027  Bluetooth Multiport Module by Compaq
+       002a  1400P Inkjet Printer
+       002b  A3000
+       002c  Lexmark X125
+       0032  802.11b Adapter [ipaq h5400]
+       0033  802.11b Adapter [orinoco]
+       0036  Bluetooth Multiport Module
+       0051  KU-0133 Easy Access Interner Keyboard
+       0076  Wireless LAN MultiPort W200
+       0080  GPRS Multiport
+       0086  Bluetooth Device
+       504a  Personal Jukebox PJB100
+       505a  Linux-USB "CDC Subset" Device, or Itsy (experimental)
+       8511  iPAQ Networking 10/100 Ethernet [pegasus2]
+04a0  Digital Equipment Corp.
+04a1  SystemSoft Corp.
+       fff0  Telex Composite Device
+04a2  FirePower Systems
+04a3  Trident Microsystems, Inc.
+04a4  Hitachi, Ltd
+       0004  DVD-CAM DZ-MV100A Camcorder
+       001e  DVDCAM USB HS Interface
+04a5  Acer Peripherals Inc. (now BenQ Corp.)
+       0001  Keyboard
+       0002  API Ergo K/B
+       0003  API Generic K/B Mouse
+       12a6  AcerScan C310U
+       1a20  Prisa 310U
+       1a2a  Prisa 620U
+       2022  Prisa 320U/340U
+       2040  Prisa 620UT
+       205e  ScanPrisa 640BU
+       2060  Prisa 620U+/640U
+       207e  Prisa 640BU
+       209e  ScanPrisa 640BT
+       20ae  S2W 3000U
+       20b0  S2W 3300U/4300U
+       20be  Prisa 640BT
+       20c0  Prisa 1240UT
+       20de  S2W 4300U+
+       20f8  Benq 5000
+       20fc  Benq 5000
+       20fe  SW2 5300U
+       2137  Benq 5150/5250
+       2202  Benq 7400UT
+       2311  Benq 5560
+       3003  Benq Webcam
+       3008  Benq 1500
+       300a  Benq 3410
+       300c  Benq 1016
+       3019  Benq DC C40
+       4000  P30 Composite Device
+       6001  Mass Storage Device
+       6002  Mass Storage Device
+       6003  ATA/ATAPI Adapter
+       6004  Mass Storage Device
+       6005  Mass Storage Device
+       6006  Mass Storage Device
+       6007  Mass Storage Device
+       6008  Mass Storage Device
+       6009  Mass Storage Device
+       600a  Mass Storage Device
+       600b  Mass Storage Device
+       600c  Mass Storage Device
+       600d  Mass Storage Device
+       600e  Mass Storage Device
+       600f  Mass Storage Device
+       6010  Mass Storage Device
+       6011  Mass Storage Device
+       6012  Mass Storage Device
+       6013  Mass Storage Device
+       6014  Mass Storage Device
+       6015  Mass Storage Device
+       6125  MP3 Player
+       6180  MP3 Player
+       6200  MP3 Player
+       7500  Hi-Speed Mass Storage Device
+       9000  AWL300 Wireless Adapter
+       9001  AWL400 Wireless Adapter
+       9213  Kbd Hub
+04a6  Nokia Display Products
+       00b9  Audio
+       0180  Hub Type P
+       0181  HID Monitor Controls
+04a7  Visioneer
+       0100  StrobePro
+       0101  Strobe Pro Scanner (1.01)
+       0102  StrobePro Scanner
+       0211  OneTouch 7600 Scanner
+       0221  OneTouch 5300 Scanner
+       0223  OneTouch 8200
+       0224  OneTouch 4800 USB/Microtek Scanport 3000
+       0225  VistaScan Astra 3600(ENG)
+       0226  OneTouch 5300 USB
+       0229  OneTouch 7100
+       022a  OneTouch 6600
+       022c  OneTouch 9000/9020
+       0231  6100 Scanner
+       0311  6200 EPP/USB Scanner
+       0321  OneTouch 8100 EPP/USB Scanner
+       0331  OneTouch 8600 EPP/USB Scanner
+       0341  6400
+       0361  VistaScan Astra 3600(ENG)
+       0362  OneTouch 9320
+       0371  OneTouch 8700/8920
+       0380  OneTouch 7700
+       0382  Photo Port 7700
+       0390  9650
+       03a0  Xerox 4800 One Touch
+       0410  OneTouch Pro 8800/8820
+       0421  9450 USB
+       0423  9750 Scanner
+       0424  Strobe XP 450
+       0425  Strobe XP 100
+       0426  Strobe XP 200
+       0427  Strobe XP 100
+       0444  OneTouch 7300
+       0445  CardReader 100
+       0446  Xerox DocuMate 510
+       0447  XEROX DocuMate 520
+       0448  XEROX DocuMate 250
+       0449  Xerox DocuMate 252
+       044a  Xerox 6400
+       044c  Xerox DocuMate 262
+       0474  Strobe XP 300
+       0475  Xerox DocuMate 272
+       0478  Strobe XP 220
+       0479  Strobe XP 470
+       047a  9450
+       047b  9650
+       047d  9420
+       0480  9520
+       048f  Strobe XP 470
+       0491  Strobe XP 450
+       0493  9750
+       0494  Strobe XP 120
+       0497  Patriot 430
+       0498  Patriot 680
+       0499  Patriot 780
+       049b  Strobe XP 100
+       04a0  7400
+       04ac  Xerox Travel Scanner 100
+04a8  Multivideo Labs, Inc.
+       0101  Hub
+       0303  Peripheral Switch
+       0404  Peripheral Switch
+04a9  Canon, Inc.
+       1005  BJ Printer Hub
+       1035  PD Printer Storage
+       1050  BJC-8200
+       1051  BJC-3000 Color Printer
+       1052  BJC-6100
+       1053  BJC-6200
+       1054  BJC-6500
+       1055  BJC-85
+       1056  BJC-2110 Color Printer
+       1057  LR1
+       105a  BJC-55
+       105b  S600 Printer
+       105c  S400
+       105d  S450 Printer
+       105e  S800
+       1062  S500 Printer
+       1063  S4500
+       1064  S300 Printer
+       1065  S100
+       1066  S630
+       1067  S900
+       1068  S9000
+       1069  S820
+       106a  S200 Printer
+       106b  S520 Printer
+       106d  S750 Printer
+       106e  S820D
+       1070  S530D
+       1072  I850 Printer
+       1073  I550 Printer
+       1074  S330 Printer
+       1076  i70
+       1077  i950
+       107a  S830D
+       107b  i320
+       107c  i470D
+       107d  i9100
+       107e  i450
+       107f  i860
+       1082  i350
+       1084  i250
+       1085  i255
+       1086  i560
+       1088  i965
+       108a  i455
+       108b  i900D
+       108c  i475D
+       108d  PIXMA iP2000
+       108f  i80
+       1090  i9900 Photo Printer
+       1091  PIXMA iP1500
+       1093  PIXMA iP4000
+       1094  PIXMA iP3000x Printer
+       1095  PIXMA iP6000D
+       1097  PIXMA iP5000
+       1098  PIXMA iP1000
+       1099  PIXMA iP8500
+       109c  PIXMA iP4000R
+       109d  iP90
+       10a0  PIXMA iP1600 Printer
+       10a2  iP4200
+       10a4  iP5200R
+       10a5  iP5200
+       10a7  iP6210D
+       10a8  iP6220D
+       10a9  iP6600D
+       10b6  PIXMA iP4300 Printer
+       10c2  PIXMA iP1800 Printer
+       10c4  Pixma iP4500 Printer
+       1404  W6400PG
+       1405  W8400PG
+       150f  BIJ2350 PCL
+       1510  BIJ1350 PCL
+       1512  BIJ1350D PCL
+       1601  DR-2080C Scanner
+       1607  DR-6080 Scanner
+       1700  PIXMA MP110 Scanner
+       1701  PIXMA MP130 Scanner
+       1702  MP410 Composite
+       1703  MP430 Composite
+       1704  MP330 Composite
+       1706  PIXMA MP750 Scanner
+       1707  PIXMA MP780 Scanner
+       1708  PIXMA MP760 Scanner
+       1709  PIXMA MP150 Scanner
+       170a  PIXMA MP170 Scanner
+       170b  PIXMA MP450 Scanner
+       170c  PIXMA MP500 Scanner
+       170d  PIXMA MP800 Scanner
+       170e  MP800R
+       1710  MP950
+       1712  MP530
+       1713  PIXMA MP830 Scanner
+       1714  MP160
+       1715  MP180 Storage
+       1716  MP460 Composite
+       1717  MP510
+       1718  MP600 Storage
+       171a  MP810 Storage
+       171b  MP960
+       1721  MP210 ser
+       1723  MP470 ser
+       1725  MP610 ser
+       1726  MP970 ser
+       1727  MX300 ser
+       1728  MX310 ser
+       1729  MX700 ser
+       172b  MP140 ser
+       1900  CanoScan LiDE 90
+       1905  CanoScan LiDE 200
+       2200  CanoScan LiDE 25
+       2201  CanoScan FB320U
+       2202  CanoScan FB620U
+       2204  CanoScan FB630U
+       2205  CanoScan FB1210U
+       2206  CanoScan N650U/N656U
+       2207  CanoScan 1220U
+       2208  CanoScan D660U
+       220a  CanoScan D2400UF
+       220b  CanoScan D646U
+       220c  CanoScan D1250U2
+       220d  CanoScan N670U/N676U/LiDE 20
+       220e  CanoScan N1240U/LiDE 30
+       220f  CanoScan 8000F
+       2210  CanoScan 9900F
+       2212  CanoScan 5000F
+       2213  CanoScan LiDE 50/LiDE 35/LiDE 40
+       2214  CanoScan LiDE 80
+       2215  CanoScan 3000/3000F/3000ex
+       2216  CanoScan 3200F
+       2217  CanoScan 5200F
+       2219  CanoScan 9950F
+       221b  CanoScan 4200F
+       221c  CanoScan LiDE 60
+       221e  CanoScan 8400F
+       221f  CanoScan LiDE 500F
+       2220  CanoScan LIDE 25
+       2225  CanoScan LiDE 70
+       2228  CanoScan 4400F
+       2602  MultiPASS C555
+       2603  MultiPASS C755
+       260a  CAPT Printer
+       260e  LBP-2000
+       2610  MPC600F
+       2611  SmartBase MPC400
+       2612  MultiPASS C855
+       2617  CAPT Printer
+       261a  iR1600
+       261b  iR1610
+       261c  iC2300
+       261f  MPC200 Printer
+       2621  iR2000
+       2622  iR2010
+       2623  FAX-B180C
+       2629  FAXPHONE L75
+       262b  LaserShot LBP-1120 Printer
+       262d  iR C3200
+       262f  MultiPASS MP730
+       2630  MultiPASS MP700
+       2631  LASER CLASS 700
+       2632  FAX-L2000
+       2635  MPC190
+       2637  iR C6800
+       2638  iR C3100
+       263c  Smartbase MP360
+       263d  MP370
+       263e  MP390 FAX
+       263f  MP375
+       2646  MF5530 Scanner Device V1.9.1
+       2647  MF5550 Composite
+       264e  MF5630
+       264f  MF5650 (FAX)
+       2650  iR 6800C EUR
+       2651  iR 3100C EUR
+       2655  FP-L170/MF350/L380/L398
+       2659  MF8100
+       265b  CAPT Printer
+       265c  iR C3220
+       265d  MF5730
+       265e  MF5750
+       265f  MF5770
+       2660  MF3110
+       2663  iR3570/iR4570
+       2664  iR2270/iR2870
+       2665  iR C2620
+       2666  iR C5800
+       2667  iR85PLUS
+       2669  iR105PLUS
+       266a  CAPT Device
+       266b  iR8070
+       266c  iR9070
+       266d  iR 5800C EUR
+       266e  CAPT Device
+       266f  iR2230
+       2670  iR3530
+       2671  iR5570/iR6570
+       2672  iR C3170
+       2673  iR 3170C EUR
+       2674  L120
+       2675  iR2830
+       2676  CAPT Device
+       2677  iR C2570
+       2678  iR 2570C EUR
+       2679  CAPT Device
+       267a  iR2016
+       267b  iR2020
+       267d  MF7100 series
+       2684  MF3200 series
+       2686  MF6500 series
+       2687  iR4530
+       2688  LBP3460
+       268c  iR C6870
+       268d  iR 6870C EUR
+       268e  iR C5870
+       268f  iR 5870C EUR
+       2691  iR7105
+       26a3  MF4100 series
+       26b0  MF4600 series
+       26b4  MF4010 series
+       26b5  MF4200 series
+       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
+       304a  CP-10
+       304b  IXY Digital 300
+       304c  PowerShot S300
+       304d  Digital IXUS 300
+       304e  PowerShot A20
+       304f  PowerShot A10
+       3050  PowerShot unknown 1
+       3051  PowerShot S110
+       3052  Digital IXUS V
+       3055  PowerShot G2
+       3056  PowerShot S40
+       3057  PowerShot S30
+       3058  PowerShot A40
+       3059  PowerShot A30
+       305b  ZR45MC Digital Camcorder
+       305c  PowerShot unknown 2
+       3060  EOS D60
+       3061  PowerShot A100
+       3062  PowerShot A200
+       3063  CP-100
+       3065  PowerShot S200
+       3066  Digital IXUS 330
+       3067  MV550i Digital Video Camera
+       3069  PowerShot G3
+       306a  Digital unknown 3
+       306b  MVX2i Digital Video Camera
+       306c  PowerShot S45
+       306d  PowerShot S45 PtP Mode
+       306e  PowerShot G3 (normal mode)
+       306f  PowerShot G3 (ptp)
+       3070  PowerShot S230
+       3071  PowerShot S230 (ptp)
+       3072  PowerShot SD100 / Digital IXUS II (ptp)
+       3073  PowerShot A70 (ptp)
+       3074  PowerShot A60 (ptp)
+       3075  IXUS 400 Camera
+       3076  PowerShot A300
+       3077  PowerShot S50
+       3078  ZR70MC Digital Camcorder
+       307a  MV650i (normal mode)
+       307b  MV630i Digital Video Camera
+       307c  MV630i (normal mode)
+       307d  CP-300
+       307f  Optura 20
+       3080  MVX150i (normal mode) / Optura 20 (normal mode)
+       3081  Optura 10
+       3082  MVX100i / Optura 10
+       3083  EOS 10D
+       3084  EOS 300D / EOS Digital Rebel
+       3085  PowerShot G5
+       3087  Elura 50 (PTP mode)
+       3088  Elura 50 (normal mode)
+       308d  MVX3i
+       308e  FV M1 (normal mode) / MVX 3i (normal mode) / Optura Xi (normal mode)
+       3093  Optura 300
+       3096  IXY DV M2 (normal mode) / MVX 10i (normal mode)
+       3099  EOS 300D (ptp)
+       309a  PowerShot A80
+       309b  Digital IXUS (ptp)
+       309c  PowerShot S1 IS
+       309d  Camera
+       309f  Camera
+       30a0  Camera
+       30a1  Camera
+       30a2  Camera
+       30a8  Elura 60E/Optura 40 (ptp)
+       30a9  MVX25i (normal mode) / Optura 40 (normal mode)
+       30b1  PowerShot S70 (normal mode) / PowerShot S70 (PTP mode)
+       30b2  PowerShot S60 (normal mode) / PowerShot S60 (PTP mode)
+       30b3  PowerShot G6 (normal mode) / PowerShot G6 (PTP mode)
+       30b4  PowerShot S500
+       30b5  PowerShot A75
+       30b6  Digital IXUS II2  / Digital IXUS II2 (PTP mode) / PowerShot SD110 (PTP mode) / PowerShot SD110 Digital ELPH
+       30b7  PowerShot A400 / PowerShot A400 (PTP mode)
+       30b8  PowerShot A310 / PowerShot A310 (PTP mode)
+       30b9  Powershot A85
+       30ba  PowerShot S410 Digital Elph
+       30bb  PowerShot A95
+       30bd  CP-220
+       30be  CP-330
+       30bf  Digital IXUS 40
+       30c0  Digital IXUS 30 (PTP mode) / PowerShot SD200 (PTP mode)
+       30c1  Digital IXUS 50 (normal mode) / IXY Digital 55 (normal mode) / PowerShot A520 (PTP mode) / PowerShot SD400 (normal mode)
+       30c2  PowerShot A510 (normal mode) / PowerShot A510 (PTP mode)
+       30c4  Digital IXUS i5 (normal mode) / IXY Digital L2 (normal mode) / PowerShot SD20 (normal mode)
+       30ea  EOS 1D Mark II (PTP mode)
+       30eb  EOS 20D
+       30ec  EOS 20D (ptp)
+       30ee  EOS 350D
+       30ef  EOS 350D (ptp)
+       30f0  PowerShot S2 IS (PTP mode)
+       30f2  Digital IXUS 700 (normal mode) / Digital IXUS 700 (PTP mode) / IXY Digital 600 (normal mode) / PowerShot SD500 (normal mode) / PowerShot SD500 (PTP mode)
+       30f6  SELPHY CP400
+       30f8  Powershot A430
+       30f9  PowerShot A410 (PTP mode)
+       30fc  PowerShot A620 (PTP mode)
+       30fd  PowerShot A610 (normal mode)/PowerShot A610 (PTP mode)
+       30fe  Digital IXUS 65 (PTP mode)/PowerShot SD630 (PTP mode)
+       30ff  Digital IXUS 55 (PTP mode)/PowerShot SD450 (PTP mode)
+       310b  SELPHY CP600
+       310e  Digital IXUS 50 (PTP mode)
+       3116  Digital IXUS 750 (PTP mode)
+       3117  PowerShot A700
+       312d  Elura 100
+       3138  PowerShot A710 IS
+       3147  EOS 1Ds Mark III
+       3155  PowerShot A450
+       315a  PowerShot G9
+       315d  PowerShot A720
+       3176  PowerShot A590
+       317a  Powershot A470
+       3184  Digital IXUS 80 IS (PTP mode)
+       31bc  PowerShot D10
+       31c0  PowerShot SX200 IS
+       31ff  Digital IXUS 55
+04aa  DaeWoo Telecom, Ltd
+04ab  Chromatic Research
+04ac  Micro Audiometrics Corp.
+04ad  Dooin Electronics
+       2501  Bluetooth Device
+04af  Winnov L.P.
+04b0  Nikon Corp.
+       0102  Coolpix 990
+       0103  Coolpix 880
+       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)
+       0110  Coolpix 3500 (Sierra Mode)
+       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)
+       011d  Coolpix 3700 (ptp)
+       0121  Coolpix 3200 (ptp)
+       0122  Coolpix 2200 (ptp)
+       0124  Coolpix 8400 (mass storage mode)
+       0125  Coolpix 8400 (ptp)
+       0126  Coolpix 8800
+       0129  Coolpix 4800 (ptp)
+       012c  Coolpix 4100 (storage)
+       012d  Coolpix 4100 (ptp)
+       012e  Coolpix 5600 (ptp)
+       0130  Coolpix 4600 (ptp)
+       0135  Coolpix 5900 (ptp)
+       0136  Coolpix 7900 (storage)
+       0137  Coolpix 7900 (ptp)
+       013a  Coolpix 100 (storage)
+       013b  Coolpix 100 (ptp)
+       0141  Coolpix P2 (storage)
+       0142  Coolpix P2 (ptp)
+       0163  Coolpix P5100 (ptp)
+       0169  Coolpix P50 (ptp)
+       0202  Coolpix SQ (ptp)
+       0203  Coolpix 4200 (mass storage mode)
+       0204  Coolpix 4200 (ptp)
+       0205  Coolpix 5200 (storage)
+       0206  Coolpix 5200 (ptp)
+       0301  Coolpix 2000 (storage)
+       0302  Coolpix 2000 (ptp)
+       0402  DSC D100 (ptp)
+       0403  D2H (mass storage mode)
+       0404  D2H SLR (ptp)
+       0405  D70 (mass storage mode)
+       0406  DSC D70 (ptp)
+       0408  D2X SLR (ptp)
+       0409  D50 digital camera
+       040a  D50 (ptp)
+       040c  D2Hs
+       040e  DSC D70s (ptp)
+       040f  D200 (mass storage mode)
+       0410  D200 (ptp)
+       0413  D40 (mass storage mode)
+       0422  D700 (ptp)
+       0425  D300S
+       4000  Coolscan LS 40 ED
+       4001  LS 50 ED/Coolscan V ED
+       4002  Super Coolscan LS-5000 ED
+04b1  Pan International
+04b3  IBM Corp.
+       3003  Rapid Access III Keyboard
+       3004  Media Access Pro Keyboard
+       300a  Rapid Access IIIe Keyboard
+       3016  UltraNav Keyboard Hub
+       3018  UltraNav Keyboard
+       301b  SK-8815 Keyboard
+       301c  Enhanced Performance Keyboard
+       3020  Enhanced Performance Keyboard
+       3100  NetVista Mouse
+       3103  ScrollPoint Pro Mouse
+       3104  ScrollPoint Wireless Mouse
+       3105  ScrollPoint Optical (HID)
+       3107  ThinkPad 800dpi Optical Travel Mouse
+       3108  800dpi Optical Mouse w/ Scroll Point
+       3109  Optical ScrollPoint Pro Mouse
+       310b  Red Wheel Mouse
+       310c  Wheel Mouse
+       4427  Portable CD ROM
+       4482  Serial Converter
+       4485  Serial Converter
+       4525  Double sided CRT
+       4550  NVRAM (128 KB)
+       4554  Cash Drawer
+       4580  Hub w/ NVRAM
+       4581  4800-2xx Hub w/ Cash Drawer
+       4604  Keyboard w/ Card Reader
+       4671  4820 LCD w/ MSR/KB
+04b4  Cypress Semiconductor Corp.
+       0000  Dacal DC-101 CD Library
+       0001  Mouse
+       0002  CY7C63x0x Thermometer
+       0101  Keyboard/Hub
+       0102  Keyboard with APM
+       0130  MyIRC Remote Receiver
+       0306  Telephone Receiver
+       0bad  MetaGeek Wi-Spy
+       1002  CY7C63001 R100 FM Radio
+       1006  Human Interface Device
+       4381  SCAPS USC-1 Scanner Controller
+       4611  Storage Adapter FX2 (CY)
+       4616  Flash Disk (TPP)
+       5500  HID->COM RS232 Adapter
+       6370  ViewMate Desktop Mouse CC2201
+       6560  CY7C65640 USB-2.0 "TetraHub"
+       6830  CY7C68300A EZ-USB AT2 USB 2.0 to ATA/ATAPI
+       6831  Storage Adapter ISD-300LP (CY)
+       7417  Wireless PC Lock
+       8329  USB To keyboard/Mouse Converter
+       8613  CY7C68013 EZ-USB FX2 USB 2.0 Development Kit
+       8614  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
+       861f  Anysee E30 USB 2.0 DVB-T Receiver
+       cc04  Centor USB RACIA-ALVAR USB PORT
+       cc06  Centor-P RACIA-ALVAR USB PORT
+       d5d5  CY7C63x0x Zoltrix Z-Boxer GamePad
+       f000  CY30700 Licorice evaluation board
+04b5  ROHM LSI Systems USA, LLC
+04b6  Hint Corp.
+04b7  Compal Electronics, Inc.
+04b8  Seiko Epson Corp.
+       0001  Stylus Color 740 / Photo 750
+       0002  ISD Smart Cable for Mac
+       0003  ISD Smart Cable
+       0004  Printer
+       0005  Stylus D88+
+       0006  Printer
+       0007  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
+       0116  Perfection 3170 (GT-9400)
+       0118  Perfection 4180 (GF-F600)
+       0119  Perfection 4490 Photo
+       011a  1000 ICS
+       011b  Perfection 2400 Photo
+       011c  Perfection 3200
+       011d  Perfection 1260 Photo
+       011e  Perfection 1660 Photo
+       011f  Perfection 1670
+       0120  Perfection 1270 scanner
+       0121  Perfection 2480 Photo
+       0122  Perfection 3590 scanner
+       0126  GT-15000 (ES-7000)
+       0128  Perfection 4870 (GT-X700)
+       0129  Expression 10000XL (ES-10000G)
+       012a  Perfection 4990 Photo scanner
+       012b  GT-2500 (ES-H300)
+       012c  Perfection V350 (GT-F700)
+       012d  Perfection V10/V100 (GT-S600/F650)
+       012f  Perfection V350 (GT-F700)
+       0130  Perfection V500 (GT-X770)
+       0202  Receipt Printer M129C
+       0401  CP 800 Digital Camera
+       0402  PhotoPC 850z
+       0403  PhotoPC 3000z
+       0509  JVC PIX-MC10
+       0601  Stylus Photo 875DC Card Reader
+       0602  Stylus Photo 895 Card Reader
+       0801  Stylus CX5200/CX5400/CX6600
+       0802  Stylus CX3200
+       0803  Printer (Composite Device)
+       0804  Storage Device
+       0805  Stylus CX6400
+       0806  Stylus Photo RX600/610
+       0807  Stylus Photo RX500/510
+       0808  Stylus CX5200
+       0809  Storage Device
+       080a  Storage Device
+       080c  ME100
+       080d  Stylus CX4500/4600
+       080e  CX-3500/3600/3650 MFP
+       080f  Stylus Photo RX425 scanner
+       0810  Stylus Photo RX700 (PM-A900)
+       0811  Stylus Photo RX620 all-in-one
+       0812  MFP Composite Device
+       0813  Stylus CX6500/6600
+       0814  (PM-A700)
+       0815  AcuLaser CX11 (LP-A500)
+       0816  Printer (Composite Device)
+       0817  (LP-M5500)
+       0818  Stylus CX3700/CX3800/DX3800
+       0819  Stylus CX4700/CX4800/DX4800 (PX-A750)
+       081a  Stylus Photo RX520/RX530 (PM-A750)
+       081b  MFP Composite Device
+       081c  Stylus Photo RX640/RX650 (PM-A890)
+       081d  (PM-A950)
+       081e  MFP Composite Device
+       081f  Stylus CX7700/7800
+       0820  CX4200 MP scanner
+       0821  MFP Composite Device
+       0822  Storage Device
+       0823  MFP Composite Device
+       0824  Storage Device
+       0825  MFP Composite Device
+       0826  Storage Device
+       0827  Stylus Photo RX560/580/590 (PM-A820)
+       0828  (PM-A970)
+       0829  (PM-T990)
+       082a  (PM-A920)
+       082b  Stylus DX5050
+       082c  Storage Device
+       082d  Storage Device
+       082e  0x082e  DX-60x0 MFP scanner
+       082f  Stylus DX4050
+       0830  Stylus CX2800/CX2900/ME200
+       0831  MFP Composite Device
+       0832  MFP Composite Device
+       0833  (LP-M5600)
+       0834  MFP Composite Device
+       0835  AcuLaser CX21
+       0836  MFP Composite Device
+       0837  MFP Composite Device
+       0838  CX7300/CX7400/DX7400
+       0839  CX8300/CX8400/DX8400
+       083a  CX9300F/CX9400Fax/DX9400F
+       083b  MFP Composite Device
+       083c  MFP Composite Device
+       083d  MFP Composite Device
+       083e  MFP Composite Device
+       083f  Stylus DX4450
+       0849  Stylus SX205
+04b9  Rainbow Technologies, Inc.
+       0300  SafeNet USB SuperPro/UltraPro
+       1000  iKey 1000 Token
+       1001  iKey 1200 Token
+       1002  iKey Token
+       1003  iKey Token
+       1004  iKey Token
+       1005  iKey Token
+       1006  iKey Token
+       1200  iKey 2000 Token
+       1201  iKey Token
+       1202  iKey 2032 Token
+       1203  iKey Token
+       1204  iKey Token
+       1205  iKey Token
+       1206  iKey Token
+       1300  iKey 3000 Token
+       1301  iKey 3000
+       1302  iKey Token
+       1303  iKey Token
+       1304  iKey Token
+       1305  iKey Token
+       1306  iKey Token
+04ba  Toucan Systems, Ltd
+04bb  I-O Data Device, Inc.
+       0101  USB2-IDE/ATAPI Bridge Adapter
+       0201  USB2-IDE/ATAPI Bridge Adapter
+       0204  DVD Multi-plus unit iU-CD2
+       0206  DVD Multi-plus unit DVR-UEH8
+       0301  Storage Device
+       0314  USB-SSMRW SD-card
+       0319  USB2-IDE/ATAPI Bridge Adapter
+       031a  USB2-IDE/ATAPI Bridge Adapter
+       031b  USB2-IDE/ATAPI Bridge Adapter
+       031e  USB-SDRW SD-card
+       0502  Nogatech Live! (BT)
+       0901  USB ETT
+       0904  ET/TX Ethernet [pegasus]
+       0913  ET/TX-S Ethernet [pegasus2]
+       0919  USB WN-B11
+       0922  IOData AirPort WN-B11/USBS 802.11b
+       0930  ETG-US2
+       0937  WN-WAG/USL Wireless LAN Adapter
+       0938  WN-G54/USL Wireless LAN Adapter
+       093f  WNGDNUS2 802.11n
+       0944  WHG-AGDN/US Wireless LAN Adapter
+       0945  WN-GDN/US3 Wireless LAN Adapter
+       0947  WN-G150U Wireless LAN Adapter
+       0948  WN-G300U Wireless LAN Adapter
+       0a03  Serial USB-RSAQ1
+       0a07  USB2-iCN Adapter
+       0a08  USB2-iCN Adapter
+       0c01  FM-10 Pro Disk
+04bd  Toshiba Electronics Taiwan Corp.
+04be  Telia Research AB
+04bf  TDK Corp.
+       0100  MediaReader CF
+       0115  USB-PDC Adapter UPA9664
+       0116  USB-cdmaOne Adapter UCA1464
+       0117  USB-PHS Adapter UHA6400
+       0118  USB-PHS Adapter UPA6400
+       0135  MediaReader Dual
+       0202  73S1121F Smart Card Reader-
+       0309  Bluetooth USB dongle
+       030a  IBM Bluetooth Ultraport Module
+       030b  Bluetooth Device
+       030c  Ultraport Bluetooth Device
+       0310  Integrated Bluetooth
+       0311  Integrated Bluetooth Device
+       0317  Bluetooth UltraPort Module from IBM
+       0318  IBM Integrated Bluetooth
+       0319  Bluetooth Adapter
+       0320  Bluetooth Adapter
+       0321  Bluetooth Device
+       0a28  INDI AV-IN Device
+04c1  U.S. Robotics (3Com)
+       0020  56K Voice Pro
+       0022  56K Voice Pro
+       007e  ISDN TA
+       0082  OfficeConnect Analog Modem
+       008f  Pro ISDN TA
+       0097  OfficeConnect Analog
+       009d  HomeConnect Webcam [vicam]
+       00a9  ISDN Pro TA-U
+       00b9  HomeConnect IDSL Modem
+       3021  56k Voice FaxModem Pro
+04c2  Methode Electronics Far East PTE, Ltd
+04c3  Maxi Switch, Inc.
+       1102  Mouse
+       2102  Mouse
+04c4  Lockheed Martin Energy Research
+04c5  Fujitsu, Ltd
+       1029  fi-4010c Scanner
+       1033  fi-4110CU
+       1041  fi-4120c Scanner
+       1042  fi-4220c Scanner
+       105b  AH-F401U Air H device
+       1096  fi-5110EOX
+       1097  fi-5110C
+       10ae  fi-4120C2
+       10af  fi-4220C2
+       10e0  fi-5120c Scanner
+       10e1  fi-5220C
+       10e7  fi-5900C
+       10fe  S500
+04c6  Toshiba America Electronic Components
+04c7  Micro Macro Technologies
+04c8  Konica Corp.
+       0720  Digital Color Camera
+       0721  e-miniD Camera
+       0722  e-mini
+       0723  KD-200Z Camera
+       0726  KD-310Z Camera
+       0728  Revio C2 Mass Storage Device
+       0729  Revio C2 Digital Camera
+       072c  Revio KD20M
+       072d  Revio KD410Z
+04ca  Lite-On Technology Corp.
+       1766  HID Monitor Controls
+       9304  Hub
+04cb  Fuji Photo Film Co., Ltd
+       0100  FinePix 30i/40i/50i, A101/201, 1300/2200, 1400/2400/2600/2800/4500/4700/4800/4900/6800/6900 Zoom
+       0103  FinePix NX-500/NX-700 printer
+       0104  FinePix A101, 2600/2800/4800/6800 Zoom (PC CAM)
+       0108  FinePix F601 Zoom (DSC)
+       0109  FinePix F601 Zoom (PC CAM)
+       010a  FinePix S602 (Pro) Zoom (DSC)
+       010b  FinePix S602 (Pro) Zoom (PC CAM)
+       010d  FinePix Digital Camera 020531
+       010e  FinePix F402 Zoom (DSC)
+       010f  FinePix F402 Zoom (PC CAM)
+       0110  FinePix M603 Zoom (DSC)
+       0111  FinePix M603 Zoom (PC CAM)
+       0112  FinePix A202, A200 Zoom (DSC)
+       0113  FinePix A202, A200 Zoom (PC CAM)
+       0114  FinePix F401 Zoom (DSC)
+       0115  FinePix F401 Zoom (PC CAM)
+       0116  FinePix A203 Zoom (DSC)
+       0117  FinePix A203 Zoom (PC CAM)
+       0118  FinePix A303 Zoom (DSC)
+       0119  FinePix A303 Zoom (PC CAM)
+       011a  FinePix S304/3800 Zoom (DSC)
+       011b  FinePix S304/3800 Zoom (PC CAM)
+       011c  FinePix A204/2650 Zoom (DSC)
+       011d  FinePix A204/2650 Zoom (PC CAM)
+       0120  FinePix F700 Zoom (DSC)
+       0121  FinePix F700 Zoom (PC CAM)
+       0122  FinePix F410 Zoom (DSC)
+       0123  FinePix F410 Zoom (PC CAM)
+       0124  FinePix A310 Zoom (DSC)
+       0125  FinePix A310 Zoom (PC CAM)
+       0126  FinePix A210 Zoom (DSC)
+       0127  FinePix A210 Zoom (PC CAM)
+       0128  FinePix A205(S) Zoom (DSC)
+       0129  FinePix A205(S) Zoom (PC CAM)
+       012a  FinePix F610 Zoom (DSC)
+       012b  FinePix Digital Camera 030513
+       012c  FinePix S7000 Zoom (DSC)
+       012d  FinePix S7000 Zoom (PC CAM)
+       012f  FinePix Digital Camera 030731
+       0130  FinePix S5000 Zoom (DSC)
+       0131  FinePix S5000 Zoom (PC CAM)
+       013b  FinePix Digital Camera 030722
+       013c  FinePix S3000 Zoom (DSC)
+       013d  FinePix S3000 Zoom (PC CAM)
+       013e  FinePix F420 Zoom (DSC)
+       013f  FinePix F420 Zoom (PC CAM)
+       0142  FinePix S7000 Zoom (PTP)
+       0148  FinePix A330 Zoom (DSC)
+       0149  FinePix A330 Zoom (UVC)
+       014a  FinePix A330 Zoom (PTP)
+       014b  FinePix A340 Zoom (DSC)
+       014c  FinePix A340 Zoom (UVC)
+       0159  FinePix F710 Zoom (DSC)
+       0165  FinePix S3500 Zoom (DSC)
+       0168  FinePix E500 Zoom (DSC)
+       0169  FinePix E500 Zoom (UVC)
+       016b  FinePix E510 Zoom (DSC)
+       016c  FinePix E510 Zoom (PC CAM)
+       016e  FinePix S5500 Zoom (DSC)
+       016f  FinePix S5500 Zoom (UVC)
+       0171  FinePix E550 Zoom (DSC)
+       0172  FinePix E550 Zoom (UVC)
+       0177  FinePix F10 (DSC)
+       0179  Finepix F10 (PTP)
+       0186  FinePix S5200/S5600 Zoom (DSC)
+       0188  FinePix S5200/S5600 Zoom (PTP)
+       018e  FinePix S9500 Zoom (DSC)
+       018f  FinePix S9500 Zoom (PTP)
+       0192  FinePix E900 Zoom (DSC)
+       0193  FinePix E900 Zoom (PTP)
+       019b  FinePix F30 (PTP)
+       01bf  FinePix F6000fd/S6500fd Zoom (PTP)
+       01c0  FinePix F20 (PTP)
+       01c1  FinePix F31fd (PTP)
+       01c4  FinePix S5700 Zoom (PTP)
+       01c5  FinePix F40fd (PTP)
+       01c6  FinePix A820 Zoom (PTP)
+       01d2  FinePix A800 Zoom (PTP)
+       01d4  FinePix F50fd (PTP)
+       01d5  FinePix F47 (PTP)
+       01fd  A160
+04cc  ST-Ericsson
+       1122  Hub
+       1521  USB 2.0 Hub
+       8116  Camera
+04cd  Tatung Co. Of America
+04ce  ScanLogic Corp.
+       0002  SL11R-IDE IDE Bridge
+       0100  USB2PRN Printer Class
+       0300  Phantom 336CX - C3 scanner
+       04ce  SL11DEMO, VID: 0x4ce, PID: 0x4ce
+       07d1  SL11R, VID: 0x4ce, PID: 0x07D1
+04cf  Myson Century, Inc.
+       0800  MTP800 Mass Storage Device
+       8810  CS8810 Mass Storage Device
+       8811  CS8811 Mass Storage Device
+       8813  CS8813 Mass Storage Device
+       8818  USB2.0 to ATAPI Bridge Controller
+       9920  CS8819A2-114 Mass Storage Device
+04d0  Digi International
+04d1  ITT Canon
+04d2  Altec Lansing Technologies
+       0070  ADA70 Speakers
+       0305  Non-Compliant Audio Device
+       0311  ADA-310 Speakers
+       2060  Claritel-i750 - vp
+       ff05  ADA-305 Speakers
+       ff47  Lansing HID Audio Controls
+       ff49  Lansing HID Audio Controls
+04d3  VidUS, Inc.
+04d4  LSI Logic, Inc.
+04d5  Forte Technologies, Inc.
+04d6  Mentor Graphics
+04d7  Oki Semiconductor
+       1be4  Bluetooth Device
+04d8  Microchip Technology, Inc.
+       0002  USB-LCD 2x20
+       0003  PICkit 2 Microcontroller Programmer
+       8000  In-Circuit Debugger
+       8001  ICD2 in-circuit debugger
+04d9  Holtek Semiconductor, Inc.
+       0022  Portable Keyboard
+       1203  MC Industries Keyboard
+       1503  Shortboard Lefty
+04da  Panasonic (Matsushita)
+       0901  LS-120 Camera
+       0b01  CD-R/RW Drive
+       0b03  SuperDisk 240MB
+       0d01  CD-R Drive KXL-840AN
+       0d09  CD-R Drive KXL-RW32AN
+       0d0a  CD-R Drive KXL-CB20AN
+       0d0d  CDRCB03
+       0d0e  DVD-ROM & CD-R/RW
+       0f40  Printer
+       1500  MFSUSB Driver
+       1b00  MultiMediaCard
+       2121  EB-VS6
+       2317  DVC USB-SERIAL Driver for WinXP
+       2318  NV-GS11/230/250 (webcam mode)
+       2319  NV-GS15 (webcam mode)
+       231a  NV-GS11/230/250 (DV mode)
+       231d  DVC Web Camera Device
+       231e  DVC DV Stream Device
+       2372  Lumix DMC-FZ10 Camera
+       2374  DMC-FZ20
+04db  Hypertec Pty, Ltd
+04dc  Huan Hsin Holdings, Ltd
+04dd  Sharp Corp.
+       13a6  MFC2000
+       6006  AL-1216
+       6007  AL-1045
+       6008  AL-1255
+       6009  AL-1530CS
+       600a  AL-1540CS
+       600b  AL-1456
+       600c  AL-1555
+       600d  AL-1225
+       600e  AL-1551CS
+       600f  AR-122E
+       6010  AR-152E
+       6011  AR-157E
+       6012  SN-1045
+       6013  SN-1255
+       6014  SN-1456
+       6015  SN-1555
+       6016  AR-153E
+       6017  AR-122E N
+       6018  AR-153E N
+       6019  AR-152E N
+       601a  AR-157E N
+       601b  AL-1217
+       601c  AL-1226
+       601d  AR-123E
+       7002  DVC Ver.1.0
+       7004  VE-CG40U Digital Still Camera
+       7005  VE-CG30 Digital Still Camera
+       7007  VL-Z7S Digital Camcorder
+       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/C-860/SL-C3000 PDA
+       9032  Zaurus SL-6000
+       903a  GSM GPRS
+       9050  Zaurus C-860 PDA
+       9056  Viewcam Z
+       9073  AM-900
+       9074  GSM GPRS
+       90a9  Sharp Composite
+       90d0  USB-to-Serial Comm. Port
+       90f2  Sharp 3G GSM USB Control
+       9120  WS004SH
+       9122  WS007SH
+       9123  W-ZERO3 ES Smartphone
+       91a3  922SH Internet Machine
+04de  MindShare, Inc.
+04df  Interlink Electronics
+04e1  Iiyama North America, Inc.
+       0201  Monitor Hub
+04e2  Exar Corp.
+04e3  Zilog, Inc.
+04e4  ACC Microelectronics
+04e5  Promise Technology
+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
+       0009  eUSB ATA/ATAPI Adapter
+       000a  eUSB CompactFlash Adapter
+       000b  eUSCSI Bridge
+       000c  eUSCSI Bridge
+       000d  Dazzle MS
+       0012  Dazzle SD/MMC
+       0101  eUSB ATA Bridge (Sony Spressa USB CDRW)
+       0311  Dazzle DM-CF
+       0312  Dazzle DM-SD/MMC
+       0313  Dazzle SM
+       0314  Dazzle MS
+       0322  e-Film Reader-5
+       0325  eUSB ORCA Quad Reader
+       0327  Digital Media Reader
+       03fe  DMHS2 DFU Adapter
+       0406  eUSB SmartDM Reader
+       04e6  eUSB DFU Adapter
+       04e7  STCII DFU Adapter
+       04e8  eUSBDM DFU Adapter
+       04e9  DM-E DFU Adapter
+       0500  Veridicom 5thSense Fingerprint Sensor and eUSB SmartCard
+       0701  DCS200 Loader Device
+       0702  DVD Creation Station 200
+       0703  DVC100 Loader Device
+       0704  Digital Video Creator 100
+       1001  SCR300 Smart Card Reader
+       1010  USBAT-2 CompactFlash Card Reader
+       1014  e-Film Reader-3
+       1020  USBAT ATA/ATAPI Adapter
+       2007  RSA SecurID ComboReader
+       2009  Citibank Smart Card Reader
+       200a  Reflex v.2 Smart Card Reader
+       200d  STR391 Reader
+       5111  SCR331-DI SmartCard Reader
+       5113  SCR333 SmartCard Reader
+       5114  SCR331-DI SmartCard Reader
+       5115  SCR335 SmartCard Reader
+       5116  SCR331-LC1 SmartCard Reader
+       5117  SCR3320 - Smart Card Reader
+       5118  Expresscard SIM Card Reader
+       5119  SCR3340 - ExpressCard54 Smart Card Reader
+       511b  SmartCard Reader
+       511d  SCR3311 Smart Card Reader
+       5120  SCR331-DI SmartCard Reader
+       5121  SDI010 Smart Card Reader
+       5151  SCR338 Keyboard Smart Card Reader
+       5410  SCR35xx Smart Card Reader
+       e000  SCRx31 Reader
+       e001  SCR331 SmartCard Reader
+       e003  SPR532 PinPad SmartCard Reader
+04e7  Elo TouchSystems
+       0001  TouchScreen
+       0002  Touchmonitor Interface 2600 Rev 2
+       0004  4000U CarrollTouch® Touchmonitor Interface
+       0007  2500U IntelliTouch® Touchmonitor Interface
+       0008  3000U AccuTouch® Touchmonitor Interface
+       0009  4000U CarrollTouch® Touchmonitor Interface
+       0020  Touchscreen Interface (2700)
+       0021  Touchmonitor Interface
+       0030  4500U CarrollTouch® Touchmonitor Interface
+       0032  Touchmonitor Interface
+       0033  Touchmonitor Interface
+       0041  5010 Surface Capacitive Touchmonitor Interface
+       0042  Touchmonitor Interface
+       0050  2216 AccuTouch® Touchmonitor Interface
+       0071  Touchmonitor Interface
+       0072  Touchmonitor Interface
+       0081  Touchmonitor Interface
+       0082  Touchmonitor Interface
+       00ff  Touchmonitor Interface
+04e8  Samsung Electronics Co., Ltd
+       0100  Kingston Flash Drive (128MB)
+       0110  Connect3D Flash Drive
+       0111  Connect3D Flash Drive
+       1003  MP3 Player and Recorder
+       1006  SDC-200Z
+       3004  ML-4600
+       3005  Docuprint P1210
+       3008  ML-6060 laser printer
+       300c  ML-1210 Printer
+       300e  Laser Printer
+       3104  ML-3550N
+       3210  ML-5200A Laser Printer
+       3226  Laser Printer
+       3228  Laser Printer
+       322a  Laser Printer
+       322c  Laser Printer
+       3230  ML-1440
+       3232  Laser Printer
+       3236  ML-1450
+       3238  ML-1430
+       323a  ML-1710 Printer
+       323b  Phaser 3130
+       323c  Laser Printer
+       323d  Phaser 3120
+       323e  Laser Printer
+       3240  Laser Printer
+       3242  Laser Printer
+       3248  Color Laser Printer
+       324a  Laser Printer
+       324c  ML-1740 Printer
+       324d  Phaser 3121
+       325f  Phaser 3425 Laser Printer
+       3260  CLP-510 Color Laser Printer
+       3268  ML-1610 Mono Laser Printer
+       326c  ML-2010P Mono Laser Printer
+       3276  ML-3050/ML-3051 Laser Printer
+       3409  SCX-4216F Scanner
+       340c  SCX-5x15 series
+       340d  SCX-6x20 series
+       340e  MFP 560 series
+       340f  Printing Support
+       3412  SCX-4x20 series
+       3413  SCX-4100 Scanner
+       3415  Composite Device
+       3419  Composite Device
+       341a  Printing Support
+       341b  SCX-4200 series
+       341c  Composite Device
+       341d  Composite Device
+       341f  Composite Device
+       3420  Composite Device
+       3605  InkJet Color Printer
+       3606  InkJet Color Printer
+       3609  InkJet Color Printer
+       3902  InkJet Color Printer
+       3903  Xerox WorkCentre XK50cx
+       390f  InkJet Color Printer
+       3911  SCX-1020 series
+       5000  YP-MF series
+       5001  YP-100
+       5002  YP-30
+       5003  YP-700
+       5004  YP-30
+       5005  YP-300
+       5006  YP-750
+       500d  MP3 Player
+       5010  MP3 Player
+       5011  YP-780
+       5013  YP-60
+       5015  yepp upgrade
+       501b  MP3 Player
+       503b  YP-U1 MP3 Player
+       5050  YP-U2 MP3 Player
+       507d  YP-U3 MP3 Player
+       508b  YP-S5 MP3 Player
+       5a00  YP-NEU
+       5a01  YP-NDU
+       5a03  Yepp MP3 Player
+       5a04  YP-800
+       5a08  YP-90
+       5a0f  MTP Device
+       5b01  Memory Stick Reader/Writer
+       5b02  Memory Stick Reader/Writer
+       5b03  Memory Stick Reader/Writer
+       5b04  Memory Stick Reader/Writer
+       5b05  Memory Stick Reader/Writer
+       5b11  SEW-2001u Card
+       5f00  NEXiO Sync
+       5f01  NEXiO Sync
+       5f02  NEXiO Sync
+       5f03  NEXiO Sync
+       5f04  NEXiO Sync
+       6601  Z100 Mobile Phone
+       6611  MITs Sync
+       6613  MITs Sync
+       6615  MITs Sync
+       6617  MITs Sync
+       6619  MITs Sync
+       661b  MITs Sync
+       661e  Handheld
+       6620  Handheld
+       6622  Handheld
+       6624  Handheld
+       662e  MITs Sync
+       6630  MITs Sync
+       6632  MITs Sync
+       663f  SGH-E720/SGH-E840
+       6640  Usb Modem Enumerator
+       6795  S5230
+       7011  SEW-2003U Card
+       7021  Bluetooth Device
+       7061  eHome Infrared Receiver
+       7081  Human Interface Device
+       8001  Handheld
+       e020  SERI E02 SCOM 6200 UMTS Phone
+       e021  SERI E02 SCOM 6200 Virtual UARTs
+       e022  SERI E02 SCOM 6200 Flash Load Disk
+       ff30  SG_iMON
+04e9  PC-Tel, Inc.
+04ea  Brooktree Corp.
+04eb  Northstar Systems, Inc.
+04ec  Tokyo Electron Device, Ltd
+04ed  Annabooks
+04ef  Pacific Electronic International, Inc.
+04f0  Daewoo Electronics Co., Ltd
+04f1  Victor Company of Japan, Ltd
+       0001  GC-QX3 Digital Still Camera
+       0004  GR-DVL815U Digital Video Camera
+       0006  DV Camera Storage
+       0008  GZ-MG30AA/MC500E Digital Video Camera
+       0009  GR-DX25EK Digital Video Camera
+       000a  GR-D72 Digital Video Camera
+       1001  GC-A50 Camera Device
+       3008  MP-PRX1 Ethernet
+       3009  MP-XP7250 WLAN Adapter
+04f2  Chicony Electronics Co., Ltd
+       0001  KU-8933 Keyboard
+       0002  NT68P81 Keyboard
+       0110  KU-2971 Keyboard
+       0111  KU-9908 Keyboard
+       0112  KU-8933 Keyboard with PS/2 Mouse port
+       0116  KU-2971 German Keyboard
+       0403  KU-0420 keyboard
+       a001  E-Video DC-100 Camera
+       a120  ORITE CCD Webcam(PC370R)
+       a121  ORITE CCD Webcam(PC370R)
+       a122  ORITE CCD Webcam(PC370R)
+       a123  ORITE CCD Webcam(PC370R)
+       a124  ORITE CCD Webcam(PC370R)
+       a128  PC Camera (SN9C202 + OV7663 + EEPROM)
+       a133  Gateway Webcam
+       a136  LabTec Webcam 5500
+       a204  DSC WIA Device (1300)
+       a208  DSC WIA Device (2320)
+       a209  Labtec DC-2320
+       a20a  DSC WIA Device (3310)
+       a20c  DSC WIA Device (3320)
+       a210  Audio Device
+       b008  USB 2.0 Camera
+       b009  Integrated Camera
+       b010  Integrated Camera
+       b012  1.3 MPixel UVC Webcam
+       b013  USB 2.0 Camera
+       b015  VGA 24fps UVC Webcam
+       b016  VGA 30fps UVC Webcam
+       b018  2M UVC Webcam
+       b021  ViewSonic 1.3M, USB2.0 Webcam
+       b022  Gateway USB 2.0 Webcam
+       b023  Gateway USB 2.0 Webcam
+       b024  USB 2.0 Webcam
+       b025  Camera
+       b027  Gateway USB 2.0 Webcam
+       b028  VGA UVC Webcam
+       b029  1.3M UVC Webcam
+       b044  Acer CrystalEye Webcam
+       b057  integrated USB webcam
+       b071  2.0M UVC Webcam / CNF7129
+       b091  Webcam
+       b107  CNF7070 Webcam
+04f3  Elan Microelectronics Corp.
+       0210  AM-400 Hama Optical Mouse
+       0212  Laser Mouse
+04f4  Harting Elektronik, Inc.
+04f5  Fujitsu-ICL Systems, Inc.
+04f6  Norand Corp.
+04f7  Newnex Technology Corp.
+04f8  FuturePlus Systems
+04f9  Brother Industries, Ltd
+       0002  HL-1050 Laser Printer
+       0005  Printer
+       0006  HL-1240 Laser Printer
+       0007  HL-1250 Laser Printer
+       0008  HL-1270 Laser Printer
+       0009  Printer
+       000a  P2500 series
+       000b  Printer
+       000c  Printer
+       000d  HL-1440 Laser Printer
+       000e  HL-1450 series
+       000f  HL-1470N series
+       0010  Printer
+       0011  Printer
+       0012  Printer
+       0013  Printer
+       0014  Printer
+       0015  Printer
+       0016  Printer
+       0017  Printer
+       0018  Printer
+       001a  HL-1430 Laser Printer
+       001c  Printer
+       001e  Printer
+       0020  HL-5130 series
+       0021  HL-5140 series
+       0022  HL-5150D series
+       0023  HL-5170DN series
+       0024  Printer
+       0025  Printer
+       0027  HL-2030 Laser Printer
+       0028  Printer
+       0029  Printer
+       002a  HL-52x0 series
+       002b  Printer
+       002c  Printer
+       002d  Printer
+       0100  MFC8600/9650 series
+       0101  MFC9600/9870 series
+       0102  MFC9750/1200 series
+       0104  MFC-8300J
+       0105  MFC-9600J
+       0106  MFC-7300C
+       0107  MFC-7400C
+       0108  MFC-9200C
+       0109  MFC-830
+       010a  MFC-840
+       010b  MFC-860
+       010c  MFC-7400J
+       010d  MFC-9200J
+       010e  MFC3100C Scanner
+       010f  MFC 5100C
+       0110  MFC4800 Scanner
+       0111  MFC 6800
+       0112  DCP1000 Port(FaxModem)
+       0113  MFC-8500
+       0114  MFC9700 Port(FaxModem)
+       0115  MFC9800 Scanner
+       0116  DCP1400 Scanner
+       0119  MFC-9660
+       011b  MFC-9880
+       011c  MFC-9760
+       011d  MFC-9070
+       011e  MFC-9180
+       011f  MFC-9160
+       0120  MFC580 Port(FaxModem)
+       0121  MFC-590
+       0122  MFC-5100J
+       0129  Imagistics 2500 (MFC-8640D clone)
+       012f  FAX-4750e
+       0132  MFC-5200C RemovableDisk
+       0135  MFC-100 Scanner
+       0136  MFC-150CL Scanner
+       013c  MFC-890 Port
+       013d  MFC-5200J Printer
+       013e  MFC-4420C RemovableDisk
+       013f  MFC-4820C RemovableDisk
+       0140  DCP-8020
+       0141  DCP-8025D
+       0142  MFC-8420
+       0143  MFC-8820D
+       0144  DCP-4020C RemovableDisk
+       0146  MFC-3220C
+       0147  FAX-1820C Printer
+       0148  MFC-3320CN Printer
+       0149  FAX-1920CN Printer
+       014a  MFC-3420C
+       014b  MFC-3820CN
+       014d  FAX-1815C Printer
+       014e  MFC-8820J
+       0150  MFC-8220 Port(FaxModem)
+       0151  MFC-8210J
+       0157  MFC-3420J Printer
+       0158  MFC-3820JN Port(FaxModem)
+       015d  MFC Composite Device
+       015e  DCP-8045D
+       015f  MFC-8440
+       0160  MFC-8840D
+       0161  MFC-210C
+       0162  MFC-420CN Remote Setup Port
+       0163  MFC-410CN RemovableDisk
+       0165  MFC-620CN
+       0166  MFC-610CLN RemovableDisk
+       0168  MFC-620CLN
+       0169  DCP-110C RemovableDisk
+       016b  DCP-310CN RemovableDisk
+       016c  FAX-2440C Printer
+       016d  MFC-5440CN
+       016e  MFC-5840CN Remote Setup Port
+       0170  FAX-1840C Printer
+       0171  FAX-1835C Printer
+       0172  FAX-1940CN Printer
+       0173  MFC-3240C Remote Setup Port
+       0174  MFC-3340CN RemovableDisk
+       017b  Imagistics sx2100
+       0180  MFC-7420
+       0181  MFC-7820N Port(FaxModem)
+       0182  Composite Device
+       0183  DCP-7020
+       0184  DCP-7025 Printer
+       0185  MFC-7220 Printer
+       0186  Composite Device
+       0187  FAX-2820 Printer
+       0188  FAX-2920 Printer
+       018a  MFC-9420CN
+       018c  DCP-115C
+       018d  DCP-116C
+       018e  DCP-117C
+       018f  DCP-118C
+       0190  DCP-120C
+       0191  DCP-315CN
+       0192  DCP-340CW
+       0193  MFC-215C
+       0194  MFC-425CN
+       0195  MFC-820CW Remote Setup Port
+       0196  MFC-820CN Remote Setup Port
+       0197  MFC-640CW
+       019a  MFC-840CLN Remote Setup Port
+       01a2  MFC-8640D
+       01a3  Composite Device
+       01a4  DCP-8065DN Printer
+       01a5  MFC-8460N Port(FaxModem)
+       01a6  MFC-8860DN Port(FaxModem)
+       01a7  MFC-8870DW Printer
+       01a8  DCP-130C
+       01a9  DCP-330C
+       01aa  DCP-540CN
+       01ab  MFC-240C
+       01ae  DCP-750CW RemovableDisk
+       01af  MFC-440CN
+       01b0  MFC-660CN
+       01b1  MFC-665CW Remote Setup Port
+       01b2  MFC-845CW Remote Setup Port
+       01b4  MFC-460CN Remote Setup Port
+       01b5  MFC-630CD
+       01b6  MFC-850CDN
+       01b7  MFC-5460CN Remote Setup Port
+       01b8  MFC-5860CN
+       01ba  MFC-3360C
+       01bd  MFC-8660DN
+       01be  DCP-750CN RemovableDisk
+       01bf  MFC-860CDN Remote Setup Port
+       01c0  DCP-128C
+       01c1  DCP-129C
+       01c2  DCP-131C
+       01c3  DCP-329C
+       01c4  DCP-331C
+       01c5  MFC-239C
+       01ca  MFC-9440CN Remote Setup Port
+       01ce  DCP-135C
+       01cf  DCP-150C
+       01d0  DCP-350C
+       01d1  DCP-560CN
+       01d4  MFC-230C
+       01d5  MFC-235C
+       01d6  MFC-260C
+       01df  DCP-155C
+       01e0  MFC-265C
+       01e1  DCP-153C
+       01e2  DCP-157C
+       01e3  DCP-353C
+       01e4  DCP-357C
+       01eb  MFC-7320
+       1000  Printer
+       1002  Printer
+       2002  PTUSB Printing
+       2004  PT-2300/2310 p-Touch Laber Printer
+       2015  QL-500 P-touch label printer
+       2016  QL-550 P-touch label printer
+       201a  PT-18R P-touch label printer
+       2100  Card Reader Writer
+04fa  Dallas Semiconductor
+       2490  DS1490F 2-in-1 Fob, 1-Wire adapter
+       4201  DS4201 Audio DAC
+04fb  Biostar Microtech International Corp.
+04fc  Sunplus Technology Co., Ltd
+       0003  CM1092 Optical Scroller Mouse
+       0013  ViewMate Desktop Mouse CC2201
+       0015  ViewMate Desktop Mouse CC2201
+       0232  Fingerprint
+       0561  Flexcam 100
+       0c25  SATALink SPIF225A
+       1533  Mass Storage
+       500c  CA500C Digital Camera
+       504a  Aiptek Mini PenCam 1.3
+       504b  Aiptek Mega PockerCam 1.3/Maxell MaxPocket LE 1.3
+       5330  Digitrex 2110
+       5331  Vivitar Vivicam 10
+       5360  Sunplus Generic Digital Camera
+       5720  Card Reader Driver
+       7333  Finet Technology Palmpix DC-85
+       757a  Aiptek, MP315 MP3 Player
+       ffff  PureDigital Ritz Disposable
+04fd  Soliton Systems, K.K.
+       0003  Smart Card Reader II
+04fe  PFU, Ltd
+04ff  E-CMOS Corp.
+0500  Siam United Hi-Tech
+       0001  DART Keyboard Mouse
+       0002  DART-2 Keyboard
+0501  Fujikura DDK, Ltd
+0502  Acer, Inc.
+       0001  Handheld
+       0736  Handheld
+       15b1  PDA n311
+       1631  c10 Series
+       1632  c20 Series
+       16e1  n10 Handheld Sync
+       16e2  n20 Pocket PC Sync
+       16e3  n30 Handheld Sync
+       d001  Divio NW801/DVC-V6+ Digital Camera
+0503  Hitachi America, Ltd
+0504  Hayes Microcomputer Products
+0506  3Com Corp.
+       009d  HomeConnect Camera
+       00a0  3CREB96 Bluetooth Adapter
+       00a1  Bluetooth Device
+       00a2  Bluetooth Device
+       00df  3Com Home Connect lite
+       0100  HomeConnect ADSL Modem Driver
+       03e8  3C19250 Ethernet [klsi]
+       0a01  3CRSHEW696 Wireless Adapter
+       0a11  3CRWE254G72 802.11g Adapter
+       11f8  HomeConnect 3C460
+       2922  HomeConnect Cable Modem External with
+       3021  U.S.Robotics 56000 Voice FaxModem Pro
+       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.
+       0011  Konami ParaParaParadise Controller
+0508  Clarion Co., Ltd
+0509  Aztech Systems, Ltd
+       0801  ADSL Modem
+       0802  ADSL Modem (RFC1483)
+       0806  DSL Modem
+       080f  Binatone ADSL500 Modem Network Interface
+       0812  Pirelli ADSL Modem Network Interface
+050a  Cinch Connectors
+050b  Cable System International
+050c  InnoMedia, Inc.
+050d  Belkin Components
+       0004  Direct Connect
+       0012  F8T012 Bluetooth Adapter
+       0013  F8T013 Bluetooth Adapter
+       0017  B8T017 Bluetooth+EDR 2.1
+       0050  Atmel at76c503a [F5D6050 802.11b Wireless Adapter v2000]
+       0081  F8T001v2 Bluetooth
+       0083  Bluetooth Device
+       0084  F8T003v2 Bluetooth
+       0102  Flip KVM
+       0103  F5U103 Serial Adapter [etek]
+       0106  VideoBus II Adapter, Video
+       0108  F1DE108B KVM
+       0109  F5U109/F5U409 PDA Adapter
+       0115  SCSI Adapter
+       0119  F5U120-PC Dual PS/2 Ports
+       0121  F5D5050 100Mbps Ethernet
+       0122  Ethernet Adapter
+       0131  Bluetooth Device with trace filter
+       016a  Bluetooth Mini Dongle
+       0201  Peripheral Switch
+       0208  USBView II Video Adapter [nt1004]
+       0210  F5U228 Hi-Speed USB 2.0 DVD Creator
+       0211  F5U211 USB 2.0 15-in-1 Media Reader & Writer
+       0224  F5U224 USB 2.0 4-Port Hub
+       0234  F5U234 USB 2.0 4-Port Hub
+       0237  F5U237 USB 2.0 7-Port Hub
+       0240  F5U240 USB 2.0 CF Card Reader
+       0249  USB 2 Flash Media Device
+       0257  F5U257 Serial
+       0409  F5U409 Serial
+       0551  F6C550-AVR UPS
+       0802  Nostromo n40 Gamepad
+       0803  Nostromo 1745 GamePad
+       0805  Nostromo N50 GamePad
+       0815  Nostromo n52 HID SpeedPad Mouse Wheel
+       0826  ErgoFit Wireless Optical Mouse (HID)
+       0980  HID UPS Battery
+       1202  F5U120-PC Parallel Printer Port
+       1203  F5U120-PC Serial Port
+       258a  F5U258 Host to Host cable
+       3101  F1DF102U/F1DG102U Flip Hub
+       3201  F1DF102U/F1DG102U Flip KVM
+       4050  ZD1211B
+       5055  F5D5055
+       6051  802.11b Wireless Network Adapter
+       7050  F5D7050 Wireless G Adapter v1000/v2000
+       7051  F5D7051 54g USB Network Adapter
+       705a  Ralink RT2573 [F5D7050 Wireless G Adapter v3000]
+       705b  Wireless G Adapter
+       705c  Zydas ZD1211B [F5D7050 Wireless G Adapter v4000]
+       705e  Realtek RTL8187B [F5D7050 Wireless G Adapter v5000]
+       8053  Ralink RT2870 [F5D8053 N Wireless USB Adapter v1000/v4000]
+       805e  Realtek RTL8192U [F5D8053 N Wireless USB Adapter v5000]
+       815c  Ralink RT2870 [F5D8053 N Wireless USB Adapter v3000]
+       815f  Realtek RTL8192SU [F5D8053 N Wireless USB Adapter v6000]
+       905b  F5D9050 ver 3 Wireless Adapter
+       905c  Wireless G Plus MIMO Network Adapter
+050e  Neon Technology, Inc.
+050f  KC Technology, Inc.
+       0001  Hub
+       0003  KC82C160S Hub
+       0180  KC-180 IrDA Dongle
+       0190  KC2190 USB Host-to-Host cable
+0510  Sejin Electron, Inc.
+       0001  Keyboard
+       1000  Keyboard with PS/2 Mouse Port
+       e001  Mouse
+0511  N'Able (DataBook) Technologies, Inc.
+0512  Hualon Microelectronics Corp.
+0513  digital-X, Inc.
+0514  FCI Electronics
+0515  ACTC
+0516  Longwell Electronics
+0517  Butterfly Communications
+0518  EzKEY Corp.
+       0001  USB to PS2 Adaptor v1.09
+       0002  EZ-9900C Keyboard
+0519  Star Micronics Co., Ltd
+       c002  Xlive Bluetooth XBM-100S MP3 Player
+051a  WYSE Technology
+       a005  Smart Display Version 9973
+051b  Silicon Graphics
+051c  Shuttle, Inc.
+       c001  eHome Infrared Receiver
+       c002  eHome Infrared Receiver
+051d  American Power Conversion
+       0001  UPS
+       0002  Uninterruptible Power Supply
+       0003  UPS
+051e  Scientific Atlanta, Inc.
+051f  IO Systems (Elite Electronics), Inc.
+0520  Taiwan Semiconductor Manufacturing Co.
+0521  Airborn Connectors
+0522  Advanced Connectek, Inc.
+0523  ATEN GmbH
+0524  Sola Electronics
+0525  Netchip Technology, Inc.
+       100d  RFMD Bluetooth Device
+       1080  NET1080 USB-USB Bridge
+       a140  USB Clik! 40
+       a141  (OME) PocketZip 40 MP3 Player Driver
+       a220  GVC Bluetooth Wireless Adapter
+       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
+       a4a7  Linux-USB Serial Gadget (CDC ACM mode)
+       a4a8  Linux-USB Printer Gadget
+       a4a9  Linux-USB OBEX Gadget
+       a4aa  Linux-USB CDC Composite Gadge (Ethernet and ACM)
+0526  Temic MHS S.A.
+0527  ALTRA
+0528  ATI Technologies, Inc.
+       7561  TV Wonder
+       7562  TV Wonder, Edition (FN5)
+       7563  TV Wonder, Edition (FI)
+       7564  TV Wonder, Edition (FQ)
+       7565  TV Wonder, Edition (NTSC+)
+       7566  TV Wonder, Edition (FN5)
+       7567  TV Wonder, Edition (FI)
+       7568  TV Wonder, Edition (FQ)
+       7569  Live! Pro (A)
+       756a  Live! Pro Audio (O)
+0529  Aladdin Knowledge Systems
+       0001  HASP v0.06
+       030b  eToken R1 v3.1.3.x
+       0313  eToken R1 v3.2.3.x
+       031b  eToken R1 v3.3.3.x
+       0323  eToken R1 v3.4.3.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
+       0600  eToken Pro 64k (4.2)
+052a  Crescent Heart Software
+052b  Tekom Technologies, Inc.
+       0102  Ca508A HP1020 Camera v.1.3.1.6
+       0801  Yakumo MegaImage 37
+       1512  Yakumo MegaImage IV
+       1513  Aosta CX100 Webcam
+       1514  Aosta CX100 Webcam Storage
+       1905  Yakumo MegaImage 47
+       1911  Yakumo MegaImage 47 SL
+       2202  WDM Still Image Capture
+       2203  Sound Vision Stream Driver
+       3a06  DigiLife DDV-5120A
+       d001  P35U Camera Capture
+052c  Canon Information Systems, Inc.
+052d  Avid Electronics Corp.
+052e  Standard Microsystems Corp.
+052f  Unicore Software, Inc.
+0530  American Microsystems, Inc.
+0531  Wacom Technology Corp.
+0532  Systech Corp.
+0533  Alcatel Mobile Phones
+0534  Motorola, Inc.
+0535  LIH TZU Electric Co., Ltd
+0536  Hand Held Products (Welch Allyn, Inc.)
+       01a0  PDT
+0537  Inventec Corp.
+0538  Caldera International, Inc. (SCO)
+0539  Shyh Shiun Terminals Co., Ltd
+053a  PrehKeyTec GmbH
+       0b00  Hub
+053b  Global Village Communication
+053c  Institut of Microelectronic & Mechatronic Systems
+053d  Silicon Architect
+053e  Mobility Electronics
+053f  Synopsys, Inc.
+0540  UniAccess AB
+       0101  Panache Surf ISDN TA
+0541  Sirf Technology, Inc.
+0543  ViewSonic Corp.
+       00fe  G773 Monitor Hub
+       00ff  P815 Monitor Hub
+       0bf2  airpanel V150 Wireless Smart Display
+       0bf3  airpanel V110 Wireless Smart Display
+       0ed9  Color Pocket PC V35
+       0f01  airsync Wi-Fi Wireless Adapter
+       1527  Color Pocket PC V36
+       1529  Color Pocket PC V37
+       152b  Color Pocket PC V38
+       152e  Pocket PC
+       1921  Communicator Pocket PC
+       1922  Smartphone
+       1923  Pocket PC V30
+       1a11  Wireless 802.11g Adapter
+       1e60  TA310 - ATSC/NTSC/PAL Driver(PCM4)
+       4153  ViewSonic G773 Control (?)
+0544  Cristie Electronics, Ltd
+0545  Xirlink, Inc.
+       7333  Trution Web Camera
+       8002  IBM NetCamera
+       8009  Veo PC Camera
+       800c  Veo Stingray
+       800d  Veo PC Camera
+       8080  IBM C-It Webcam
+       808a  Veo PC Camera
+       808b  Veo Stingray
+       808d  Veo PC Camera
+       810a  Veo Advanced Connect Webcam
+       810b  Veo PC Camera
+       810c  Veo PC Camera
+       8135  Veo Mobile/Advanced Web Camera
+       813a  Veo PC Camera
+       813b  Veo PC Camera
+       813c  Veo Mobile/Advanced Web Camera
+       8333  Veo Stingray/Connect Web Camera
+       888c  eVision 123 digital camera
+       888d  eVision 123 digital camera
+0546  Polaroid Corp.
+       0daf  PDC 2300Z
+       1bed  PDC 1320 Camera
+       3097  PDC 310
+       3155  PDC 3070 Camera
+       3187  Digital Camera
+       3191  Ion 80 Camera
+       3273  PDC 2030 Camera
+       dccf  Sound Vision Stream Driver
+0547  Anchor Chips, Inc.
+       0001  ICSI Bluetooth Device
+       1002  Python2 WDM Encoder
+       2131  AN2131 EZUSB Microcontroller
+       2235  AN2235 EZUSB-FX Microcontroller
+       2710  EZ-Link Loader (EZLNKLDR.SYS)
+       2720  AN2720 USB-USB Bridge
+       2727  Xircom PGUNET USB-USB Bridge
+       2750  EZ-Link (EZLNKUSB.SYS)
+       2810  Cypress ATAPI Bridge
+       7777  Bluetooth Device
+       9999  AN2131 uninitialized (?)
+0548  Tyan Computer Corp.
+       1005  EZ Cart II GameBoy Flash Programmer
+0549  Pixera Corp.
+054a  Fujitsu Microelectronics, Inc.
+054b  New Media Corp.
+054c  Sony Corp.
+       0001  HUB
+       0002  Standard HUB
+       0010  DSC-S30/S70/S75/F505V/F505/FD92/W1 Cybershot/Mavica Digital Camera
+       0014  Nogatech USBVision (SY)
+       0022  Storage Adapter V2 (TPP)
+       0023  CD Writer
+       0024  Mavica CD-1000 Camera
+       0025  NW-MS7 Walkman MemoryStick Reader
+       002b  Portable USB Harddrive V2
+       002c  USB Floppy Disk Drive
+       002d  MSAC-US1 MemoryStick Reader
+       002e  Sony HandyCam MemoryStick Reader
+       0030  Storage Adapter V2 (TPP)
+       0032  MemoryStick MSC-U01 Reader
+       0035  Network Walkman (E)
+       0036  Net MD
+       0037  MG Memory Stick Reader/Writer
+       0038  Clie PEG-S300/D PalmOS PDA
+       0039  Network Walkman (MS)
+       003c  VAIO-MX LCD Control
+       0045  Digital Imaging Video
+       0046  Network Walkman
+       004a  Memory Stick Hi-Fi System
+       004b  Memory Stick Reader/Writer
+       004e  DSC-xxx (ptp)
+       0056  MG Memory Stick Reader/Writer
+       0058  Clie PEG-N7x0C PalmOS PDA Mass Storage
+       0066  Clie PEG-N7x0C/PEG-T425 PalmOS PDA Serial
+       0067  CMR-PC3 Webcam
+       0069  Memorystick MSC-U03 Reader
+       006d  Clie PEG-T425 PDA Mass Storage
+       006f  Network Walkman (EV)
+       0073  Storage CRX1750U
+       0075  Net MD
+       0076  Storage Adapter ACR-U20
+       007c  Net MD
+       007f  IC Recorder (MS)
+       0080  Net MD
+       0081  Net MD
+       0084  Net MD
+       0085  Net MD
+       0086  Net MD
+       008b  Micro Vault 64M Mass Storage
+       0095  Sony Clie s360
+       0099  Clie NR70 PDA Mass Storage
+       009a  Clie NR70 PDA Serial
+       00ab  Visual Communication Camera (PCGA-UVC10)
+       00af  DPP-EX Series Digital Photo Printer
+       00bf  IC Recorder (S)
+       00c0  Handycam DCR-30
+       00c6  Net MD
+       00c7  Net MD
+       00c8  MZ-N710 Minidisc Walkman
+       00c9  Net MD
+       00ca  MZ-DN430 Minidisc Walkman
+       00cb  MSAC-US20 Memory Stick Reader
+       00da  Sony Clie nx60
+       00e8  Network Walkman (MS)
+       00e9  Handheld
+       00eb  Net MD
+       0101  Net MD
+       0103  IC Recorder (ST)
+       0105  Micro Vault Hub
+       0107  VCC-U01 Visual Communication Camera
+       0110  Digital Imaging Video
+       0113  Net MD
+       0116  IC Recorder (P)
+       0144  Clie PEG-TH55 PDA
+       0147  Visual Communication Camera (PCGA-UVC11)
+       014c  Aiwa AM-NX9 Net MD Music Recorder MDLP
+       014d  Memory Stick Reader/Writer
+       0154  Eyetoy Audio Device
+       015f  IC Recorder (BM)
+       0169  Clie PEG-TJ35 PDA Serial
+       016a  Clie PEG-TJ35 PDA Mass Storage
+       016b  Mobile HDD
+       016d  IC Recorder (SX)
+       016e  DPP-EX50 Digital Photo Printer
+       0171  Fingerprint Sensor 3500
+       017e  Net MD
+       017f  Hi-MD WALKMAN
+       0180  Net MD
+       0181  Hi-MD WALKMAN
+       0182  Net MD
+       0183  Hi-MD WALKMAN
+       0184  Net MD
+       0185  Hi-MD WALKMAN
+       0186  Net MD
+       0187  Hi-MD MZ-NH600 WALKMAN
+       0188  Net MD
+       018a  Net MD
+       018b  Hi-MD SOUND GATE
+       019e  Micro Vault 1.0G Mass Storage
+       01ad  ATRAC HDD PA
+       01bd  MRW62E Multi-Card Reader/Writer
+       01c3  NW-E55 Network Walkman
+       01c6  MEMORY P-AUDIO
+       01c7  Printing Support
+       01c8  PSP Type A
+       01d0  DVD+RW External Drive DRU-700A
+       01d5  IC RECORDER
+       01de  VRD-VC10 [Video Capture]
+       01e9  Net MD
+       01ea  Hi-MD WALKMAN
+       01ee  IC RECORDER
+       01fa  Sony IC Recorder (P)
+       01fb  NW-E405 Network Walkman
+       020f  Device
+       0210  ATRAC HDD PA
+       0219  Net MD
+       021a  Hi-MD WALKMAN
+       021b  Net MD
+       021c  Hi-MD WALKMAN
+       021d  Net MD
+       0227  Printing Support
+       022c  Net MD
+       022d  Hi-MD AUDIO
+       0233  ATRAC HDD PA
+       0236  Mobile HDD
+       023b  DVD+RW External Drive DRU-800UL
+       023c  Net MD
+       023d  Hi-MD WALKMAN
+       0243  MicroVault Flash Drive
+       0257  IFU-WLM2 USB Wireless LAN Module (Wireless Mode)
+       0258  IFU-WLM2 USB Wireless LAN Module (Memory Mode)
+       0259  IC RECORDER
+       0267  Tachikoma Device
+       0268  Batoh Device
+       0269  HDD WALKMAN
+       026a  HDD WALKMAN
+       0271  IC Recorder (P)
+       027c  NETWORK WALKMAN
+       027e  SONY Communicator
+       027f  IC RECORDER
+       0286  Net MD
+       0287  Hi-MD WALKMAN
+       0290  VGP-UVC100 Visual Communication Camera
+       029b  PRS-500 eBook reader
+       02a5  MicroVault Flash Drive
+       02af  Handycam DCR-DVD306E
+       02c4  Device
+       02d1  DVD RW
+       02d2  PSP Slim
+       02ea  PlayStation 3 Memory Card Adaptor
+       02f9  DSC-H9
+       1000  Wireless Buzz! Receiver
+054d  Try Corp.
+054e  Proside Corp.
+054f  WYSE Technology Taiwan
+0550  Fuji Xerox Co., Ltd
+       0002  InkJet Color Printer
+       0004  InkJet Color Printer
+       0005  InkJet Color Printer
+0551  CompuTrend Systems, Inc.
+0552  Philips Monitors
+0553  STMicroelectronics Imaging Division (VLSI Vision)
+       0001  TerraCAM
+       0002  CPiA Webcam
+       0100  STV0672 Camera
+       0140  Video Camera
+       0150  CDE CAM 100
+       0151  Digital Blue QX5 Microscope
+       0200  Dual-mode Camera0
+       0201  Dual-mode Camera1
+       0202  Aiptek PenCam 1
+       0674  Multi-mode Camera
+       0679  NMS Video Camera (Webcam)
+       1002  Che-ez! Splash
+0554  Dictaphone Corp.
+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
+       2006  UC-1284B Printer Port
+       2007  UC-110T 100Mbps Ethernet [pegasus]
+       2008  UC-232A Serial Port [pl2303]
+       2009  UC-210T Ethernet
+       2011  UC-2324 4xSerial Ports [mos7840]
+       2202  CS124U Miniview II KVM Switch
+       2600  IDE Bridge
+       4000  DSB-650 10Mbps Ethernet [klsi]
+       7000  Hub
+       7820  UC-2322 2xSerial Ports [mos7820]
+0558  Truevision, Inc.
+0559  Cadence Design Systems, Inc.
+055a  Kenwood USA
+055b  KnowledgeTek, Inc.
+055c  Proton Electronic Ind.
+055d  Samsung Electro-Mechanics Co.
+       0001  Keyboard
+       0bb1  Bluetooth Device
+       1030  Optical Wheel Mouse (OMS3CB/OMGB30)
+       1031  Optical Wheel Mouse (OMA3CB/OMGI30)
+       1040  Mouse HID Device
+       1050  E-Mail Optical Wheel Mouse (OMS3CE)
+       1080  Optical Wheel Mouse (OMS3CH)
+       2020  Floppy Disk Drive
+       6780  Keyboard V1
+       6781  Keyboard Mouse
+       8001  E.M. Hub
+       9000  AnyCam [pwc]
+       9001  MPC-C30 AnyCam Premium for Notebooks [pwc]
+       a010  WLAN Adapter(SWL-2300)
+       a011  Boot Device
+       a012  WLAN Adapter(SWL-2300)
+       a013  WLAN Adapter(SWL-2350)
+       a230  Boot Device
+       b000  11Mbps WLAN Mini Adapter
+       b230  Netopia 802.11b WLAN Adapter
+       b231  LG Wireless LAN 11b Adapter
+055e  CTX Opto-Electronics Corp.
+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
+       021a  BearPaw 2448 TA Plus
+       021c  BearPaw 1200 CU Plus
+       021d  BearPaw 2400 CU Plus
+       021e  BearPaw 1200 TA/CS
+       021f  SNAPSCAN e22
+       0400  BearPaw 2400 TA Pro
+       0401  P 3600 A3 Pro
+       0408  BearPaw 2448 CU Pro
+       0409  BearPaw 2448 TA Pro
+       0873  ScanExpress 600 USB
+       1000  BearPaw 4800 TA Pro
+       a350  gSmart 350 Camera
+       a800  MDC 800 Camera
+       b500  MDC 3000 Camera
+       c005  PC CAM 300A
+       c200  gSmart 300
+       c211  Kowa Bs888e Microcamera
+       c220  gSmart mini
+       c230  Digicam 330K
+       c232  MDC3500 Camera
+       c360  DV 4000 Camera
+       c420  gSmart mini 2 Camera
+       c430  gSmart LCD 2 Camera
+       c440  DV 3000 Camera
+       c520  gSmart mini 3 Camera
+       c530  gSmart LCD 2 Camera
+       c540  gSmart D30 Camera
+       c630  MDC 4000 Camera
+       c631  MDC 4000 Camera
+       c650  MDC 5500Z Camera
+       d001  WCam 300
+       d003  WCam 300A
+       d004  WCam 300AN
+0560  Interface Corp.
+0561  Oasis Design, Inc.
+0562  Telex Communications, Inc.
+       0001  Enhanced Microphone
+       0002  Telex Microphone
+0563  Immersion Corp.
+0564  Chinon Industries, Inc.
+0565  Peracom Networks, Inc.
+       0001  Serial Port [etek]
+       0002  Enet Ethernet [klsi]
+       0003  @Home Networks Ethernet [klsi]
+       0005  Enet2 Ethernet [klsi]
+       0041  Peracom Remote NDIS Ethernet Adapter
+0566  Monterey International Corp.
+       0110  ViewMate Desktop Mouse CC2201
+       1001  ViewMate Desktop Mouse CC2201
+       1002  ViewMate Desktop Mouse CC2201
+       1003  ViewMate Desktop Mouse CC2201
+       1004  ViewMate Desktop Mouse CC2201
+       1005  ViewMate Desktop Mouse CC2201
+       1006  ViewMate Desktop Mouse CC2201
+       1007  ViewMate Desktop Mouse CC2201
+       2800  MIC K/B
+       2801  MIC K/B Mouse
+       2802  Kbd Hub
+0567  Xyratex International, Ltd
+0568  Quartz Ingenierie
+0569  SegaSoft
+056a  Wacom Co., Ltd
+       0000  PenPartner
+       0001  PenPartner 4x5
+       0002  PenPartner 6x8
+       0010  Graphire
+       0011  Graphire 2
+       0013  Graphire 3 4x5
+       0017  Bamboo Fun
+       0020  Intuos 4x5
+       0021  Intuos 6x8
+       0022  Intuos 9x12
+       0023  Intuos 12x12
+       0024  Intuos 12x18
+       0030  PL400
+       0031  PL500
+       0032  PL600
+       0034  PL550
+       0035  PL800
+       0041  Intuos2 4x5
+       0042  Intuos 2 6x8
+       0043  Intuos 2
+       0044  Intuos2 12x12
+       0045  Intuos2 12x18
+       00b2  Intuos3 9x12
+       00b5  Intuos3 6x11 (PTZ-631W)
+       0400  PenPartner 4x5
+       4850  PenPartner 6x8
+056b  Decicon, Inc.
+056c  eTEK Labs
+       0006  KwikLink Host-Host Connector
+       8007  Kwik232 Serial Port
+       8100  KwikLink Host-Host Connector
+       8101  KwikLink USB-USB Bridge
+056d  EIZO Corp.
+       0000  Hub
+       0001  Monitor
+       0002  HID Monitor Controls
+       0003  Device Bay Controller
+056e  Elecom Co., Ltd
+       0002  29UO Mouse
+       200c  LD-USB/TX
+       4002  Laneed 100Mbps Ethernet LD-USB/TX [pegasus]
+       4005  LD-USBL/TX
+       400b  LD-USB/TX
+       4010  LD-USB20
+       5003  UC-SGT
+       5004  UC-SGT
+       abc1  LD-USB/TX
+056f  Korea Data Systems Co., Ltd
+       cd00  CDM-751 CD organizer
+0570  Epson America
+0571  Interex, Inc.
+       0002  echoFX InterView Lite
+0572  Conexant Systems (Rockwell), Inc.
+       0001  Ezcam II Webcam
+       0002  Ezcam II Webcam
+       0040  Wondereye CP-115 Webcam
+       0041  Webcam Notebook
+       0042  Webcam Notebook
+       1232  V.90 modem
+       1234  Typhoon Redfun Modem V90 56k
+       1252  HCF V90 Data Fax Voice Modem
+       1253  Zoom V.92 Faxmodem
+       1300  SoftK56 Data Fax Voice CARP
+       1301  Modem Enumerator
+       2000  SoftGate 802.11 Adapter
+       2002  SoftGate 802.11 Adapter
+       8390  WinFast PalmTop/Novo TV Video
+       8392  WinFast PalmTop/Novo TV Video
+       cafe  AccessRunner ADSL Modem
+       cb00  E-Tech ADSL Modem v2
+       cb01  GeekADSL Promax Q31 ADSL Modem
+       cb06  StarModem Network Interface
+0573  Zoran Co. Personal Media Division (Nogatech)
+       0003  USBGear USBG-V1
+       0400  D-Link V100
+       0600  Dazzle USBVision (1006)
+       1300  leadtek USBVision (1006)
+       2000  X10 va10a Wireless Camera
+       2001  Dazzle EmMe (2001)
+       2101  Zoran Co. PMD (Nogatech) AV-grabber Manhattan
+       2d00  Osprey 50
+       2d01  Hauppauge USB-Live Model 600
+       3000  Dazzle MicroCam (NTSC)
+       3001  Dazzle MicroCam (PAL)
+       4000  Nogatech TV! (NTSC)
+       4001  Nogatech TV! (PAL)
+       4002  Nogatech TV! (PAL-I-)
+       4003  Nogatech TV! (MF-)
+       4008  Nogatech TV! (NTSC) (T)
+       4009  Nogatech TV! (PAL) (T)
+       4010  Nogatech TV! (NTSC) (A)
+       4100  USB-TV FM (NTSC)
+       4110  PNY USB-TV (NTSC) FM
+       4400  Nogatech TV! Pro (NTSC)
+       4401  Nogatech TV! Pro (PAL)
+       4450  PixelView PlayTv-USB PRO (PAL) FM
+       4451  Nogatech TV! Pro (PAL+)
+       4452  Nogatech TV! Pro (PAL-I+)
+       4500  Nogatech TV! Pro (NTSC)
+       4501  Nogatech TV! Pro (PAL)
+       4550  ZTV ZT-721 2.4GHz A/V Receiver
+       4551  Dazzle TV! Pro Audio (P+)
+       4d00  Hauppauge WinTV-USB USA
+       4d01  Hauppauge WinTV-USB
+       4d02  Hauppauge WinTV-USB UK
+       4d03  Hauppauge WinTV-USB France
+       4d04  Hauppauge WinTV (PAL D/K)
+       4d10  Hauppauge WinTV-USB with FM USA radio
+       4d11  Hauppauge WinTV-USB (PAL) with FM radio
+       4d12  Hauppauge WinTV-USB UK with FM Radio
+       4d14  Hauppauge WinTV (PAL D/K FM)
+       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
+       4d24  Hauppauge WinTV Pro (PAL D/K)
+       4d25  Hauppauge WinTV-USB Model 40209 rev B234
+       4d26  Hauppauge WinTV-USB Model 40209 rev B243
+       4d27  Hauppauge WinTV-USB Model 40204 Rev B281
+       4d28  Hauppauge WinTV-USB Model 40204 rev B283
+       4d29  Hauppauge WinTV-USB Model 40205 rev B298
+       4d2a  Hauppague WinTV-USB Model 602 Rev B285
+       4d2b  Hauppague WinTV-USB Model 602 Rev B282
+       4d2c  Hauppauge WinTV Pro (PAL/SECAM)
+       4d30  Hauppauge WinTV-USB FM Model 40211 Rev B123
+       4d31  Hauppauge WinTV-USB III (PAL) with FM radio Model 568
+       4d32  Hauppauge WinTV-USB III (PAL) FM Model 573
+       4d34  Hauppauge WinTV Pro (PAL D/K FM)
+       4d35  Hauppauge WinTV-USB III (PAL) FM Model 597
+       4d36  Hauppauge WinTV Pro (PAL B/G FM)
+       4d37  Hauppauge WinTV-USB Model 40219 rev E189
+       4d38  Hauppauge WinTV Pro (NTSC FM)
+0574  City University of Hong Kong
+0575  Philips Creative Display Solutions
+0576  BAFO/Quality Computer Accessories
+0577  ELSA
+0578  Intrinsix Corp.
+0579  GVC Corp.
+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
+       0b00  ISDN-Controller B1 Family
+       0c00  ISDN-Controller FRITZ!Card
+       1000  ISDN-Controller FRITZ!Card v2.0
+       1900  ISDN-Controller FRITZ!Card v2.1
+       2000  ISDN-Connector FRITZ!X
+       2200  BlueFRITZ!
+       2300  Teledat X130 DSL
+       2800  ISDN-Connector TA
+       3200  Teledat X130 DSL
+       3500  FRITZ!Card DSL SL
+       3701  FRITZ!Box SL
+       3702  FRITZ!Box
+       3800  BlueFRITZ! Bluetooth Stick
+       3a00  FRITZ!Box Fon
+       3c00  FRITZ!Box WLAN
+       3d00  Fritz!Box
+       3e01  FRITZ!Box (Annex A)
+       4001  FRITZ!Box Fon (Annex A)
+       4101  FRITZ!Box WLAN (Annex A)
+       4201  FRITZ!Box Fon WLAN (Annex A)
+       4601  Eumex 5520PC (WinXP/2000)
+       4602  Eumex 400 (WinXP/2000)
+       4701  AVM FRITZ!Box Fon ata
+       5401  Eumex 300 IP
+       5601  AVM Fritz!WLAN USB
+       6201  AVM Fritz!WLAN USB v1.1
+       62ff  AVM Fritz!WLAN USB (in CD-ROM-mode)
+       8401  AVM Fritz!WLAN USB N
+       8402  AVM Fritz!WLAN USB N 2.4
+       84ff  AVM Fritz!WLAN USB N (in CD-ROM-mode)
+057d  Shark Multimedia, Inc.
+057e  Nintendo Co., Ltd
+       0306  Wii Remote Controller RVL-003
+057f  QuickShot, Ltd
+       6238  USB StrikePad
+0580  Denron, Inc.
+0581  Racal Data Group
+0582  Roland Corp.
+       0000  UA-100
+       0002  UM-4/MPU-64 MIDI Interface
+       0003  SoundCanvas SC-8850
+       0004  U-8
+       0005  Edirol UM-2 MIDI Adapter
+       0007  SoundCanvas SC-8820
+       0008  PC-300
+       0009  Edirol UM-1SX MIDI Adapter
+       000b  SK-500
+       000c  SC-D70
+       0010  EDIROL UA-5
+       0011  Edirol UA-5 Sound Capture
+       0012  XV-5050
+       0013  XV-5050
+       0014  EDIROL UM-880 MIDI I/F (native)
+       0015  EDIROL UM-880 MIDI I/F (generic)
+       0016  EDIROL SD-90
+       0017  EDIROL SD-90
+       001b  MMP-2
+       001c  MMP-2
+       001d  V-SYNTH
+       001e  V-SYNTH
+       0023  EDIROL UM-550
+       0024  EDIROL UM-550
+       0025  EDIROL UA-20
+       0026  EDIROL UA-20
+       0027  EDIROL SD-20
+       0028  EDIROL SD-20
+       0029  EDIROL SD-80
+       002a  EDIROL SD-80
+       002b  EDIROL UA-700
+       002c  EDIROL UA-700
+       002d  XV-2020 Synthesizer
+       002e  XV-2020 Synthesizer
+       002f  VariOS
+       0030  VariOS
+       0033  EDIROL PCR
+       0034  EDIROL PCR
+       0037  Digital Piano
+       0038  Digital Piano
+       003b  BOSS GS-10
+       003c  BOSS GS-10
+       0040  GI-20
+       0041  GI-20
+       0042  RS-70
+       0043  RS-70
+       0044  EDIROL UA-1000
+       0047  EDIROL UR-80 WAVE
+       0048  EDIROL UR-80 MIDI
+       0049  EDIROL UR-80 WAVE
+       004a  EDIROL UR-80 MIDI
+       004b  EDIROL M-100FX
+       004c  EDIROL PCR-A WAVE
+       004d  EDIROL PCR-A MIDI
+       004e  EDIROL PCR-A WAVE
+       004f  EDIROL PCR-A MIDI
+       0050  EDIROL UA-3FX
+       0052  EDIROL UM-1SX
+       0054  Digital Piano
+       0060  EXR Series
+       0064  EDIROL PCR-1 WAVE
+       0065  EDIROL PCR-1 MIDI
+       0066  EDIROL PCR-1 WAVE
+       0067  EDIROL PCR-1 MIDI
+       006a  SP-606
+       006b  SP-606
+       006d  FANTOM-X
+       006e  FANTOM-X
+       0073  EDIROL UA-25
+       0074  EDIROL UA-25
+       0075  BOSS DR-880
+       0076  BOSS DR-880
+       007a  RD
+       007b  RD
+       007d  EDIROL UA-101
+       0080  G-70
+       0081  G-70
+       008b  EDIROL PC-50
+       008c  EDIROL PC-50
+       008d  EDIROL UA-101 USB1
+       0092  EDIROL PC-80 WAVE
+       0093  EDIROL PC-80 MIDI
+       0096  EDIROL UA-1EX
+       009a  EDIROL UM-3EX
+       009d  EDIROL UM-1
+       00a2  Digital Piano
+       00a3  EDIROL UA-4FX
+       00a6  Juno-G
+       00ad  SH-201
+       00c4  EDIROL M-16DX
+       00de  Fantom-G7
+0583  Padix Co., Ltd (Rockfire)
+       0001  4 Axis 12 button +POV
+       0002  4 Axis 12 button +POV
+       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
+       205f  PSX/USB converter
+       206f  USB, 2-axis 8-button gamepad
+       3050  QF-305u Gamepad
+       3379  Rockfire X-Force
+       337f  Rockfire USB RacingStar Vibra
+       509f  USB,4-Axis,12-Button with POV
+       5259  Rockfire USB SkyShuttle Vibra
+       525f  USB Vibration Pad
+       5308  USB Wireless VibrationPad
+       5359  Rockfire USB SkyShuttle Pro
+       535f  USB,real VibrationPad
+       5659  Rockfire USB SkyShuttle Vibra
+       565f  USB VibrationPad
+       6009  Revenger
+       600f  USB,GameBoard II
+       6258  USB, 4-axis, 6-button joystick w/view finder
+       6889  Windstorm Pro
+       688f  QF-688uv Windstorm Pro Joystick
+       7070  QF-707u Bazooka Joystick
+       a015  4-Axis,16-Button with POV
+       a019  USB, Vibration ,4-axis, 8-button joystick w/view finder
+       a020  USB,4-Axis,10-Button with POV
+       a021  USB,4-Axis,12-Button with POV
+       a022  USB,4-Axis,14-Button with POV
+       a023  USB,4-Axis,16-Button with POV
+       a024  4axis,12button vibrition audio gamepad
+       a025  4axis,12button vibrition audio gamepad
+       a130  USB Wireless 2.4GHz Gamepad
+       a131  USB Wireless 2.4GHz Joystick
+       a132  USB Wireless 2.4GHz Wheelpad
+       a133  USB Wireless 2.4GHz Wheel&Gamepad
+       a202  ForceFeedbackWheel
+       a209  MetalStrike FF
+       b000  USB,4-Axis,12-Button with POV
+       b001  USB,4-Axis,12-Button with POV
+       b002  Vibration,12-Button USB Wheel
+       b005  USB,12-Button Wheel
+       b008  USB Wireless 2.4GHz Wheel
+       b009  USB,12-Button  Wheel
+       b00a  PSX/USB converter
+       b00b  PSX/USB converter
+       b00c  PSX/USB converter
+       b00d  PSX/USB converter
+       b00e  4-Axis,12-Button with POV
+       b00f  USB,5-Axis,10-Button with POV
+       b010  MetalStrike Pro
+       b012  Wireless MetalStrike
+       b013  USB,Wiress  2.4GHZ Joystick
+       b016  USB,5-Axis,10-Button with POV
+       b018  TW6 Wheel
+       ff60  USB Wireless VibrationPad
+0584  RATOC System, Inc.
+       0008  Fujifilm MemoryCard ReaderWriter
+       b000  REX-USB60
+0585  FlashPoint Technology, Inc.
+       0001  Digital Camera
+       0002  Digital Camera
+       0003  Digital Camera
+       0004  Digital Camera
+       0005  Digital Camera
+       0006  Digital Camera
+       0007  Digital Camera
+       0008  Digital Camera
+       0009  Digital Camera
+       000a  Digital Camera
+       000b  Digital Camera
+       000c  Digital Camera
+       000d  Digital Camera
+       000e  Digital Camera
+       000f  Digital Camera
+0586  ZyXEL Communications Corp.
+       0025  802.11b/g/n USB Wireless Network Adapter
+       0102  omni.net II ISDN TA
+       1000  Omni NET Modem / ISDN TA
+       1500  Omni 56K Plus
+       2011  Scorpion-980N keyboard
+       3304  LAN Modem
+       3309  ADSL Modem Prestige 600 series
+       330a  ADSL Modem Interface
+       330e  USB Broadband ADSL Modem Rev 1.10
+       3400  ZyAIR B-220 IEEE 802.11b Adapter
+       3401  ZyAIR G-220 802.11bg
+       3402  ZyAIR G-220F 802.11bg
+       3407  G-200 v2 802.11bg
+       3409  AG-225H 802.11bg
+       340a  M-202 802.11bg
+       340f  G-220 v2 802.11bg
+       3410  ZyAIR G-202 802.11bg
+       3412  802.11bg
+       3413  ZyAIR AG-225H v2 802.11bg
+       3415  G-210H 802.11g Wireless Adapter
+       3416  NWD-210N 802.11b/g/n-draft wireless adapter
+       341a  NWD-270N Wireless N-lite USB Adapter
+0587  America Kotobuki Electronics Industries, Inc.
+0588  Sapien Design
+0589  Victron
+058a  Nohau Corp.
+058b  Infineon Technologies
+058c  In Focus Systems
+       0007  Flash
+       0008  LP130
+       000a  LP530
+       0010  Projector
+       0011  Projector
+       0012  Projector
+       0013  Projector
+       0014  Projector
+       0015  Projector
+       0016  Projector
+       0017  Projector
+       0018  Projector
+       0019  Projector
+       001a  Projector
+       001b  Projector
+       001c  Projector
+       001d  Projector
+       001e  Projector
+       001f  Projector
+058d  Micrel Semiconductor
+058e  Tripath Technology, Inc.
+058f  Alcor Micro Corp.
+       1234  Flash Drive
+       2412  SCard R/W CSR-145
+       2802  Monterey Keyboard
+       5492  Hub
+       6232  Hi-Speed 16-in-1 Flash Card Reader/Writer
+       6254  USB Hub
+       6331  SD/MMC/MS Card Reader
+       6335  SD/MMC Card Reader
+       6360  Multimedia Card Reader
+       6361  Multimedia Card Reader
+       6362  Hi-Speed 21-in-1 Flash Card Reader/Writer (Internal/External)
+       6366  Multi Flash Reader
+       6377  Multimedia Card Reader
+       6386  Memory Card
+       6387  Transcend JetFlash Flash Drive
+       6390  USB 2.0-IDE bridge
+       9213  MacAlly Kbd Hub
+       9215  AU9814 Hub
+       9254  Hub
+       9310  Mass Storage (UID4/5A & UID7A)
+       9320  Micro Storage Driver for Win98
+       9321  Micro Storage Driver for Win98
+       9330  SD Reader
+       9331  Micro Storage Driver for Win98
+       9340  Delkin eFilm Reader-32
+       9350  Delkin eFilm Reader-32
+       9360  8-in-1 Media Card Reader
+       9361  Multimedia Card Reader
+       9368  Multimedia Card Reader
+       9380  Flash Drive
+       9382  Acer/Sweex Flash drive
+       9384  qdi U2Disk T209M
+       9410  Keyboard
+       9472  Keyboard Hub
+       9510  ChunghwaTL USB02 Smartcard Reader
+       9520  EMV Certified Smart Card Reader
+       9720  USB-Serial Adapter
+0590  Omron Corp.
+       0004  Cable Modem
+       000b  MR56SVS
+       0028  HJ-720IT Pedometer
+0591  Questra Consulting
+0592  Powerware Corp.
+       0002  UPS (X-Slot)
+0593  Incite
+0594  Princeton Graphic Systems
+0595  Zoran Microelectronics, Ltd
+       1001  Digitrex DSC-1300/DSC-2100 (mass storage mode)
+       4343  Digital Camera EX-20 DSC
+0596  MicroTouch Systems, Inc.
+       0001  Touchscreen
+       0002  Touch Screen Controller
+0597  Trisignal Communications
+0598  Niigata Canotec Co., Inc.
+0599  Brilliance Semiconductor, Inc.
+059a  Spectrum Signal Processing, Inc.
+059b  Iomega Corp.
+       0001  Zip 100 (Type 1)
+       000b  Zip 100 (Type 2)
+       0021  Win98 Disk Controller
+       0030  Zip 250 (Ver 1)
+       0031  Zip 100 (Type 3)
+       0032  Zip 250 (Ver 2)
+       0034  Zip 100 Driver
+       0037  Zip 750 MB
+       0040  SCSI Bridge
+       0042  Rev 70 GB
+       0050  Zip CD 650 Writer
+       0053  CDRW55292EXT CD-RW External Drive
+       0057  Mass Storage Device
+       005d  Mass Storage Device
+       005f  Mass Storage Device
+       0060  PCMCIA PocketZip Dock
+       0061  Varo PocketZip 40 MP3 Player
+       006d  HipZip MP3 Player
+       007c  Ultra Max USB/1394
+       00db  FotoShow Zip 250 Driver
+       0150  Mass Storage Device
+       015d  Super DVD Writer
+       0173  Hi-Speed USB-to-IDE Bridge Controller
+       0174  Hi-Speed USB-to-IDE Bridge Controller
+       0176  Hi-Speed USB-to-IDE Bridge Controller
+       0177  Hi-Speed USB-to-IDE Bridge Controller
+       0178  Hi-Speed USB-to-IDE Bridge Controller
+       0179  Hi-Speed USB-to-IDE Bridge Controller
+       017a  HDD
+       017b  HDD/1394A
+       017c  HDD/1394B
+       0251  Optical
+       0252  Optical
+       0470  Prestige Portable Hard Drive
+       1052  DVD+RW External Drive
+059c  A-Trend Technology Co., Ltd
+059d  Advanced Input Devices
+059e  Intelligent Instrumentation
+059f  LaCie, Ltd
+       0201  StudioDrive USB2
+       0202  StudioDrive USB2
+       0203  StudioDrive USB2
+       0211  PocketDrive
+       0212  PocketDrive
+       0213  PocketDrive USB2
+       0323  LaCie d2 Drive USB2
+       0641  Mobile Hard Drive
+       1010  Desktop Hard Drive
+       a601  HardDrive
+       a602  CD R/W
+05a0  Vetronix Corp.
+05a1  USC Corp.
+05a2  Fuji Film Microdevices Co., Ltd
+05a3  ARC International
+05a4  Ortek Technology, Inc.
+       9720  Keyboard Mouse
+       9722  Keyboard
+       9731  MCK-600W/MCK-800USB Keyboard
+05a5  Sampo Technology Corp.
+05a6  Cisco Systems, Inc.
+       0001  CVA124 Cable Voice Adapter (WDM)
+       0002  CVA122 Cable Voice Adapter (WDM)
+       0003  CVA124E Cable Voice Adapter (WDM)
+       0004  CVA122E Cable Voice Adapter (WDM)
+05a7  Bose Corp.
+05a8  Spacetec IMC Corp.
+05a9  OmniVision Technologies, Inc.
+       0511  OV511 Webcam
+       0518  OV518 Webcam
+       0519  OV519 Microphone
+       1550  VEHO Filmscanner
+       2640  OV2640 Webcam
+       2643  Monitor Webcam
+       264b  Monitor Webcam
+       2800  SuperCAM
+       4519  Webcam Classic
+       7670  OV7670 Webcam
+       8519  OV519 Webcam
+       a511  OV511+ Webcam
+       a518  D-Link DSB-C310 Webcam
+05aa  Utilux South China, Ltd
+05ab  In-System Design
+       0002  Parallel Port
+       0030  Storage Adapter V2 (TPP)
+       0031  ATA Bridge
+       0060  USB 2.0 ATA Bridge
+       0061  Storage Adapter V3 (TPP-I)
+       0101  Storage Adapter (TPP)
+       0130  Compact Flash and Microdrive Reader (TPP)
+       0200  USS725 ATA Bridge
+       0201  Storage Adapter (TPP)
+       0202  ATA Bridge
+       0300  Portable Hard Drive (TPP)
+       0301  Portable Hard Drive V2
+       0350  Portable Hard Drive (TPP)
+       0351  Portable Hard Drive V2
+       081a  ATA Bridge
+       0cda  ATA Bridge for CD-R/RW
+       1001  BAYI Printer Class Support
+       5700  Storage Adapter V2 (TPP)
+       5701  USB Storage Adapter V2
+       5901  Smart Board (TPP)
+       5a01  ATI Storage Adapter (TPP)
+       5d01  DataBook Adapter (TPP)
+05ac  Apple, Inc.
+       0201  USB Keyboard [Alps or Logitech, M2452]
+       0202  Keyboard [ALPS]
+       0205  Extended Keyboard [Mitsumi]
+       0206  Extended Keyboard [Mitsumi]
+       020b  Pro Keyboard [Mitsumi, A1048/US layout]
+       020c  Extended Keyboard [Mitsumi]
+       020d  Pro Keyboard [Mitsumi, A1048/JIS layout]
+       020e  Internal Keyboard/Trackpad
+       020f  Internal Keyboard/Trackpad
+       021b  Internal Keyboard/Trackpad
+       0220  Aluminum Keyboard
+       0221  Keyboard (Aluminium) (ISO)
+       0229  Internal Keyboard/Trackpad (MacBook Pro) (ANSI)
+       022a  Internal Keyboard/Trackpad (MacBook Pro) (ISO)
+       022b  Internal Keyboard/Trackpad (MacBook Pro) (JIS)
+       0301  USB Mouse [Mitsumi, M4848]
+       0302  Optical Mouse [Fujitsu]
+       0304  Optical USB Mouse [Mitsumi]
+       0306  Optical USB Mouse [Fujitsu]
+       030a  Internal Trackpad
+       1000  Bluetooth HCI MacBookPro (HID mode)
+       1001  Keyboard Hub [ALPS]
+       1002  Extended Keyboard Hub [Mitsumi]
+       1003  Hub in Pro Keyboard [Mitsumi, A1048]
+       1006  Hub in Aluminum Keyboard
+       1101  Speakers
+       1201  3G iPod
+       1202  iPod 2G
+       1203  iPod 4.Gen Grayscale 40G
+       1204  iPod [Photo]
+       1205  iPod Mini 1.Gen/2.Gen
+       1206  iPod '06'
+       1207  iPod '07'
+       1208  iPod '08'
+       1209  iPod Video
+       120a  iPod Nano
+       1240  iPod Nano 2.Gen (DFU mode)
+       1255  iPod Nano 4.Gen (DFU mode)
+       1260  iPod Nano 2.Gen
+       1261  iPod Classic
+       1262  iPod Nano 3.Gen
+       1263  iPod Nano 4.Gen
+       1265  iPod Nano 5.Gen
+       1290  iPhone
+       1291  iPod Touch 1.Gen
+       1292  iPhone 3G
+       1293  iPod Touch 2.Gen
+       1294  iPhone 3GS
+       1300  iPod Shuffle
+       1301  iPod Shuffle 2.Gen
+       8202  HCF V.90 Data/Fax Modem
+       8203  Bluetooth HCI
+       8204  Bluetooth HCI [Bluetooth 2.0 + EDR, built-in]
+       8205  Bluetooth HCI
+       8206  Bluetooth HCI
+       8240  IR Receiver [built-in]
+       8242  IR Receiver [built-in]
+       8300  Built-in iSight (no firmware loaded)
+       8501  Built-in iSight [Micron]
+       8502  Built-in iSight
+       912f  Hub in 30" Cinema Display
+       9221  30" Cinema Display
+       ffff  Bluetooth in DFU mode - Driver
+05ad  Y.C. Cable U.S.A., Inc.
+05ae  Synopsys, Inc.
+05af  Jing-Mold Enterprise Co., Ltd
+       0821  IDE to
+       9167  KB 9151B - 678
+       9267  KB 9251B - 678 Mouse
+05b0  Fountain Technologies, Inc.
+05b1  First International Computer, Inc.
+       1389  Bluetooth Wireless Adapter
+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.
+05bb  Grey Cell Systems
+05bc  3G Green Green Globe Co., Ltd
+       0004  Trackball
+05bd  RAFI GmbH & Co. KG
+05be  Tyco Electronics (Raychem)
+05bf  S & S Research
+05c0  Keil Software
+05c1  Kawasaki Microelectronics, Inc.
+05c2  Media Phonics (Suisse) S.A.
+05c5  Digi International, Inc.
+       0002  AccelePort USB 2
+       0004  AccelePort USB 4
+       0008  AccelePort USB 8
+05c6  Qualcomm, Inc.
+       3100  CDMA Wireless Modem/Phone
+       3196  CDMA Wireless Modem
+       3197  CDMA Wireless Modem/Phone
+       6613  Onda H600/N501HS ZTE MF330
+05c7  Qtronix Corp.
+       0113  PC Line Mouse
+       1001  Lynx Mouse
+       2001  Keyboard
+       2011  SCorpius Keyboard
+       6001  Ten-Keypad
+05c8  Cheng Uei Precision Industry Co., Ltd (Foxlink)
+       0103  FO13FF-65 PC-CAM
+05c9  Semtech Corp.
+05ca  Ricoh Co., Ltd
+       0101  RDC-5300 Camera
+       0325  Caplio GX (ptp)
+       032d  Caplio GX 8 (ptp)
+       032f  Caplio R3 (ptp)
+       03a1  IS200e
+       0403  Printing Support
+       0405  Type 101
+       0406  Type 102
+       1803  V5 camera [R5U870]
+       1810  Pavilion Webcam [R5U870]
+       1812  Pavilion Webcam
+       1830  Visual Communication Camera VGP-VCC2 [R5U870]
+       1832  Visual Communication Camera VGP-VCC3 [R5U870]
+       1833  Visual Communication Camera VGP-VCC2 [R5U870]
+       1834  Visual Communication Camera VGP-VCC2 [R5U870]
+       1835  Visual Communication Camera VGP-VCC5 [R5U870]
+       1836  Visual Communication Camera VGP-VCC4 [R5U870]
+       1837  Visual Communication Camera VGP-VCC4 [R5U870]
+       1839  Visual Communication Camera VGP-VCC6 [R5U870]
+       183a  Visual Communication Camera VGP-VCC7 [R5U870]
+       183b  Visual Communication Camera VGP-VCC8 [R5U870]
+       183e  Visual Communication Camera VGP-VCC9 [R5U870]
+       1841  Fujitsu F01/ Lifebook U810 [R5U870]
+       1870  Webcam 1000
+       2201  RDC-7 Camera
+       2202  Caplio RR30
+       2203  Caplio 300G
+       2204  Caplio G3
+       2205  Caplio RR30 / Medion MD 6126 Camera
+       2206  Konica DG-3Z
+       2207  Caplio Pro G3
+       2208  Caplio G4
+       2209  Caplio 400G wide
+       220a  KONICA MINOLTA DG-4Wide
+       220b  Caplio RX
+       220c  Caplio GX
+       220d  Caplio R1/RZ1
+       220e  Sea & Sea 5000G
+       220f  Rollei dr5 / Rollei dr5 (PTP mode)
+       2211  Caplio R1S
+       2212  Caplio R1v Camera
+       2213  Caplio R2
+       2214  Caplio GX 8
+       2215  DSC 725
+       2216  Caplio R3
+       2222  RDC-i500
+05cb  PowerVision Technologies, Inc.
+       1483  PV8630 interface (scanners, webcams)
+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]
+       3100  AirLancer USB-11
+       3363  MicroLink ADSL Fun
+05cd  Silicom, Ltd
+05ce  sci-worx GmbH
+05cf  Sung Forn Co., Ltd
+05d0  GE Medical Systems Lunar
+05d1  Brainboxes, Ltd
+       0003  Bluetooth Adapter BL-554
+05d2  Wave Systems Corp.
+05d3  Tohoku Ricoh Co., Ltd
+05d5  Super Gate Technology Co., Ltd
+05d6  Philips Semiconductors, CICT
+05d7  Thomas & Betts Corp.
+       0099  10Mbps Ethernet [klsi]
+05d8  Ultima Electronics Corp.
+       4001  Artec Ultima 2000
+       4002  Artec Ultima 2000 (GT6801 based)/Lifetec LT9385/ScanMagic 1200 UB Plus Scanner
+       4003  Artec E+ 48U
+       4004  Artec E+ Pro
+       4005  MEM48U
+       4006  TRUST EASY WEBSCAN 19200
+       4007  TRUST 240H EASY WEBSCAN GOLD
+       4008  Trust Easy Webscan 19200
+       4009  Umax Astraslim
+       4013  IT Scan 1200
+       8105  Artec T1 USB TVBOX (cold)
+       8106  Artec T1 USB TVBOX (warm)
+       8107  Artec T1 USB TVBOX with AN2235 (cold)
+       8108  Artec T1 USB TVBOX with AN2235 (warm)
+       8109  Artec T1 USB2.0 TVBOX (cold
+05d9  Axiohm Transaction Solutions
+       a225  A225 Printer
+       a758  A758 Printer
+       a794  A794 Printer
+05da  Microtek International, Inc.
+       0091  ScanMaker X6u
+       0093  ScanMaker V6USL
+       0094  Phantom 336CX/C3
+       0099  ScanMaker X6/X6U
+       009a  Phantom C6
+       00a0  Phantom 336CX/C3 (#2)
+       00a3  ScanMaker V6USL
+       00ac  ScanMaker V6UL
+       00b6  ScanMaker V6UPL
+       00ef  ScanMaker V6UPL
+       1006  Jenoptik JD350 entrance
+       1011  NHJ Che-ez! Kiss Digital Camera
+       1018  Digital Dream Enigma 1.3
+       1020  Digital Dream l'espion xtra
+       1025  Take-it Still Camera Device
+       1026  Take-it
+       1043  Take-It 1300 DSC Bulk Driver
+       1045  Take-it D1
+       1047  Take-it Camera Composite Device
+       1048  Take-it Q3
+       1049  3M Still Camera Device
+       1051  Camcorder Series
+       1052  Mass Storage Device
+       1053  Take-it DV Composite Device
+       1054  Mass Storage Device
+       1055  Digital Camera Series(536)
+       1056  Mass Storage Device
+       1057  Take-it DSC Camera Device(536)
+       1058  Mass Storage Device
+       1059  Camcorder DSC Series
+       1060  Microtek Take-it MV500
+       2007  ArtixScan DI 1210
+       200c  1394_USB2 Scanner
+       200e  ArtixScan DI 810
+       2017  UF ICE Scanner
+       201c  4800 Scanner
+       201d  ArtixScan DI 1610
+       201f  4800 Scanner-ICE
+       202e  ArtixScan DI 2020
+       208b  ScanMaker 6800
+       208f  ArtixScan DI 2010
+       209e  ScanMaker 4700LP
+       20a7  ScanMaker 5600
+       20b0  ScanMaker X12USL
+       20b1  ScanMaker 8700
+       20b4  ScanMaker 4700
+       20bd  ScanMaker 5700
+       20c9  ScanMaker 6700
+       20d2  Microtek ArtixScan 1800f
+       20d6  PS4000
+       20de  ScanMaker 9800XL
+       20e0  ScanMaker 9700XL
+       20ed  ScanMaker 4700
+       20ee  Micortek ScanMaker X12USL
+       3008  Scanner
+       300a  4800 ICE Scanner
+       300b  4800 Scanner
+       300f  MiniScan C5
+       3020  4800dpi Scanner
+       3021  1200dpi Scanner
+       3022  Scanner 4800dpi
+       3023  USB1200II Scanner
+       30c1  USB600 Scanner
+       30ce  ScanMaker 3800
+       30cf  ScanMaker 4800
+       30d4  USB1200 Scanner
+       30d8  Scanner
+       30d9  USB2400 Scanner
+       30e4  ScanMaker 4100
+       30e5  USB3200 Scanner
+       30e6  ScanMaker i320
+       40b3  ScanMaker 3600
+       40b8  ScanMaker 3700
+       40c7  ScanMaker 4600
+       40ca  ScanMaker 3600
+       40cb  ScanMaker 3700
+       40dd  ScanMaker 3750i
+       40ff  ScanMaker 3600
+       5003  Goya
+       5013  3200 Scanner
+       80a3  ScanMaker V6USL (#2)
+       80ac  ScanMaker V6UL/SpicyU
+05db  Sun Corp. (Suntac?)
+       0003  SUNTAC U-Cable type D2
+       0005  SUNTAC U-Cable type P1
+       0009  SUNTAC Slipper U
+       000a  SUNTAC Ir-Trinity
+       000b  SUNTAC U-Cable type A3
+       0011  SUNTAC U-Cable type A4
+05dc  Lexar Media, Inc.
+       0001  jumpSHOT CompactFlash Reader
+       0002  JumpShot
+       0003  JumpShot
+       0080  Jumpdrive Secure 64MB
+       0081  RBC Compact Flash Drive
+       00a7  JumpDrive Impact
+       0100  JumpDrive PRO
+       0200  JumpDrive 2.0 Pro
+       0300  Jumpdrive Geysr
+       0301  JumpDrive Classic
+       0302  JD Micro
+       0303  JD Micro Pro
+       0304  JD Secure II
+       0310  JumpDrive
+       0311  JumpDrive Classic
+       0312  JD Micro
+       0313  JD Micro Pro
+       0320  JumpDrive
+       0321  JD Micro
+       0322  JD Micro Pro
+       0323  UFC
+       0330  JumpDrive Expression
+       0340  JumpDrive TAD
+       0350  Express Card
+       0400  UFDC
+       0401  UFDC
+       0403  Locked B Device
+       0405  Locked C Device
+       0407  Locked D Device
+       0409  Locked E Device
+       040b  Locked F Device
+       040d  Locked G Device
+       040f  Locked H Device
+       0410  JumpDrive
+       0411  JumpDrive
+       0413  Locked J Device
+       0415  Locked K Device
+       0417  Locked L Device
+       0419  Locked M Device
+       041b  Locked N Device
+       041d  Locked O Device
+       041f  Locked P Device
+       0420  JumpDrive
+       0421  JumpDrive
+       0423  Locked R Device
+       0425  Locked S Device
+       0427  Locked T Device
+       0429  Locked U Device
+       042b  Locked V Device
+       042d  Locked W Device
+       042f  Locked X Device
+       0431  Locked Y Device
+       0433  Locked Z Device
+       4d02  MP3 Player
+       4d12  MP3 Player
+       4d30  MP3 Player
+       a300  JumpDrive2
+       a400  JumpDrive trade; Pro 40-501
+       a410  JumpDrive 128MB/256MB
+       a411  JumpDrive Traveler
+       a420  JumpDrive Pro
+       a421  JumpDrive Pro II
+       a422  JumpDrive Micro Pro
+       a430  JumpDrive Secure
+       a431  JumpDrive Secure II
+       a432  JumpDrive Classic
+       a440  JumpDrive Lightning
+       a450  JumpDrive TouchGuard
+       a460  JD Mercury
+       a501  JumpDrive Classic
+       a510  JumpDrive Sport
+       a530  JumpDrive Expression
+       a531  JumpDrive Secure II
+       a560  JumpDrive FireFly
+       a701  JumpDrive FireFly
+       a790  JumpDrive 2GB
+       b002  USB CF Reader
+       b018  Multi-Card Reader
+05dd  Delta Electronics, Inc.
+       ff31  AWU-120
+       ff32  FriendlyNET AeroLAN AL2011
+       ff35  PCW 100 - Wireless 802.11b Adapter
+       ff91  2Wire PC Port Phoneline 10Mbps Adapter
+05df  Silicon Vision, Inc.
+05e0  Symbol Technologies
+       0700  Bar Code Scanner (CS1504)
+       0800  Spectrum24 Wireless LAN Adapter
+       1200  DS6608 Bar Code Scanner
+       1900  SNAPI Imaging Device
+       2000  MC3090 Rugged Mobile Computer
+       200d  MC70 Rugged Mobile Computer
+05e1  Syntek Semiconductor Co., Ltd
+       0500  DC-112X Webcam
+       0501  DC-1125 Webcam
+       0890  STK011 Camera
+       0892  STK013 Camera
+       0895  STK016 Camera
+       0896  STK017 Camera
+05e2  ElecVision, Inc.
+05e3  Genesys Logic, Inc.
+       000a  Keyboard with PS/2 Port
+       000b  Mouse
+       0100  Nintendo Game Boy Advance SP
+       0120  Pacific Image Electronics PrimeFilm 1800u slide/negative scanner
+       0131  CF/SM Reader/Writer
+       0142  Multiple Slides Scanner-3600
+       0143  Multiple Frames Film Scanner-36series
+       0180  Plustek Scanner
+       0182  Wize Media 1000
+       0189  ScanJet 4600 series
+       018a  Xerox 6400
+       0300  GLUSB98PT Parallel Port
+       0301  USB2LPT Cable Release2
+       0406  Hub
+       0501  GL620USB Host-Host interface
+       0502  GL620USB-A GeneLink USB-USB Bridge
+       0503  Webcam
+       0504  HID Keyboard Filter
+       0604  USB 1.1 Hub
+       0605  USB 2.0 Hub [ednet]
+       0606  USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub
+       0608  USB-2.0 4-Port HUB [Hama]
+       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
+       0704  Card Reader
+       0705  Card Reader
+       0706  Card Reader
+       0707  Card Reader
+       0708  Card Reader
+       0709  Card Reader
+       070a  Pen Flash
+       070b  DMHS1B Rev 3 DFU Adapter
+       070e  X-PRO CR20xA USB 2.0 Internal Card Reader
+       070f  Pen Flash
+       0710  USB 2.0 33-in-1 Card Reader
+       0711  Card Reader
+       0712  Delkin Mass Storage Device
+       0715  USB 2.0 microSD Reader
+       0723  USB 2.0 SD/MMC/MS Flash Card Reader
+       0760  USB 2.0 Card Reader/Writer
+       0761  Genesys Mass Storage Device
+       0780  USBFS DFU Adapter
+       07a0  Pen Flash
+       0927  Card Reader
+       1205  Afilias Optical Mouse H3003
+       a700  Pen Flash
+       f102  VX7012 TV Box
+       f103  VX7012 TV Box
+       f104  VX7012 TV Box
+       fd21  3M TL20 Temperature Logger
+       fe00  Razer Mouse
+05e4  Red Wing Corp.
+05e5  Fuji Electric Co., Ltd
+05e6  Keithley Instruments
+05e8  ICC, Inc.
+05e9  Kawasaki LSI
+       0008  KL5KUSB101B Ethernet [klsi]
+       0009  Sony 10Mbps Ethernet [pegasus]
+       000c  USB-to-RS-232
+       000d  USB-to-RS-232
+       0014  RS-232 J104
+       0040  Ethernet Adapter
+       2008  Ethernet Adapter
+05eb  FFC, Ltd
+05ec  COM21, Inc.
+05ee  Cytechinfo Inc.
+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
+       0101  DA-Port DAC
+05f1  Compass Communications
+05f2  Dexin Corp., Ltd
+       0010  AQ Mouse
+05f3  PI Engineering, Inc.
+       0007  Kinesis Advantage PRO MPC/USB Keyboard
+       0081  Kinesis Integrated Hub
+       020b  PS2 Adapter
+       0232  X-Keys Switch Interface, Programming Mode
+       0261  X-Keys Switch Interface, SPLAT Mode
+       0264  X-Keys Switch Interface, Composite Mode
+05f5  Unixtar Technology, Inc.
+05f6  AOC International
+05f7  RFC Distribution(s) PTE, Ltd
+05f9  PSC Scanning, Inc.
+05fa  Siemens Telecommunications Systems, Ltd
+       3301  Keyboard with PS/2 Mouse Port
+       3302  Keyboard
+       3303  Keyboard with PS/2 Mouse Port
+05fc  Harman Multimedia
+       7849  Harman/Kardon SoundSticks
+05fd  InterAct, Inc.
+       0239  SV-239 HammerHead Digital
+       0251  Raider Pro
+       0253  ProPad 8 Digital
+       0286  SV-286 Cyclone Digital
+       262a  3dfx HammerHead FX
+       262f  HammerHead Fx
+       daae  Game Shark
+05fe  Chic Technology Corp.
+       0001  Mouse
+       0003  Cypress USB Mouse
+       0005  Viewmaster 4D Browser Mouse
+       0007  Twinhead Mouse
+       0009  Inland Pro 4500/5000 Mouse
+       0011  Browser Mouse
+       1010  Optical Wireless
+05ff  LeCroy Corp.
+0600  Barco Display Systems
+0601  Jazz Hipster Corp.
+       0003  Internet Security Co., Ltd. SecureKey
+0602  Vista Imaging, Inc.
+       1001  ViCam Webcam
+0603  Novatek Microelectronics Corp.
+       00f1  Keyboard
+       6871  Mouse
+0604  Jean Co., Ltd
+0605  Anchor C&C Co., Ltd
+0606  Royal Information Electronics Co., Ltd
+0607  Bridge Information Co., Ltd
+0608  Genrad Ads
+0609  SMK Manufacturing, Inc.
+       031d  eHome Infrared Receiver
+       0322  eHome Infrared Receiver
+       ff12  SMK Bluetooth Device
+060a  Worthington Data Solutions, Inc.
+060b  Solid Year
+       0001  MacAlly Keyboard
+       1006  Japanese Keyboard - 260U
+       2101  Keyboard
+       5811  ACK-571U Wireless Keyboard
+       5903  Japanese Keyboard - 595U
+       6001  SolidTek USB 2p HUB
+       6002  SolidTek USB Keyboard
+       6003  Japanese Keyboard - 600HM
+       a001  Maxwell Compact Pc PM3
+060c  EEH Datalink GmbH
+060d  Auctor Corp.
+060e  Transmonde Technologies, Inc.
+060f  Joinsoon Electronics Mfg. Co., Ltd
+0610  Costar Electronics, Inc.
+0611  Totoku Electric Co., Ltd
+0613  TransAct Technologies, Inc.
+0614  Bio-Rad Laboratories
+0615  Quabbin Wire & Cable Co., Inc.
+0616  Future Techno Designs PVT, Ltd
+0617  Swiss Federal Insitute of Technology
+0618  MacAlly
+       0101  Mouse
+0619  Seiko Instruments, Inc.
+       0101  SLP-100 Driver
+       0102  SLP-200 Driver
+       0103  SLP-100N Driver
+       0104  SLP-200N Driver
+       0105  SLP-240 Driver
+061a  Veridicom International, Inc.
+       0110  5thSense Fingerprint Sensor
+       0200  FPS200 Fingerprint Sensor
+       8200  VKI-A Fingerprint Sensor/Flash Storage (dumb)
+       9200  VKI-B Fingerprint Sensor/Flash Storage (smart)
+061b  Promptus Communications, Inc.
+061c  Act Labs, Ltd
+061d  Quatech, Inc.
+061e  Nissei Electric Co.
+       0001  nissei 128DE-USB -
+       0010  nissei 128DE-PNA -
+0620  Alaris, Inc.
+       0004  QuickVideo weeCam
+       0007  QuickVideo weeCam
+       000a  QuickVideo weeCam
+       000b  QuickVideo weeCam
+0621  ODU-Steckverbindungssysteme GmbH & Co. KG
+0622  Iotech, Inc.
+0623  Littelfuse, Inc.
+0624  Avocent Corp.
+0625  TiMedia Technology Co., Ltd
+0626  Nippon Systems Development Co., Ltd
+0627  Adomax Technology Co., Ltd
+0628  Tasking Software, Inc.
+0629  Zida Technologies, Ltd
+062a  Creative Labs
+       0000  Optical mouse
+       0001  Notebook Optical Mouse
+       0201  Defender Office Keyboard (K7310) S Zodiak KM-9010
+       9003  VoIP Conference Hub (A16GH)
+       9004  USR9602 USB Internet Mini Phone
+062b  Greatlink Electronics Taiwan, Ltd
+062c  Institute for Information Industry
+062d  Taiwan Tai-Hao Enterprises Co., Ltd
+062e  Mainsuper Enterprises Co., Ltd
+062f  Sin Sheng Terminal & Machine, Inc.
+0631  JUJO Electronics Corp.
+0633  Cyrix Corp.
+0634  Micron Technology, Inc.
+0635  Methode Electronics, Inc.
+0636  Sierra Imaging, Inc.
+       0003  Vivicam 35Xx
+0638  Avision, Inc.
+       0268  iVina 1200U Scanner
+       026a  Minolta Dimage Scan Dual II
+       0a10  iVina FB1600/UMAX Astra 4500
+       0a13  AV600U
+       0a16  SC-215
+       0a30  UMAX Astra 6700 Scanner
+       0a41  Avision AM3000/MF3000 Series
+       0f01  fi-4010CU
+       4004  Minolta Dimage Scan Elite II
+0639  Chrontel, Inc.
+063a  Techwin Corp.
+063b  Taugagreining HF
+063c  Yamaichi Electronics Co., Ltd (Sakura)
+063d  Fong Kai Industrial Co., Ltd
+063e  RealMedia Technology, Inc.
+063f  New Technology Cable, Ltd
+0640  Hitex Development Tools
+       0026  LPC-Stick
+0641  Woods Industries, Inc.
+0642  VIA Medical Corp.
+0644  TEAC Corp.
+       0000  Floppy
+       0200  All-In-One Multi-Card Reader CA200/B/S
+       1000  CD-ROM Drive
+       800d  TASCAM Portastudio DP-01FX
+       800e  TASCAM US-122L
+       d001  CD-R/RW Unit
+       d002  CD-R/RW Unit
+       d010  CD-RW/DVD Unit
+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
+0649  Weli Science Co., Ltd
+064b  White Mountain DSP, Inc.
+064c  Ji-Haw Industrial Co., Ltd
+064d  TriTech Microelectronics, Ltd
+064e  Suyin Corp.
+       a100  Acer OrbiCam
+       a101  Acer CrystalEye Webcam
+       a102  Lenovo Webcam
+       a110  HP Webcam
+       c107  HP webcam [dv6-1190en]
+       d101  Acer CrystalEye Webcam
+064f  WIBU-Systems AG
+       0bd7  BOX/U
+       0bd8  BOX/RU
+0650  Dynapro Systems
+0651  Likom Technology Sdn. Bhd.
+0652  Stargate Solutions, Inc.
+0653  CNF, Inc.
+0654  Granite Microsystems, Inc.
+       0005  Device Bay Controller
+       0006  Hub
+       0007  Device Bay Controller
+       0016  Hub
+0655  Space Shuttle Hi-Tech Co., Ltd
+0656  Glory Mark Electronic, Ltd
+0657  Tekcon Electronics Corp.
+0658  Sigma Designs, Inc.
+0659  Aethra
+065a  Optoelectronics Co., Ltd
+       0001  Barcode scanner
+065b  Tracewell Systems
+065e  Silicon Graphics
+065f  Good Way Technology Co., Ltd & GWC technology Inc.
+0660  TSAY-E (BVI) International, Inc.
+0661  Hamamatsu Photonics K.K.
+0662  Kansai Electric Co., Ltd
+0663  Topmax Electronic Co., Ltd
+       0103  CobraPad
+0665  Cypress Semiconductor
+       5161  USB to Serial
+0667  Aiwa Co., Ltd
+       0fa1  TD-U8000 Tape Drive
+0668  WordWand
+0669  Oce' Printing Systems GmbH
+066a  Total Technologies, Ltd
+066b  Linksys, Inc.
+       0105  SCM eUSB SmartMedia Card Reader
+       010a  Melco MCR-U2 SmartMedia / CompactFlash Reader
+       200c  USB10TX
+       2202  USB10TX Ethernet [pegasus]
+       2203  USB100TX Ethernet [pegasus]
+       2204  USB100TX HomePNA Ethernet [pegasus]
+       2206  USB Ethernet [pegasus]
+       2207  HomeLink Phoneline 10M Network Adapter
+       2211  WUSB11 802.11b Adapter
+       2212  WUSB11v2.5 802.11b Adapter
+       2213  WUSB12v1.1 802.11b Adapter
+       2219  Instant Wireless Network Adapter
+       400b  USB10TX
+066d  Entrega, Inc.
+066e  Acer Semiconductor America, Inc.
+066f  SigmaTel, Inc.
+       003b  MP3 Player
+       003e  MP3 Player
+       003f  MP3 Player
+       0040  MP3 Player
+       0041  MP3 Player
+       0042  MP3 Player
+       0043  MP3 Player
+       004b  A-Max PA11 MP3 Player
+       3400  STMP3400 D-Major MP3 Player
+       3410  STMP3410 D-Major MP3 Player
+       3500  Player Recovery Device
+       4200  STIr4200 IrDA Bridge
+       4210  STIr4210 IrDA Bridge
+       8000  MSCN MP3 Player
+       8001  SigmaTel MSCN Audio Player
+       8004  MSCNMMC MP3 Player
+       8008  i-Bead 100 MP3 Player
+       8020  MP3 Player
+       8034  MP3 Player
+       8036  MP3 Player
+       8038  MP3 Player
+       8056  MP3 Player
+       8060  MP3 Player
+       8066  MP3 Player
+       807e  MP3 Player
+       8092  MP3 Player
+       8096  MP3 Player
+       809a  MP3 Player
+       80aa  MP3 Player
+       80ac  MP3 Player
+       80b8  MP3 Player
+       80ba  MP3 Player
+       80bc  MP3 Player
+       80bf  MP3 Player
+       80c5  MP3 Player
+       80c8  MP3 Player
+       80ca  MP3 Player
+       80cc  MP3 Player
+       8104  MP3 Player
+       8106  MP3 Player
+       8108  MP3 Player
+       810a  MP3 Player
+       810c  MP3 Player
+       8122  MP3 Player
+       8124  MP3 Player
+       8126  MP3 Player
+       8128  MP3 Player
+       8134  MP3 Player
+       8136  MP3 Player
+       8138  MP3 Player
+       813a  MP3 Player
+       813e  MP3 Player
+       8140  MP3 Player
+       8142  MP3 Player
+       8144  MP3 Player
+       8146  MP3 Player
+       8148  MP3 Player
+       814c  MP3 Player
+       8201  MP3 Player
+       8202  Jens of Sweden / I-BEAD 150M/150H MP3 player
+       8203  MP3 Player
+       8204  MP3 Player
+       8205  MP3 Player
+       8206  Digital MP3 Music Player
+       8207  MP3 Player
+       8208  MP3 Player
+       8209  MP3 Player
+       820a  MP3 Player
+       820b  MP3 Player
+       820c  MP3 Player
+       820d  MP3 Player
+       820e  MP3 Player
+       820f  MP3 Player
+       8210  MP3 Player
+       8211  MP3 Player
+       8212  MP3 Player
+       8213  MP3 Player
+       8214  MP3 Player
+       8215  MP3 Player
+       8216  MP3 Player
+       8217  MP3 Player
+       8218  MP3 Player
+       8219  MP3 Player
+       821a  MP3 Player
+       821b  MP3 Player
+       821c  MP3 Player
+       821d  MP3 Player
+       821e  MP3 Player
+       821f  MP3 Player
+       8220  MP3 Player
+       8221  MP3 Player
+       8222  MP3 Player
+       8223  MP3 Player
+       8224  MP3 Player
+       8225  MP3 Player
+       8226  MP3 Player
+       8227  MP3 Player
+       8228  MP3 Player
+       8229  MP3 Player
+       8230  MP3 Player
+       9000  MP3 Player
+       9001  MP3 Player
+       9002  MP3 Player
+0670  Sequel Imaging
+       0001  Calibrator
+       0005  Enable Cable
+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
+       0550  Vigor550
+       1688  miniVigor 128 ISDN TA
+       6694  USB ISDN TA
+0676  Teles AG
+0677  Aiwa Co., Ltd
+       07d5  TM-ED1285(USB)
+       0fa1  TD-U8000 Tape Drive
+0678  ACard Technology Corp.
+067b  Prolific Technology, Inc.
+       0000  PL2301 USB-USB Bridge
+       0001  PL2302 USB-USB Bridge
+       04bb  PL2303 Serial (IODATA USB-RSAQ2)
+       0610  Onext EG210U MODEM
+       0611  AlDiga AL-11U Quad-band GSM/GPRS/EDGE modem
+       2303  PL2303 Serial Port
+       2305  PL2305 Parallel Port
+       2307  PL2307 USB-ATAPI4 Bridge
+       2313  FITEL PHS U Cable Adaptor
+       2315  Flash Disk Embedded Hub
+       2316  Flash Disk Security Device
+       2317  Mass Storage Device
+       2501  PL2501 USB-USB Bridge (USB 2.0)
+       2507  PL2507 Hi-speed USB to IDE bridge controller
+       2515  Flash Disk Embedded Hub
+       2517  Flash Disk Mass Storage Device
+       25a1  PL25A1 Host-Host Bridge
+       3400  Hi-Speed Flash Disk with TruePrint AES3400
+       3500  Hi-Speed Flash Disk with TruePrint AES3500
+       3507  PL3507 ATAPI6 Bridge
+       aaa0  Prolific Pharos
+       aaa2  PL2303 Serial Adapter (IODATA USB-RSAQ3)
+067c  Efficient Networks, Inc.
+       1001  Siemens SpeedStream 100MBps Ethernet
+       1022  Siemens SpeedStream 1022 802.11b Adapter
+       1023  SpeedStream Wireless
+       4020  SpeedStream 4020 ATM/ADSL Installer
+       4031  Efficient ADSL Modem
+       4032  SpeedStream 4031 ATM/ADSL Installer
+       4033  SpeedStream 4031 ATM/ADSL Installer
+       4060  Alcatel Speedstream 4060 ADSL Modem
+       4062  Efficient Networks 4060 Loader
+       5667  Efficient Networks Virtual Bus for ADSL Modem
+       c031  SpeedStream 4031 ATM/ADSL Installer
+       c032  SpeedStream 4031 ATM/ADSL Installer
+       c033  SpeedStream 4031 ATM/ADSL Installer
+       c060  SpeedStream 4060 Miniport ATM/ADSL Adapter
+       d667  Efficient Networks Virtual Bus for ADSL Modem
+       e240  Speedstream Ethernet Adapter E240
+       e540  Speedstream Ethernet Adapter E240
+067d  Hohner Corp.
+067e  Intermec Technologies Corp.
+       0801  SR30 Barcode Scanner
+       1001  Mobile Computer
+067f  Virata, Ltd
+       4552  DSL-200 ADSL Modem
+       6542  DSL Modem
+       6549  DSL Modem
+       7541  DSL Modem
+0680  Realtek Semiconductor Corp., CPP Div. (Avance Logic)
+       0002  Arowana Optical Wheel Mouse MSOP-01
+0681  Siemens Information and Communication Products
+       0001  Dect Base
+       0002  Gigaset 3075 Passive ISDN
+       0005  ID-Mouse with Fingerprint Reader
+       0012  I-Gate 802.11b Adapter
+       001b  WLL013
+       001d  Hipath 1000
+       0022  Gigaset SX353 ISDN
+       0026  DECT Data - Gigaset M34
+       002b  A-100-I ADSL Modem
+       002e  ADSL Router_S-141
+       0034  GSM module MC35/ES75 USB Modem
+       3c06  54g USB Network Adapter
+0682  Victor Company of Japan, Ltd
+0684  Actiontec Electronics, Inc.
+0686  Minolta Co., Ltd
+       2001  PagePro 4110W
+       3001  PagePro 4100
+       3006  PagePro 1250W
+       302e  Develop D 1650iD PCL
+       3034  Develop D 2050iD PCL
+       4001  Dimage 2300
+       4003  Dimage 2330 Zoom Camera
+       4004  Scan Elite II
+       4005  Minolta DiMAGE E201 Mass Storage Device
+       4006  Dimage 7 Camera
+       4007  Dimage S304 Camera
+       4008  Dimage 5 Camera
+       4009  Dimage X Camera
+       400a  Dimage S404 Camera
+       400b  Dimage 7i Camera
+       400c  Dimage F100 Camera
+       400d  Scan Dual III
+       400e  Dimage 5400
+       400f  Dimage 7Hi Camera
+       4010  Dimage Xi Camera
+       4011  Dimage F300 Camera
+       4012  Dimage F200 Camera
+       4014  Dimage S414 Camera
+       4015  Dimage XT Camera [storage]
+       4016  Dimage XT Camera [remote mode]
+       4017  Dimage E223
+       4018  Dimage Z1  Camera
+       401a  Dimage A1 Camera
+       401c  Dimage X20 Camera
+       401e  Dimage E323 Camera
+068a  Pertech, Inc.
+068b  Potrans International, Inc.
+068e  CH Products, Inc.
+       00e2  HFX OEM Joystick
+       00f1  Pro Throttle
+       00f2  Flight Sim Pedals
+       00f3  Fighterstick
+       00ff  Flight Sim Yoke
+       0500  GameStick 3D
+       0501  CH Pro Pedals
+       0504  F-16 Combat Stick
+0690  Golden Bridge Electech, Inc.
+0693  Hagiwara Sys-Com Co., Ltd
+       0002  FlashGate SmartMedia Card Reader
+       0003  FlashGate CompactFlash Card Reader
+       0005  FlashGate
+       0006  SM PCCard R/W and SPD
+       0007  FlashGate ME (Authenticated)
+       000a  SDCard/MMC Reader/Writer
+0694  Lego Group
+       0001  Mindstorms Tower
+       0002  Mindstorms NXT
+0698  Chuntex (CTX)
+       1786  1300ex Monitor
+       2003  CTX M730V built in Camera
+       9999  VLxxxx Monitor+Hub
+0699  Tektronix, Inc.
+069a  Askey Computer Corp.
+       0001  VC010 Webcam [pwc]
+       0303  Cable Modem
+       0311  ADSL Router Remote NDIS Device
+       0318  Remote NDIS Device
+       0319  220V Remote NDIS Device
+       0320  IEEE 802.11b Wireless LAN Card
+       0321  Dynalink WLL013 / Compex WLU11A 802.11b Adapter
+       0402  Scientific Atlanta WebSTAR 100 & 200 series Cable Modem
+       0811  BT Virtual Bus for Helium
+       0821  BT Voyager 1010 802.11b Adapter
+       4402  Scientific Atlanta WebSTAR 2000 series Cable Modem
+       4403  Scientific Atlanta WebSTAR 300 series Cable Modem
+       4501  Scientific-Atlanta WebSTAR 2000 series Cable Modem
+069b  Thomson, Inc.
+       0704  DCM245 Cable Modem
+       070c  MP3 Player
+       070d  MP3 Player
+       070e  MP3 Player
+       070f  RCA Lyra RD1071 MP3 Player
+       2220  RCA Kazoo RD1000 MP3 Player
+       300a  RCA Lyra MP3 Player
+       3012  MP3 Player
+       3013  MP3 Player
+       5557  RCA CDS6300
+069d  Hughes Network Systems (HNS)
+       0001  Satellite Receiver Device
+       0002  Satellite Device
+069e  Marx
+       0005  CryptoBox v1.2
+069f  Allied Data Technologies BV
+       0010  Tornado Speakerphone FaxModem 56.0
+       0011  Tornado Speakerphone FaxModem 56.0
+       1000  ADT VvBus for CopperJet
+       1004  CopperJet 821 RouterPlus
+06a2  Topro Technology, Inc.
+       0033  USB Mouse
+06a3  Saitek PLC
+       0006  Cyborg Gold Joystick
+       0109  P880 Pad
+       0160  ST290 Pro
+       0200  Xbox Adrenalin Hub
+       0241  Xbox Adrenalin Gamepad
+       0255  X52 Flight Controller
+       040b  P990 Dual Analog Pad
+       040c  P2900 Wireless Pad
+       0422  ST90 Joystick
+       0460  ST290 Pro Flight Stick
+       0463  ST290
+       0464  Cyborg Evo
+       0471  Cyborg Graphite Stick
+       0501  R100 Sports Wheel
+       0502  ST200 Stick
+       0506  R220 Digital Wheel
+       051e  Cyborg Digital II Stick
+       052d  P750 Gamepad
+       053c  X45 Flight Controller
+       053f  X36F Flightstick
+       056c  P2000 Tilt Pad
+       056f  P2000 Tilt Pad
+       05d2  PC Dash 2
+       075c  X52 Flight Controller
+       0805  R440 Force Wheel
+       1003  GM2 Action Pad
+       1009  Action Pad
+       100a  SP550 Pad and Joystick Combo
+       100b  SP550 Pad
+       1509  P3000 Wireless Pad
+       1589  P3000 Wireless Pad
+       2541  X45 Flight Controller
+       3509  P3000 RF GamePad
+       353e  Cyborg Evo Wireless
+       3589  P3000 Wireless Pad
+       35be  Cyborg Evo
+       5509  P3000 Wireless Pad
+       8000  Gamers' Keyboard
+       801e  Cyborg 3D Digital Stick II
+       8021  Eclipse II Keyboard
+       802d  P750 Pad
+       803f  X36 Flight Controller
+       806f  P2000 Tilt Pad
+       80c0  Pro Gamer Command Unit
+       80c1  Cyborg Command Pad Unit
+       a502  Gaming Mouse
+       ff04  R440 Force Wheel
+       ff0c  Cyborg Force Rumble Pad
+       ff0d  P2600 Rumble Force Pad
+       ff12  Cyborg 3D Force Stick
+       ff17  ST 330 Rumble Force Stick
+       ff52  Cyborg 3D Rumble Force Joystick
+       ffb5  Cyborg Evo Force Joystick
+06a4  Xiamen Doowell Electron Co., Ltd
+06a5  Divio
+       0000  Typhoon Webcam 100k [nw8000]
+       d001  ProLink DS3303u Webcam
+       d800  Chicony TwinkleCam
+       d820  Wize Media 1000
+06a7  MicroStore, Inc.
+06a8  Topaz Systems, Inc.
+       0042  SignatureGem 1X5 Pad
+       0043  SignatureGem 1X5-HID Pad
+06a9  Westell
+       0005  WireSpeed Dual Connect Modem
+       0006  WireSpeed Dual Connect Modem
+       000a  WireSpeed Dual Connect Modem
+       000b  WireSpeed Dual Connect Modem
+       000e  802.11g Adapter
+06aa  Sysgration, Ltd
+06ac  Fujitsu Laboratories of America, Inc.
+06ad  Greatland Electronics Taiwan, Ltd
+06ae  Professional Multimedia Testing Centre
+06af  Harting, Inc. of North America
+06b8  Pixela Corp.
+06b9  Alcatel Telecom
+       0121  SpeedTouch 121g Wireless Dongle
+       2001  SPEED TOUCH Card
+       4061  SpeedTouch ISDN or ADSL Modem
+       a5a5  DynaMiTe Modem
+06ba  Smooth Cord & Connector Co., Ltd
+06bb  EDA, Inc.
+06bc  Oki Data Corp.
+       000b  Okipage 14ex Printer
+       0a91  B2500MFP (printer+scanner)
+       3801  B6100 Laser Printer
+06bd  AGFA-Gevaert NV
+       0001  SnapScan 1212U
+       0002  SnapScan 1236U
+       0100  SnapScan Touch
+       0101  SNAPSCAN ELITE
+       0200  ScanMaker 8700
+       02bf  DUOSCAN f40
+       0400  CL30
+       0401  Mass Storage
+       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
+       20ff  SnapScan e42
+06be  AME Optimedia Technology Co., Ltd
+       0800  Optimedia Camera
+       1005  Dazzle DPVM! (1005)
+       d001  P35U Camera Capture
+06bf  Leoco Corp.
+06c2  Phidgets Inc. (formerly GLAB)
+       0030  PhidgetRFID
+       0038  4-Motor PhidgetServo v3.0
+       0039  1-Motor PhidgetServo v3.0
+       003a  8-Motor PhidgetAvancedServo
+       0040  PhidgetInterface Kit 0-0-4
+       0044  PhidgetInterface Kit 0-16-16
+       0045  PhidgetInterface Kit 8-8-8
+       0048  PhidgetStepper (Under Development)
+       0049  PhidgetTextLED Ver 1.0
+       004a  PhidgetLED Ver 1.0
+       004b  PhidgetEncoder Ver 1.0
+       0051  PhidgetInterface Kit 0-5-7 (Custom)
+       0052  PhidgetTextLCD
+       0053  PhidgetInterfaceKit 0-8-8
+       0058  PhidgetMotorControl Ver 1.0
+       0070  PhidgetTemperatureSensor Ver 1.0
+       0071  PhidgetAccelerometer Ver 1.0
+       0072  PhidgetWeightSensor Ver 1.0
+       0073  PhidgetHumiditySensor
+       0074  PhidgetPHSensor
+       0075  PhidgetGyroscope
+06c4  Bizlink International Corp.
+06c5  Hagenuk, GmbH
+06c6  Infowave Software, Inc.
+06c8  SIIG, Inc.
+06c9  Taxan (Europe), Ltd
+       0005  Monitor Control
+       0007  Monitor Control
+       0009  Monitor Control
+06ca  Newer Technology, Inc.
+06cb  Synaptics, Inc.
+       0001  HID Device
+       0002  HID Device
+       0003  HID Device
+       0005  Touchpad/FPS
+       0006  HID Device
+       0007  HID Device
+       0008  HID Device
+       0009  Composite TouchPad and TrackPoint
+       000e  HID Device
+       0010  Composite Human Interface Device
+       0013  Human Interface Device
+06cc  Terayon Communication Systems
+       0101  Cable Modem
+       0102  Cable Modem
+       0103  Cable Modem
+       0104  Cable Modem
+       0304  Cable Modem
+06cd  Keyspan
+       0101  USA-28 PDA [no firmware]
+       0102  USA-28X PDA [no firmware]
+       0103  USA-19 PDA [no firmware]
+       0104  PDA [prerenum]
+       0105  USA-18X PDA [no firmware]
+       0106  USA-19W PDA [no firmware]
+       0107  USA-19 PDA
+       0108  USA-19W PDA
+       0109  USA-49W serial adapter [no firmware]
+       010a  USA-49W serial adapter
+       010b  USA-19Qi serial adapter [no firmware]
+       010c  USA-19Qi serial adapter
+       010d  USA-19Q serial Adapter (no firmware)
+       010e  USA-19Q serial Adapter
+       010f  USA-28 PDA
+       0110  USA-28Xb PDA
+       0111  USA-18 serial Adapter
+       0112  USA-18X PDA
+       0113  USA-28Xb PDA [no firmware]
+       0114  USA-28Xa PDA [no firmware]
+       0115  USA-28Xa PDA
+       0116  USA-18XA serial Adapter (no firmware)
+       0117  USA-18XA serial Adapter
+       0118  USA-19QW PDA [no firmware]
+       0119  USA-19QW PDA
+       011a  USA-49Wlc serial adapter [no firmware]
+       011b  MPR Serial Preloader (MPRQI)
+       011c  MPR Serial (MPRQI)
+       011d  MPR Serial Preloader (MPRQ)
+       011e  MPR Serial (MPRQ)
+       0121  USA-19hs serial adapter
+       012a  USA-49Wlc serial adapter
+       0201  Digital Media Remote
+       0202  UIA-11 remote control
+06cf  SpheronVR AG
+       1010  PanoCam 10
+       1012  PanoCam 12/12X
+06d0  LapLink, Inc.
+       0622  LapLink Gold USB-USB Bridge [net1080]
+06d1  Daewoo Electronics Co., Ltd
+06d3  Mitsubishi Electric Corp.
+       0380  CP8000D Port
+       0381  CP770D Port
+       0385  CP900D Port
+       0387  CP980D Port
+       038b  CP3020D Port
+       038c  CP900DW(ID) Port
+       0393  CP9500D/DW Port
+       0394  CP9000D/DW Port
+       03a1  CP9550D/DW Port
+06d4  Cisco Systems
+06d5  Toshiba
+       4000  Japanese Keyboard
+06d6  Aashima Technology B.V.
+       002d  Trust PowerC@m 350FT
+       002e  Trust PowerC@m 350FS
+       0030  Trust 710 LCD POWERC@M ZOOM - MSD
+       0031  Trust 610/710 LCD POWERC@M ZOOM
+       003a  Trust PowerC@m 770Z (mass storage mode)
+       003b  Trust PowerC@m 770Z (webcam mode)
+       003c  Trust 910z PowerC@m
+       003f  Trust 735S POWERC@M ZOOM, WDM DSC Bulk Driver
+       0050  Trust 738AV LCD PV Digital Camera
+       0062  TRUST 782AV LCD P. V. Video Capture
+       0066  TRUST Digital PCTV and Movie Editor
+       0067  Trust 350FS POWERC@M FLASH
+       006b  TRUST AUDIO VIDEO EDITOR
+06d7  Network Computing Devices (NCD)
+06d8  Technical Marketing Research, Inc.
+06da  Phoenixtec Power Co., Ltd
+       0002  UPS
+06db  Paradyne
+06dc  Foxlink Image Technology Co., Ltd
+       0012  Scan 1200c Scanner
+       0014  Prolink Winscan Pro 2448U
+06de  Heisei Electronics Co., Ltd
+06e0  Multi-Tech Systems, Inc.
+       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]
+       0009  UBS-10BT Ethernet
+       0833  Mass Storage Device
+       a160  Instant Video-To-Go RDX-160 (no firmware)
+       a161  Instant Video-To-Go RDX-160
+       a190  Instand VCD Capture
+       a191  Instant VideoXpress
+       a337  Mini DigitalTV
+       a701  DVD Xpress
+       b337  Mini DigitalTV
+       b701  DVD Xpress B
+06e4  Alcatel Microelectronics
+06e6  Tiger Jet Network, Inc.
+       0200  Internet Phone
+       0201  Internet Phone
+       0202  Composite Device
+       0203  Internet Phone
+       0210  Composite Device
+       0211  Internet Phone
+       0212  Internet Phone
+       031c  Internet Phone
+       031d  Internet Phone
+       031e  Internet Phone
+       3200  Composite Device
+       3201  Internet Phone
+       3202  Composite Device
+       3203  Composite Device
+       7200  Composite Device
+       7210  Composite Device
+       7250  Composite Device
+       825c  Internet Phone
+       831c  Internet Phone
+       831d  Composite Device
+       831e  Composite Device
+       b200  Composite Device
+       b201  Composite Device
+       b202  Internet Phone
+       b210  Internet Phone
+       b211  Composite Device
+       b212  Composite Device
+       b250  Composite Device
+       b251  Internet Phone
+       b252  Internet Phone
+       c200  Internet Phone
+       c201  Internet Phone
+       c202  Composite Device
+       c203  Internet Phone
+       c210  Personal PhoneGateway
+       c211  Personal PhoneGateway
+       c212  Personal PhoneGateway
+       c213  PPG Device
+       c25c  Composite Device
+       c290  PPG Device
+       c291  PPG Device
+       c292  PPG Device
+       c293  Personal PhoneGateway
+       c31c  Composite Device
+       c39c  Personal PhoneGateway
+       c39d  PPG Device
+       c39e  PPG Device
+       c39f  PPG Device
+       c700  Internet Phone
+       c701  Internet Phone
+       c702  Composite Device
+       c703  Internet Phone
+       c710  VoIP Combo Device
+       c711  VoIP Combo
+       c712  VoIP Combo Device
+       c713  VoIP Combo Device
+       cf00  Composite Device
+       cf01  Internet Phone
+       cf02  Internet Phone
+       cf03  Composite Device
+       d210  Personal PhoneGateway
+       d211  PPG Device
+       d212  PPG Device
+       d213  Personal PhoneGateway
+       d700  Composite Device
+       d701  Composite Device
+       d702  Internet Phone
+       d703  Composite Device
+       d710  VoIP Combo
+       d711  VoIP Combo Device
+       d712  VoIP Combo
+       d713  VoIP Combo
+       df00  Composite Device
+       df01  Composite Device
+       df02  Internet Phone
+       df03  Internet Phone
+       f200  Internet Phone
+       f201  Internet Phone
+       f202  Composite Device
+       f203  Composite Device
+       f210  Internet Phone
+       f250  Composite Device
+       f252  Internet Phone
+       f310  Internet Phone
+       f350  Composite Device
+06ea  Sirius Technologies
+       0001  NetCom Roadster II 56k
+       0002  Roadster II 56k
+06eb  PC Expert Tech. Co., Ltd
+06ef  I.A.C. Geometrische Ingenieurs B.V.
+06f0  T.N.C Industrial Co., Ltd
+       de01  DualCam Video Camera
+       de02  DualCam Still Camera
+06f1  Opcode Systems, Inc.
+       a011  SonicPort
+       a021  SonicPort Optical
+06f2  Emine Technology Co.
+       0011  KVM Switch Keyboard
+06f6  Wintrend Technology Co., Ltd
+06f7  Wailly Technology Ltd
+       0003  USB->Din 4 Adaptor
+06f8  Guillemot Corp.
+       3002  Hercules Blog Webcam
+       3004  Hercules Classic Silver
+       3005  Hercules Dualpix Exchange
+       3007  Hercules Dualpix Chat and Show
+       a300  Dual Analog Leader GamePad
+       b000  Hercules DJ Console
+       c000  Hercules Muse Pocket
+       d002  Hercules DJ Console
+       e000  HWGUSB2-54 WLAN
+       e010  HWGUSB2-54-LB
+       e020  HWGUSB2-54V2-AP
+06fa  HSD S.r.L
+06fc  Motorola Semiconductor Products Sector
+06fd  Boston Acoustics
+       0101  Audio Device
+       0102  Audio Device
+       0201  2-piece Audio Device
+06fe  Gallant Computer, Inc.
+0701  Supercomal Wire & Cable SDN. BHD.
+0703  Bvtech Industry, Inc.
+0705  NKK Corp.
+0706  Ariel Corp.
+0707  Standard Microsystems Corp.
+       0100  2202 Ethernet [klsi]
+       0200  2202 Ethernet [pegasus]
+       0201  EZ Connect USB Ethernet
+       ee04  SMCWUSB32 802.11b Wireless LAN Card
+       ee06  EZ-Connect 802.11g Adapter
+       ee13  EZ-Connect 802.11g Adapter
+0708  Putercom Co., Ltd
+       047e  USB-1284 BRIDGE
+0709  Silicon Systems, Ltd (SSL)
+070a  Oki Electric Industry Co., Ltd
+       4002  Bluetooth Device
+       4003  Bluetooth Device
+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.
+       0100  Hub
+       0180  IRXpress Infrared Device
+       0181  IRXpress Infrared Device
+       0200  BAY-3U1S1P Serial Port
+       0210  MCT1S Serial Port
+       0230  MCT-232 Serial Port
+       0231  PS/2 Mouse Port
+       0232  Serial On Port
+       0240  PS/2 to USB Converter
+       0300  BAY-3U1S1P Parallel Port
+       0302  Parallel Port
+       0900  SVGA Adapter
+       5001  Trigger UV-002BD[Startech USBVGAE]
+0713  Interval Research Corp.
+0714  NewMotion, Inc.
+       0003  ADB to USB convertor
+0717  ZNK Corp.
+0718  Imation Corp.
+       0002  SuperDisk 120MB
+       0003  SuperDisk 120MB (Authenticated)
+       0060  Flash Drive
+       0061  Flash Drive
+       0062  Flash Drive
+       0063  Swivel Flash Drive
+       0064  Flash Drive
+       0065  Flash Drive
+       0066  Flash Drive
+       0067  Flash Drive
+       0068  Flash Drive
+       0084  Flash Drive Mini
+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 Networks Corp.
+       1000  Diva ISDN TA
+       1003  Diva
+       2000  Teledat Surf
+071e  Ariston Technologies
+0723  Centillium Communications Corp.
+       0002  Palladia 300/400 Adsl Modem
+0726  Vanguard International Semiconductor-America
+0729  Amitm
+       1000  USC-1000 Serial Port
+072e  Sunix Co., Ltd
+072f  Advanced Card Systems, Ltd
+       0001  AC1030-based SmartCard Reader
+       0008  ACR 80 Smart Card Reader
+       1000  PLDT Drive
+       1001  PLDT Drive
+       8002  AET63 BioTRUSTKey
+       8003  ACR120
+       8103  ACR120
+       9000  ACR38 AC1038-based Smart Card Reader
+       90cc  ACR38 SmartCard Reader
+       90cf  ACR38 SAM Smart Card Reader
+       90d0  PertoSmart EMV - Card Reader
+0731  Susteen, Inc.
+       0528  SonyEricsson DCU-11 Cable
+0732  Goldfull Electronics & Telecommunications Corp.
+0733  ViewQuest Technologies, Inc.
+       0101  Digital Video Camera
+       0110  VQ110 Video Camera
+       0401  CS330 Webcam
+       0402  M-318B Webcam
+       0430  Intel Pro Share Webcam
+       0630  VQ630 Dual Mode Digital Camera(Bulk)
+       0631  Hercules Dualpix
+       0780  Smart Cam Deluxe(composite)
+       1310  Epsilon 1.3/Jenoptik JD C1.3/UMAX AstraPix 470
+       1311  Digital Dream Epsilon 1.3
+       1314  Mercury 2.1MEG Deluxe Classic Cam
+       2211  Jenoptik jdc 21 LCD Camera
+       2221  Mercury Digital Pro 3.1p
+       3261  Concord 3045 spca536a Camera
+       3281  Cyberpix S550V
+0734  Lasat Communications A/S
+       0001  560V Modem
+       0002  Lasat 560V Modem
+       043a  DVS Audio
+       043b  3DeMon USB Capture
+0735  Asuscom Network
+       2100  ISDN Adapter
+       2101  ISDN Adapter
+       6694  ISDNlink 128K
+       c541  ISDN TA 280
+0736  Lorom Industrial Co., Ltd
+0738  Mad Catz, Inc.
+       4507  XBox Device
+       4516  XBox Device
+       4520  XBox Device
+       4526  XBox Device
+       4536  XBox Device
+       4540  XBox Device
+       4556  XBox Device
+       4566  XBox Device
+       4576  XBox Device
+       4586  XBox Device
+       4588  XBox Device
+073a  Chaplet Systems, Inc.
+073b  Suncom Technologies
+073c  Industrial Electronic Engineers, Inc.
+       0305  Pole Display (PC305-3415  2 x 20 Line Display)
+       0322  Pole Display (PC322-3415  2 x 20 Line Display)
+       0324  Pole Display (LB324-USB   4 x 20 Line Display)
+       0330  Pole Display (P330-3415   2 x 20 Line Display)
+       0424  Pole Display (SP324-4415  4 x 20 Line Display)
+       0450  Pole Display (L450-USB   Graphic Line Display)
+       0505  Pole Display (SPC505-3415 2 x 20 Line Display)
+       0522  Pole Display (SPC522-3415 2 x 20 Line Display)
+       0624  Pole Display (SP324-3415  4 x 20 Line Display)
+073d  Eutron S.p.a.
+       0005  Crypto Token
+       0007  CryptoIdentity CCID
+       0025  SmartKey 3
+       0c00  Pocket Reader
+       0d00  StarSign Bio Token 3.0 EU
+073e  NEC, Inc.
+       0301  Game Pad
+0745  Syntech Information Co., Ltd
+0746  Onkyo Corp.
+       5500  SE-U55 Audio Device
+0747  Labway Corp.
+0748  Strong Man Enterprise Co., Ltd
+0749  EVer Electronics Corp.
+074a  Ming Fortune Industry Co., Ltd
+074b  Polestar Tech. Corp.
+074c  C-C-C Group PLC
+074d  Micronas GmbH
+       3553  Composite USB-Device
+       3554  Composite USB-Device
+       3556  Composite USB-Device
+074e  Digital Stream Corp.
+       0001  PS/2 Adapter
+       0002  PS/2 Adapter
+0755  Aureal Semiconductor
+0757  Network Technologies, Inc.
+075b  Sophisticated Circuits, Inc.
+       0001  Kick-off! Watchdog
+0763  Midiman
+       0115  KeyRig 25
+       0117  Trigger Finger
+       0119  MidAir
+       0150  M-Audio Uno
+       0160  M-Audio 1x1
+       0192  M-Audio Keystation 88es
+       0193  ProKeys 88
+       0194  ProKeys 88sx
+       0195  Oxygen 8 v2
+       0196  Oxygen 49
+       0197  Oxygen 61
+       0198  Axiom 25
+       0199  Axiom 49
+       019a  Axiom 61
+       019b  KeyRig 49
+       019c  KeyStudio
+       1001  MidiSport 2x2
+       1002  MidiSport 2x2
+       1003  MidiSport 2x2
+       1010  MidiSport 1x1
+       1011  MidiSport 1x1
+       1014  M-Audio Keystation Loader
+       1015  M-Audio Keystation
+       1020  Midisport 4x4
+       1021  MidiSport 4x4
+       1030  Midisport 8x8
+       1031  MidiSport 8x8/s Loader
+       1033  MidiSport 8x8/s
+       1040  M-Audio MidiSport 2x4 Loader
+       1041  M-Audio MidiSport 2x4
+       1110  MidiSport 1x1
+       2001  M Audio Quattro
+       2002  M Audio Duo
+       2003  M Audio AudioPhile
+       2004  M-Audio MobilePre
+       2006  M-Audio Transit
+       2007  M-Audio Sonica Theater
+       2008  M-Audio Ozone
+       200d  M-Audio OmniStudio
+       200f  M-Audio MobilePre
+       2010  M-Audio Fast Track
+       2012  M-Audio Fast Track Pro
+       2013  M-Audio JamLab
+       2015  M-Audio RunTime DFU
+       2016  M-Audio RunTime DFU
+       2019  M-Audio Ozone Academic
+       201a  M-Audio Micro
+       201b  M-Audio RunTime DFU
+       201d  M-Audio Producer
+       2080  M-Audio RunTime DFU
+       2081  M-Audio RunTime DFU
+       2803  M-Audio Audiophile DFU
+       2804  M-Audio MobilePre DFU
+       2806  M-Audio Transit DFU
+       2815  M-Audio DFU
+       2816  M-Audio DFU
+       281b  M-Audio DFU
+       2880  M-Audio DFU
+       2881  M-Audio DFU
+0764  Cyber Power System, Inc.
+       0005  Cyber Power UPS
+       0501  CP1500 AVR UPS
+0765  X-Rite, Inc.
+0766  Jess-Link Products Co., Ltd
+0767  Tokheim Corp.
+0768  Camtel Technology Corp.
+       0006  Camtel Technology USB TV Genie Pro FM Model TVB330
+       0023  eHome Infrared Receiver
+0769  Surecom Technology Corp.
+       11f2  EP-9001-g 802.11g 54M WLAN Adapter
+       11f3  RT2570
+       11f7  802.11g 54M WLAN Adapter
+       31f3  RT2573
+076a  Smart Technology Enablers, Inc.
+076b  OmniKey AG
+       0596  CardMan 2020
+       1021  CardMan 1021
+       1221  CardMan 1221
+       1784  CardMan 6020
+       3021  CardMan 3121
+       3610  CardMan 3620
+       3621  CardMan 3621
+       3821  CardMan 3821
+       4321  CardMan 4321
+       5121  CardMan 5121
+       5125  CardMan 5125
+       6622  CardMan 6121
+       a011  CCID Smart Card Reader Keyboard
+       a021  CCID Smart Card Reader
+       a022  CardMan Smart@Link
+       c000  CardMan 3x21 CS
+       c001  CardMan 5121 CS
+076c  Partner Tech
+076d  Denso Corp.
+076e  Kuan Tech Enterprise Co., Ltd
+076f  Jhen Vei Electronic Co., Ltd
+0770  Welch Allyn, Inc - Medical Division
+0771  Observator Instruments BV
+       4455  OMC45III
+       ae0f  OMC45III
+0774  AmTRAN Technology Co., Ltd
+0775  Longshine Electronics Corp.
+0776  Inalways Corp.
+0777  Comda Enterprise Corp.
+0778  Volex, Inc.
+0779  Fairchild Semiconductor
+077a  Sankyo Seiki Mfg. Co., Ltd
+077b  Linksys
+       08be  BEFCMU10 v4 Cable Modem
+       2219  WUSB11 V2.6 802.11b Adapter
+       2226  USB200M 100baseTX Adapter
+077c  Forward Electronics Co., Ltd
+       0005  NEC Keyboard
+077d  Griffin Technology
+       0223  IMic Audio In/Out
+       0405  iMate, ADB Adapter
+       0410  PowerMate
+       041a  PowerWave
+       07af  iMic
+       1016  AirClick
+       627a  Radio SHARK
+077f  Well Excellent & Most Corp.
+0780  Sagem Monetel GmbH
+       1202  ORGA 900 Smart Card Terminal Virtual Com Port
+       1302  ORGA 6000 Smart Card Terminal Virtual Com Port
+       1303  ORGA 6000 Smart Card Terminal USB RNDIS
+       df55  ORGA 900/6000 Smart Card Terminal DFU
+0781  SanDisk Corp.
+       0001  SDDR-05a ImageMate CompactFlash Reader
+       0002  SDDR-31 ImageMate II CompactFlash Reader
+       0005  SDDR-05b (CF II) ImageMate CompactFlash Reader
+       0100  ImageMate SDDR-12
+       0200  SDDR-09 (SSFDC) ImageMate SmartMedia Reader [eusb]
+       0400  SecureMate SD/MMC Reader
+       0621  SDDR-86 Imagemate 6-in-1 Reader
+       0720  Sansa C200 series in recovery mode
+       0729  Sansa E200 series in recovery mode
+       0810  SDDR-75 ImageMate CF-SM Reader
+       0830  ImageMate CF/MMC/SD Reader
+       1234  Cruzer Mini Flash Drive
+       5150  SDCZ2 Cruzer Mini Flash Drive (thin)
+       5151  Cruzer Micro Flash Drive
+       5153  Cruzer Flash Drive
+       5402  U3 Cruzer Micro
+       5406  Cruzer Micro U3
+       5408  Cruzer Titanium U3
+       6100  Ultra II SD Plus 2GB
+       7100  Cruzer Mini
+       7101  Pen Flash
+       7102  Cruzer Mini
+       7103  Cruzer Mini
+       7104  Cruzer Micro Mini 256MB Flash Drive
+       7105  Cruzer Mini
+       7106  Cruzer Mini
+       7112  Cruzer Micro 128MB Flash Drive
+       7113  Cruzer Micro 256MB Flash Drive
+       7114  Cruzer Mini
+       7115  Cruzer Mini
+       7400  Sansa M200 series (msc)
+       7401  Sansa M200 series (mtp)
+       7420  Sansa E200 series (mtp)
+       7421  Sansa E200 series
+       7422  Sansa E200 series v2 (mtp)
+       7423  Sansa E200 series v2 (msc)
+       7430  Sansa M200 series
+       7431  Sansa M200v4 (msc)
+       7432  Sansa Clip (mtp)
+       7433  Sansa Clip (msc)
+       7434  Sansa Clip V2 (mtp)
+       7435  Sansa Clip V2 (msc)
+       7450  Sansa C250
+       7451  Sansa C240
+       7460  Sansa Express
+       7480  Sansa Connect
+       7481  Sansa Connect (in recovery mode)
+       74b1  Sansa View
+       74c0  Sansa Fuze (mtp)
+       74c1  Sansa Fuze (msc)
+       74d0  Sansa Clip+
+       8181  Pen Flash
+       8183  Hi-Speed Mass Storage Device
+       8185  SDCZ2 Cruzer Mini Flash Drive (older, thick)
+       8888  Card Reader
+       8889  SDDR-88 Imagemate 8-in-1 Reader
+       8919  Card Reader
+       8989  ImageMate 12-in-1 Reader
+       9191  ImageMate CF
+       9219  Card Reader
+       9292  ImageMate CF Reader/Writer
+       9393  ImageMate SD-MMC
+       9595  ImageMate xD-SM
+       9797  ImageMate MS-PRO
+       9919  Card Reader
+       9999  SDDR-99 5-in-1 Reader
+       a7e8  SDDR-113 MicroMate SDHC Reader
+       b2b3  SDDR-103 MobileMate SD+ Reader
+0782  Trackerball
+0783  C3PO
+       0003  LTC31 SmartCard Reader
+0784  Vivitar, Inc.
+       0100  Vivicam 2655
+       1310  Vivicam 3305
+       1688  Vivicam 3665
+       1689  Gateway DC-M42/Labtec DC-505/Vivitar Vivicam 3705
+       2620  AOL Photocam Plus
+       2888  Polaroid DC700
+       3330  Nytec ND-3200 Camera
+       4300  Traveler D1
+       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.
+       0026  LHD Device
+       0033  DVD Multi-plus unit LDR-H443SU2
+       0063  LDR Device
+       0064  LDR-R Device
+       00b3  DVD Multi-plus unit LDR-H443U2
+       010c  Realtek RTL8187 Wireless 802.11g 54Mbps Network Adapter
+       0162  LAN-WN22/U2 Wireless LAN Adapter
+       0163  LAN-WN12/U2 Wireless LAN Adapter
+       0164  LAN-W150/U2M Wireless LAN Adapter
+078b  Happ Controls, Inc.
+       0010  Driving UGCI
+       0020  Flying UGCI
+       0030  Fighting UGCI
+078c  GTCO/CalComp
+       0400  Digitizer (Whiteboard)
+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
+0794  ABL Electronics Corp.
+0795  RealChip, Inc.
+0796  Certicom Corp.
+0797  Grandtech Semiconductor Corp.
+       6801  Flatbed Scanner
+       6802  InkJet Color Printer
+       8001  SmartCam
+       801a  Typhoon StyloCam
+       801c  Meade Binoculars/Camera
+       8901  ScanHex SX-35a
+       8909  ScanHex SX-35b
+       8911  ScanHex SX-35c
+0798  Optelec
+       0001  Braille Voyager
+079b  Sagem
+       0027  USB-Serial Controller
+       002f  Mobile
+       0030  Mobile Communication Device
+       0042  Mobile
+       004a  XG-760A 802.11bg
+       004b  Wi-Fi 11g adapter
+       0056  Agfa AP1100 Photo Printer
+       005d  Mobile Mass Storage
+       0062  XG-76NA 802.11bg
+079d  Alfadata Computer Corp.
+       0201  GamePort Adapter
+07a1  Digicom S.p.A.
+       d952  Palladio USB V.92 Modem
+07a2  National Technical Systems
+07a3  Onnto Corp.
+07a4  Be, Inc.
+07a6  ADMtek, Inc.
+       07c2  AN986A Ethernet
+       0986  AN986 Pegasus Ethernet
+       8266  Infineon WildCard-USB Wireless LAN Adapter
+       8511  ADM8511 Pegasus II Ethernet
+       8513  AN8513 Ethernet
+       8515  AN8515 Ethernet
+07aa  Corega K.K.
+       0001  Ether USB-T Ethernet [klsi]
+       0004  FEther USB-TX Ethernet [pegasus]
+       000c  WirelessLAN USB-11
+       000d  FEther USB-TXS
+       0012  Stick-11 802.11b Adapter
+       0017  FEther USB2-TX
+       001a  ULUSB-11 Key
+       002f  CG-WLUSB2GNL
+       003c  CG-WLUSB2GNL
+       003f  CG-WLUSB300AGN
+       7613  Stick-11 V2 802.11b Adapter
+       9601  FEther USB-TXC
+07ab  Freecom Technologies
+       fc01  IDE bridge
+       fc02  Cable II USB-2
+       fc03  USB2-IDE IDE bridge
+       fcd6  Freecom HD Classic
+       fcf8  Freecom Classic SL Network Drive
+07af  Microtech
+       0004  SCSI-DB25 SCSI Bridge [shuttle]
+       0005  SCSI-HD50 SCSI Bridge [shuttle]
+       0006  CameraMate SmartMedia and CompactFlash Card Reader [eusb/shuttle]
+       fc01  Freecom USB-IDE
+07b0  Trust Technologies
+       0001  ISDN TA
+       0002  ISDN TA128 Plus
+       0003  ISDN TA128 Deluxe
+       0005  ISDN TA128 SE
+       0006  ISDN TA128 CE
+       0007  ISDN TA
+       0008  ISDN TA
+07b1  IMP, Inc.
+07b2  Motorola BCS, Inc.
+       0100  SURFboard Voice over IP Cable Modem
+       0900  SURFboard Gateway
+       0950  SURFboard SBG950 Gateway
+       1000  SURFboard SBG1000 Gateway
+       4100  SurfBoard SB4100 Cable Modem
+       4200  SurfBoard SB4200 Cable Modem
+       4210  SurfBoard 4210 Cable Modem
+       4220  SURFboard SB4220 Cable Modem
+       4500  CG4500 Communications Gateway
+       450b  CG4501 Communications Gateway
+       450e  CG4500E Communications Gateway
+       5100  SurfBoard SB5100 Cable Modem
+       5101  SurfBoard SB5101 Cable Modem
+       5120  SurfBoard SB5120 Cable Modem (RNDIS)
+       7030  Wireless Adapter WU830G
+07b3  Plustek, Inc.
+       0001  OpticPro 1212U Scanner
+       0003  Scanner
+       0010  OpticPro U12 Scanner
+       0011  OpticPro U24 Scanner
+       0013  OpticPro UT12 Scanner
+       0014  Scanner
+       0015  OpticPro U24 Scanner
+       0017  OpticPro UT12/16/24 Scanner
+       0204  Scanner
+       0400  OpticPro 1248U Scanner
+       0401  OpticPro 1248U Scanner #2
+       0403  OpticPro U16B Scanner
+       0404  Scanner
+       0405  A8 Namecard-s Controller
+       0406  A8 Namecard-D Controller
+       0410  Scanner
+       0412  Scanner
+       0800  OpticPro ST48 Scanner
+       0906  OpticBook 3600 Scanner
+       0c03  OpticPro ST64+ Scanner
+       0c26  OpticBook 4600 Scanner
+       0c2b  Mobile Office D428 Scanner
+07b4  Olympus Optical Co., Ltd
+       0100  Camedia C-2100/C-3000 Ultra Zoom Camera
+       0102  Camedia E-10/C-220/C-50 Camera
+       0105  Camedia C-310Z/C-700/C-750UZ/C-755/C-765UZ/C-3040/C-4000/C-5050Z/D-560/C-3020Z Zoom Camera
+       0109  C-370Z/D-535Z/X-450
+       0112  MAUSB-100 xD Card Reader
+       0113  Mju 500
+       0114  C-350Z Camera
+       0118  Mju Mini Digital/Mju Digital 500 Camera
+       0184  P-S100 port
+       0203  Digital Voice Recorder DW-90
+       0206  Digital Voice Recorder DS-330
+       0207  Digital Voice Recorder & Camera W-10
+       0209  Digital Voice Recorder DM-20
+       020d  Digital Voice Recorder VN-240PC
+       0280  m:robe 100
+07b5  Mega World International, Ltd
+       0017  Joystick
+       0213  Thrustmaster Firestorm Digital 3 Gamepad
+       9902  GamePad
+07b6  Marubun Corp.
+07b7  TIME Interconnect, Ltd
+07b8  D-Link Corp.
+       110c  XX1
+       1201  IEEE 802.11b Adapter
+       200c  XX2
+       2573  Wireless LAN Card
+       2770  802.11n/b/g Mini Wireless LAN USB2.0 Adapter
+       2870  802.11n/b/g Wireless LAN USB2.0 Adapter
+       3070  802.11n/b/g Mini Wireless LAN USB2.0 Adapter
+       3071  802.11n/b/g Mini Wireless LAN USB2.0 Adapter
+       3072  802.11n/b/g Mini Wireless LAN USB2.0 Adapter
+       4000  DU-E10 Ethernet [klsi]
+       4002  DU-E100 Ethernet [pegasus]
+       4003  1/10/100 Ethernet Adapter
+       4004  XX4
+       4007  XX5
+       400b  XX6
+       400c  XX7
+       401a  RTL8151
+       4102  USB 1.1 10/100M Fast Ethernet Adapter
+       4104  XX9
+       420a  UF200 Ethernet
+       5301  GW-US54ZGL 802.11bg
+       6001  802.11bg
+       a001  Wireless Network Adapter
+       abc1  DU-E10 Ethernet [pegasus]
+       b000  BWU613
+       b02a  AboCom Bluetooth Device
+       b02b  Bluetooth dongle
+       b02c  BCM92045DG-Flash with trace filter
+       b02d  BCM92045DG-Flash with trace filter
+       b02e  BCM92045DG-Flash with trace filter
+       b030  BCM92045DG-Flash with trace filter
+       b031  BCM92045DG-Flash with trace filter
+       b032  BCM92045DG-Flash with trace filter
+       b033  BCM92045DG-Flash with trace filter
+       b21a  802.11g Wireless Adapter
+       b21b  HWU54DM
+       b21c  RT2573
+       b21d  RT2573
+       b21e  RT2573
+       b21f  WUG2700
+       d011  MP3 Player
+       e001  Mass Storage Device
+       e002  Mass Storage Device
+       e003  Mass Storage Device
+       e004  Mass Storage Device
+       e005  Mass Storage Device
+       e006  Mass Storage Device
+       e007  Mass Storage Device
+       e008  Mass Storage Device
+       e009  Mass Storage Device
+       e00a  Mass Storage Device
+       e4f0  Card Reader Driver
+       f101  DSB-560 Modem [atlas]
+07bc  Canon Computer Systems, Inc.
+07bd  Webgear, Inc.
+07be  Veridicom
+07c0  Code Mercenaries Hard- und Software GmbH
+       1121  The Claw
+       1500  IO-Warrior 40
+       1501  IO-Warrior 24
+       1502  IO-Warrior 48
+       1503  IO-Warrior 28
+07c1  Keisokugiken
+       0068  HKS-0200 USBDAQ
+07c4  Datafab Systems, Inc.
+       0102  USB to LS120
+       0103  USB to IDE
+       1234  USB to ATAPI
+       a000  CompactFlash Card Reader
+       a001  CompactFlash & SmartMedia Card Reader [eusb]
+       a002  Disk Drive
+       a003  Datafab-based Reader
+       a004  USB to MMC Class Drive
+       a005  CompactFlash & SmartMedia Card Reader
+       a006  SmartMedia Card Reader
+       a007  Memory Stick Class Drive
+       a103  MDSM-B reader
+       a107  USB to Memory Stick (LC1) Drive
+       a109  LC1 CompactFlash & SmartMedia Card Reader
+       a10b  USB to CF+MS(LC1)
+       a200  DF-UT-06 Hama MMC/SD Reader
+       a400  CompactFlash & Microdrive Reader
+       a600  Card Reader
+       ad01  Mass Storage Device
+       ae01  Mass Storage Device
+       af01  Mass Storage Device
+       b000  USB to CF(LC1)
+       b001  USB to CF+PCMCIA
+       b004  MMC/SD Reader
+       b006  USB to PCMCIA
+       b00a  USB to CF+SD Drive(LC1)
+       b00b  USB to Memory Stick(LC1)
+07c5  APG Cash Drawer
+07c6  ShareWave, Inc.
+07c7  Powertech Industrial Co., Ltd
+07c8  B.U.G., Inc.
+       0202  MN128-SOHO PAL
+07c9  Allied Telesyn International
+       b100  AT-USB100
+07ca  AVerMedia Technologies, Inc.
+       0002  AVerTV PVR USB/EZMaker Pro Device
+       0026  AVerTV
+       1228  MPEG-2 Capture Device (M038)
+       a309  HP DVB-T TV Tuner [HP dv6-1190en]
+       e880  MPEG-2 Capture Device (E880)
+       e882  MPEG-2 Capture Device (E882)
+07cb  Kingmax Technology, Inc.
+07cc  Carry Computer Eng., Co., Ltd
+       0000  CF Card Reader
+       0001  Reader (UICSE)
+       0002  Reader (UIS)
+       0003  SM Card Reader
+       0004  SM/CF/PCMCIA Card Reader
+       0005  Reader (UISA2SE)
+       0006  SM/CF/PCMCIA Card Reader
+       0007  Reader (UISA6SE)
+       000c  SM/CF Card Reader
+       000d  SM/CF Card Reader
+       000e  Reader (UISDA)
+       000f  Reader (UICLIK)
+       0010  Reader (UISMA)
+       0012  Reader (UISC6SE-FLASH)
+       0014  Litronic Fortezza Reader
+       0030  Mass Storage (UISDMC12S)
+       0040  Mass Storage (UISDMC13S)
+       0100  Reader (UID)
+       0101  Reader (UIM)
+       0102  Reader (UISDMA)
+       0103  Reader (UISDMC)
+       0104  Reader (UISDM)
+       0200  6-in-1 Card Reader
+       0201  Mass Storage (UISDMC1S & UISDMC3S)
+       0202  Mass Storage (UISDMC5S)
+       0203  Mass Storage (UISMC5S)
+       0204  Mass Storage (UIM4/5S & UIM7S)
+       0205  Mass Storage (UIS4/5S & UIS7S)
+       0206  Mass Storage (UISDMC10S & UISDMC11S)
+       0207  Mass Storage (UPIDMA)
+       0208  Mass Storage (UCFC II)
+       0210  Mass Storage (UPIXXA)
+       0213  Mass Storage (UPIDA)
+       0214  Mass Storage (UPIMA)
+       0215  Mass Storage (UPISA)
+       0217  Mass Storage (UPISDMA)
+       0223  Mass Storage (UCIDA)
+       0224  Mass Storage (UCIMA)
+       0225  Mass Storage (UIS7S)
+       0227  Mass Storage (UCIDMA)
+       0234  Mass Storage (UIM7S)
+       0235  Mass Storage (UIS4S-S)
+       0237  Velper (UISDMC4S)
+       0300  6-in-1 Card Reader
+       0301  6-in-1 Card Reader
+       0303  Mass Storage (UID10W)
+       0304  Mass Storage (UIM10W)
+       0305  Mass Storage (UIS10W)
+       0308  Mass Storage (UIC10W)
+       0309  Mass Storage (UISC3W)
+       0310  Mass Storage (UISDMA2W)
+       0311  Mass Storage (UISDMC14W)
+       0320  Mass Storage (UISDMC4W)
+       0321  Mass Storage (UISDMC37W)
+       0330  WINTERREADER Reader
+       0350  9-in-1 Card Reader
+       0500  Mass Storage
+       0501  Mass Storage
+07cd  Elektor
+       0001  USBuart Serial Port
+07cf  Casio Computer Co., Ltd
+       1001  QV-8000SX/5700/3000EX Digicam; Exilim EX-M20
+       1003  Exilim EX-S500
+       1004  Exilim EX-Z120
+       1011  USB-CASIO PC CAMERA
+       2002  E-125 Cassiopeia Pocket PC
+       3801  WMP-1 MP3-Watch
+       4001  Label Printer KL-P1000
+       4007  CW50 Device
+       4104  Cw75 Device
+       4107  CW-L300 Device
+       4500  LV-20 Digital Camera
+       6801  PL-40R
+       6802  MIDI Keyboard
+07d0  Dazzle
+       0001  Digital Video Creator I
+       0002  Global Village VideoFX Grabber
+       0003  Fusion Model DVC-50 Rev 1 (NTSC)
+       0004  DVC-800 (PAL) Grabber
+       0005  Fusion Video and Audio Ports
+       0006  DVC 150 Loader Device
+       0007  DVC 150
+       0327  Fusion Digital Media Reader
+       1001  DM-FLEX DFU Adapter
+       1002  DMHS2 DFU Adapter
+       1102  CF Reader/Writer
+       1103  SD Reader/Writer
+       1104  SM Reader/Writer
+       1105  MS Reader/Writer
+       1106  xD/SM Reader/Writer
+       1202  MultiSlot Reader/Writer
+       2000  FX2 DFU Adapter
+       2001  eUSB CompactFlash Reader
+       4100  Kingsun SF-620 Infrared Adapter
+       4959  Kingsun KS-959 Infrared Adapter
+07d1  D-Link System
+       13ec  VvBus for Helium 2xx
+       13ed  VvBus for Helium 2xx
+       13f1  DSL-302G Modem
+       13f2  DSL-502G Router
+       3a07  WUA-2340 Adapter
+       3a08  predator Bootloader Download
+       3a09  DWA-160 Xtreme N Dual Band USB Adapter(rev.A2) [Atheros AR9001U-(2)NG]
+       3a0d  DWA-120 Wireless 108G Adapter
+       3b01  AirPlus G DWL-G122 Wireless Adapter
+       3b10  RangeBooster N Adapter
+       3b11  Wireless N Adapter DWA-130
+       3c03  DWL-G122 802.11g Adapter [ralink rt73]
+       3c04  WUA-1340
+       3c05  EH103 Wireless G Adapter
+       3c07  Wireless G DWA-110 Adapter
+       3c09  DWA-140 802.11n Adapter [ralink rt2870]
+       3c0a  DWA-140 RangeBooster N USB Adapter(rev.B2)
+       3c0b  DWA-110 Wireless G USB Adapter(rev.B)
+       3c0d  DWA-125 Wireless 150 USB Adapter
+       3c0e  WUA-2340 USB Adapter(rev.B)
+       3c0f  AirPlus G DWL-G122 Wireless Adapter(rev.E)
+       3c10  DWA-160 Xtreme N Dual Band USB Adapter(rev.A) [Atheros AR9001U-(2)NG]
+       3c11  DWA-160 Xtreme N Dual Band USB Adapter(rev.B) [Ralink RT2870]
+       3c13  DWA-130 Wireless N USB Adapter(rev.B)
+       3c15  DWA-140 Wireless N USB Adapter(rev.B3)
+       5100  Remote NDIS Device
+       f101  DBT-122 Bluetooth
+       fc01  DBT-120 Bluetooth Adapter
+07d2  Aptio Products, Inc.
+07d3  Cyberdata Corp.
+07d7  GCC Technologies, Inc.
+07da  Arasan Chip Systems
+07de  Diamond Multimedia
+       2820  VC500 Video Capture Dongle
+07df  David Electronics Co., Ltd
+07e1  Ambient Technologies, Inc.
+       5201  V.90 Modem
+07e2  Elmeg GmbH & Co., Ltd
+07e3  Planex Communications, Inc.
+07e4  Movado Enterprise Co., Ltd
+       0967  SCard R/W CSR-145
+       0968  SCard R/W CSR-145
+07e5  QPS, Inc.
+       05c2  IDE-to-USB2.0 PCA
+       5c01  Que! CDRW
+07e6  Allied Cable Corp.
+07e7  Mirvo Toys, Inc.
+07e8  Labsystems
+07ea  Iwatsu Electric Co., Ltd
+07eb  Double-H Technology Co., Ltd
+07ec  Taiyo Electric Wire & Cable Co., Ltd
+07ee  Torex Retail (formerly Logware)
+       0002  Cash Drawer I/F
+07ef  STSN
+       0001  Internet Access Device
+07f2  Microcomputer Applications, Inc.
+       0001  KEYLOK II
+07f6  Circuit Assembly Corp.
+07f7  Century Corp.
+       0005  ScanLogic/Century Corporation uATA
+       011e  Century USB Disk Enclosure
+07f9  Dotop Technology, Inc.
+07fa  Draytek
+       0778  miniVigor 128 ISDN TA
+       1012  BeWAN ADSL USB ST (grey)
+       1196  BWIFI-USB54AR 802.11bg
+       a904  BeWAN ADSL
+       a905  BeWAN ADSL ST
+07fd  Mark of the Unicorn
+       0000  FastLane MIDI Interface
+       0001  FastLane Quad MIDI Interface
+       0002  MOTU Audio for 64 bit
+07ff  Unknown
+       00ff  Portable Hard Drive
+0801  Mag-Tek
+       0002  Mini Swipe Reader
+0802  Mako Technologies, LLC
+0803  Zoom Telephonics, Inc.
+       1300  V92 Faxmodem
+       4310  Wireless-G
+       5241  Cable Modem
+       5551  DSL Modem
+       9700  2986L FaxModem
+       9800  Cable Modem
+       a312  Wireless-G
+0809  Genicom Technology, Inc.
+080a  Evermuch Technology Co., Ltd
+080c  Datalogic S.p.A.
+       0300  Gryphon D120 Barcode Scanner
+       0400  Gryphon D120 Barcode Scanner
+       0500  Gryphon D120 Barcode Scanner
+       0600  Gryphon M100 Barcode Scanner
+080d  Teco Image Systems Co., Ltd
+       0102  Hercules Scan@home 48
+       0104  3.2Slim
+       0110  UMAX AstraSlim 1200 Scanner
+0810  Personal Communication Systems, Inc.
+0813  Mattel, Inc.
+       0001  Intel Play QX3 Microscope
+       0002  Dual Mode Camera Plus
+081a  MG Logic
+       1000  Duo Pen Tablet
+081b  Indigita Corp.
+       0600  Storage Adapter
+       0601  Storage Adapter
+081c  Mipsys
+081e  AlphaSmart, Inc.
+       df00  Handheld
+0822  Reudo Corp.
+       2001  IRXpress Infrared Device
+0825  GC Protronics
+0826  Data Transit
+0827  BroadLogic, Inc.
+0828  Sato Corp.
+0829  DirecTV Broadband, Inc. (Telocity)
+082d  Handspring
+       0100  Visor
+       0200  Treo
+       0300  Treo 600
+       0400  Handheld
+       0500  Handheld
+       0600  Handheld
+0830  Palm, Inc.
+       0001  m500
+       0002  m505
+       0003  m515
+       0004  Handheld
+       0005  Handheld
+       0006  Handheld
+       0010  Handheld
+       0011  Handheld
+       0012  Handheld
+       0013  Handheld
+       0014  Handheld
+       0020  i705
+       0021  Handheld
+       0022  Handheld
+       0023  Handheld
+       0024  Handheld
+       0030  Handheld
+       0031  Tungsten W
+       0032  Handheld
+       0033  Handheld
+       0034  Handheld
+       0040  m125
+       0041  Handheld
+       0042  Handheld
+       0043  Handheld
+       0044  Handheld
+       0050  m130
+       0051  Handheld
+       0052  Handheld
+       0053  Handheld
+       0054  Handheld
+       0060  Tungsten C/E/T/T2/T3 / Zire 71
+       0061  Lifedrive / Treo 650/680 / Tunsten E2/T5/TX / Centro / Zire 21/31/72 / Z22
+       0062  Handheld
+       0063  Handheld
+       0064  Handheld
+       0070  Zire
+       0071  Handheld
+       0072  Handheld
+       0080  Serial Adapter [for Palm III]
+       0081  Handheld
+       0082  Handheld
+0832  Kouwell Electronics Corp.
+       5850  Cable
+0833  Sourcenext Corp.
+       012e  KeikaiDenwa 8 with charger
+       039f  KeikaiDenwa 8
+0835  Action Star Enterprise Co., Ltd
+0839  Samsung Techwin Co., Ltd
+       0005  Digimax Camera
+       0008  Digimax 230 Camera
+       0009  Digimax 340
+       000a  Digimax 410
+       000e  Digimax 360
+       0010  Digimax 300
+       1003  Digimax 210SE
+       1005  Digimax 220
+       1009  Digimax V4
+       1012  6500 Document Camera
+       1058  S730 Camera
+       1542  Digimax 50 Duo
+       3000  Digimax 35 MP3
+083a  Accton Technology Corp.
+       1046  10/100 Ethernet [pegasus]
+       1060  HomeLine Adapter
+       1f4d  SMC8013WG Broadband Remote NDIS Device
+       3046  10/100 Series Adapter
+       3060  1/10/100 Adapter
+       3501  2664W
+       3502  WN3501D Wireless Adapter
+       3503  T-Sinus 111 Wireless Adapter
+       4501  T-Sinus 154data
+       4505  SMCWUSB-G 802.11bg
+       5046  SpeedStream 10/100 Ethernet [pegasus]
+       5501  Wireless Adapter 11g
+       6500  Cable Modem
+       6618  802.11n Wireless Adapter
+       7511  Arcadyan 802.11N Wireless Adapter
+       7512  Arcadyan 802.11N Wireless Adapter
+       7522  Arcadyan 802.11N Wireless Adapter
+       8522  Arcadyan 802.11N Wireless Adapter
+       a512  Arcadyan 802.11N Wireless Adapter
+       a618  SMC EZ Connect N Draft 11n Wireless Adapter
+       b004  CPWUE001 USB/Ethernet Adapter
+       b522  EZ Connect N Draft 11n Wireless USB2.0 Adapter
+       bb01  BlueExpert Bluetooth Device
+       c003  802.11b Wireless Adapter
+       c501  Zoom Wireless-G
+       c561  802.11a/g Wireless Adapter
+       d522  Speedport W 102 Stick IEEE 802.11n USB 2.0 Adapter
+       e501  ZD1211B
+       e506  WUS-201 802.11bg
+       f501  802.11g Wireless Adapter
+       f502  802.11g Wireless Adapter
+       f522  Arcadyan WN7512 802.11n
+083f  Global Village
+       b100  TelePort V.90 Fax/Modem
+0840  Argosy Research, Inc.
+       0060  Storage Adapter Bridge Module
+0841  Rioport.com, Inc.
+       0001  Rio 500
+0844  Welland Industrial Co., Ltd
+0846  NetGear, Inc.
+       1001  EA101 10 Mbps 10BASE-T Ethernet [Kawasaki LSI KL5KLUSB101B]
+       1002  Ethernet
+       1020  FA101 Fast Ethernet USB 1.1
+       1040  FA120 Fast Ethernet USB 2.0 [Asix AX88172 / AX8817x]
+       4110  MA111(v1) 802.11b Wireless [Intersil Prism 3.0]
+       4200  WG121(v1) 54 Mbps Wireless [Intersil Prism GT]
+       4210  WG121(v2) 54 Mbps Wireless [Intersil Prism GT]
+       4220  WG111(v1) 54 Mbps Wireless [Intersil Prism54 Intersil 3886]
+       4230  MA111(v2) 802.11b Wireless [SIS SIS 162]
+       4240  WG111(v1) rev 2 54 Mbps Wireless [Intersil Prism54 Intersil 3886]
+       4260  WG111v3 54 Mbps Wireless [realtek RTL8187B]
+       4300  WG111U Double 108 Mbps Wireless [Atheros AR5004X / AR5005UX]
+       4301  WG111U (no firmware) Double 108 Mbps Wireless [Atheros AR5004X / AR5005UX]
+       6a00  WG111v2 54 Mbps Wireless [RealTek RTL8187L]
+       7100  WN121T RangeMax Next Wireless-N [Marvell TopDog]
+       9000  WN111(v1) RangeMax Next Wireless [Marvell TopDog]
+       9001  WN111(v2) RangeMax Next Wireless [Atheros AR9001U-(2)NG]
+       9010  WNDA3100(v1) 802.11n [Atheros AR9001U-(2)NG]
+       9011  WNDA3100(v2) 802.11n
+       9040  WNA1000 Wireless-N 150 [Atheros AR9001U-(2)NG]
+       a001  PA101 10 Mbps HPNA Home Phoneline RJ-1
+084d  Minton Optic Industry Co., Inc.
+       0001  Jenoptik JD800i
+       0003  S-Cam F5/D-Link DSC-350 Digital Camera
+       0011  Argus DC3500 Digital Camera
+       0014  Praktica DC 32
+       0019  Praktica DPix3000
+       0025  Praktica DC 60
+       1001  ScanHex SX-35d
+084e  KB Gear
+       0001  KBGear JamCam
+       1002  Pablo Tablet
+084f  Empeg
+       0001  Empeg-Car Mark I/II Player
+0850  Fast Point Technologies, Inc.
+0851  Macronix International Co., Ltd
+       1542  SiPix Blink
+       1543  Maxell WS30 Slim Digital Camera, or Pandigital PI8004W01 digital photo frame
+       a168  MXIC
+0852  CSEM
+0853  Topre Corporation
+       0100  HHKB Professional
+0854  ActiveWire, Inc.
+       0100  I/O Board
+       0101  I/O Board, rev1
+0856  B&B Electronics
+       ac01  uLinks USOTL4 RS422/485 Adapter
+0858  Hitachi Maxell, Ltd
+       3102  Bluetooth Device
+       ffff  Maxell module with BlueCore in DFU mode
+0859  Minolta Systems Laboratory, Inc.
+085a  Xircom
+       0001  Portstation Dual Serial Port
+       0003  Portstation Paraller Port
+       0008  Ethernet
+       0009  Ethernet
+       000b  Portstation Dual PS/2 Port
+       0021  1 port to Serial Converter
+       0022  Parallel Port
+       0023  2 port to Serial Converter
+       0024  Parallel Port
+       0027  1 port to Serial Converter
+       0028  PortGear to SCSI Converter
+       0032  PortStation SCSI Module
+       003c  Bluetooth Adapter
+       0299  Colorvision, Inc. Monitor Spyder
+       8021  1 port to Serial
+       8023  2 port to Serial
+       8027  PGSDB9 Serial Port
+085c  ColorVision, Inc.
+       0200  Monitor Spyder
+0862  Teletrol Systems, Inc.
+0863  Filanet Corp.
+0864  NetGear, Inc.
+       4100  MA101 802.11b Adapter
+       4102  MA101 802.11b Adapter
+0867  Data Translation, Inc.
+       9812  ECON Data acquisition unit
+       9816  DT9816 ECON data acquisition module
+       9836  DT9836 data acquisition card
+086a  Emagic Soft- und Hardware GmbH
+       0001  Unitor8
+       0002  AMT8
+       0003  MT4
+086c  DeTeWe - Deutsche Telephonwerke AG & Co.
+       1001  Eumex 504PC ISDN TA
+       1002  Eumex 504PC (FlashLoad)
+       1003  TA33 ISDN TA
+       1004  TA33 (FlashLoad)
+       1005  Eumex 604PC HomeNet
+       1006  Eumex 604PC HomeNet (FlashLoad)
+       1007  Eumex 704PC DSL
+       1008  Eumex 704PC DSL (FlashLoad)
+       1009  Eumex 724PC DSL
+       100a  Eumex 724PC DSL (FlashLoad)
+       100b  OpenCom 30
+       100c  OpenCom 30 (FlashLoad)
+       100d  BeeTel Home 100
+       100e  BeeTel Home 100 (FlashLoad)
+       1011  USB2DECT
+       1012  USB2DECT (FlashLoad)
+       1013  Eumex 704PC LAN
+       1014  Eumex 704PC LAN (FlashLoad)
+       1021  OpenCom 40
+       1022  OpenCom 40 (FlashLoad)
+       1023  OpenCom 45
+       1024  OpenCom 45 (FlashLoad)
+       1025  Sinus 61 data
+       1029  dect BOX
+       102c  Eumex 604PC HomeNet [FlashLoad]
+       1030  Eumex 704PC DSL [FlashLoad]
+       1032  OpenCom 40 [FlashLoad]
+       1033  OpenCom 30 plus
+       1034  OpenCom 30 plus (FlashLoad)
+       1055  Eumex 220 ISDN TA
+       2000  OpenCom 1000
+086e  System TALKS, Inc.
+       1920  SGC-X2UL
+086f  MEC IMEX, Inc.
+0870  Metricom
+       0001  Ricochet GS
+0871  SanDisk, Inc.
+       0001  SDDR-01 Compact Flash Reader
+       0002  SDDR-31 Compact Flash Reader
+       0005  SDDR-05 Compact Flash Reader
+0873  Xpeed, Inc.
+0874  A-Tec Subsystem, Inc.
+0879  Comtrol Corp.
+087c  Adesso/Kbtek America, Inc.
+087d  Jaton Corp.
+       5704  Ethernet
+087e  Fujitsu Computer Products of America
+087f  Virtual IP Group, Inc.
+0880  APT Technologies, Inc.
+0883  Recording Industry Association of America (RIAA)
+0885  Boca Research, Inc.
+0886  XAC Automation Corp.
+       0630  Intel PC Camera CS630
+0887  Hannstar Electronics Corp.
+088b  MassWorks, Inc.
+       4944  MassWorks ID-75 TouchScreen
+088c  Swecoin AB
+       2030  Ticket Printer TTP 2030
+0892  DioGraphy, Inc.
+       0101  Smartdio Reader/Writer
+0897  Lauterbach
+       0002  Power Debug/Power Debug II
+089c  United Technologies Research Cntr.
+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  RadioShack Corp. (Tandy)
+08bb  Texas Instruments Japan
+       2702  Speakers
+       2900  PCM2900 Audio Codec
+       2901  PCM2901 Audio Codec
+       2904  PCM2904 Audio Codec
+08bd  Citizen Watch Co., Ltd
+       1100  X1-USB Floppy
+08c3  Precise Biometrics
+       0001  100 SC
+       0002  100 A
+       0003  100 SC BioKeyboard
+       0006  100 A BioKeyboard
+       0100  100 MC ISP
+       0101  100 MC FingerPrint and SmartCard Reader
+       0300  100 AX
+       0400  100 SC
+       0401  150 MC
+       0402  200 MC FingerPrint and SmartCard Reader
+       0404  100 SC Upgrade
+       0405  150 MC Upgrade
+       0406  100 MC Upgrade
+08c4  Proxim, Inc.
+       02f2  Farallon Home Phoneline Adapter
+08c7  Key Nice Enterprise Co., Ltd
+08c8  2Wire, Inc.
+08c9  Nippon Telegraph and Telephone Corp.
+08ca  Aiptek International, Inc.
+       0010  Tablet
+       0020  APT-6000U Tablet
+       0021  APT-2 Tablet
+       0022  Tablet
+       0023  Tablet
+       0024  Tablet
+       0100  Pen Drive
+       0102  DualCam
+       0103  Pocket DV Digital Camera
+       0104  Pocket DVII
+       0105  Mega DV(Disk)
+       0106  Pocket DV3100+
+       0107  Pocket DV3100
+       0109  Nisis DV4 Digital Camera
+       010a  Trust 738AV LCD PV Mass Storage
+       0111  PenCam VGA Plus
+       2008  Mini PenCam 2
+       2010  Pocket CAM 3 Mega (webcam)
+       2011  Pocket CAM 3 Mega (storage)
+       2016  PocketCam 2 Mega
+       2018  Pencam SD 2M
+       2020  Slim 3000F
+       2022  Slim 3200
+       2024  Pocket DV3500
+       2028  Pocket Cam4M
+       2040  Pocket DV4100M
+       2042  Pocket DV5100M Composite Device
+       2043  Pocket DV5100M (Disk)
+       2060  Pocket DV5300
+08cd  Jue Hsun Ind. Corp.
+08ce  Long Well Electronics Corp.
+08cf  Productivity Enhancement Products
+08d1  smartBridges, Inc.
+       0001  smartNIC Ethernet [catc]
+       0003  smartNIC 2 PnP Ethernet
+08d3  Virtual Ink
+08d4  Fujitsu Siemens Computers
+       0009  SCR SmartCard Reader
+08d8  IXXAT Automation GmbH
+       0002  USB-to-CAN compact
+       0003  USB-to-CAN II
+       0100  USB-to-CAN
+08d9  Increment P Corp.
+08dd  Billionton Systems, Inc.
+       0112  Wireless LAN Adapter
+       0113  Wireless LAN Adapter
+       0986  USB-100N Ethernet [pegasus]
+       0987  USBLP-100 HomePNA Ethernet [pegasus]
+       0988  USBEL-100 Ethernet [pegasus]
+       1986  10/100 LAN Adapter
+       2103  DVB-T TV-Tuner Card-R
+       8511  USBE-100 Ethernet [pegasus2]
+       90ff  USB2AR Ethernet
+08de  ???
+       7a01  802.11b Adapter
+08df  Spyrus, Inc.
+       0001  Rosetta Token V1
+       0002  Rosetta Token V2
+       0003  Rosetta Token V3
+       0a00  Lynks Interface
+08e3  Olitec, Inc.
+       0002  USB-RS232 Bridge
+       0100  Interface ADSL
+       0101  Interface ADSL
+       0102  ADSL
+       0301  RNIS
+08e4  Pioneer Corp.
+08e5  Litronic
+08e6  Gemplus
+       0001  GemPC-Touch 430
+       0430  GemPC430 SmartCard Reader
+       0432  GemPC432 SmartCard Reader
+       0435  GemPC435 SmartCard Reader
+       0437  GemPC433 SL SmartCard Reader
+       1359  UA SECURE STORAGE TOKEN
+       2202  Gem e-Seal Pro Token
+       3437  GemPC Twin SmartCard Reader
+       3438  GemPC Key SmartCard Reader
+       3478  PinPad Smart Card Reader
+       4433  GemPC433-Swap
+       5501  GemProx-PU Contactless Smart Card Reader
+       ace0  UA HYBRID TOKEN
+08e7  Pan-International Wire & Cable
+08e8  Integrated Memory Logic
+08e9  Extended Systems, Inc.
+       0100  XTNDAccess IrDA Dongle
+08ea  Ericsson, Inc., Blue Ridge Labs
+       00c9  ADSL Modem HM120dp Loader
+       00ca  ADSL WAN Modem HM120dp
+       00ce  HM230d Virtual Bus for Helium
+       abba  USB Driver for Bluetooth Wireless Technology
+       abbb  Bluetooth Device in DFU State
+08ec  M-Systems Flash Disk Pioneers
+       0001  TravelDrive 2C
+       0002  TravelDrive 2C
+       0005  TravelDrive 2C
+       0008  TravelDrive 2C
+       0010  DiskOnKey
+       0011  DiskOnKey
+       0012  TravelDrive 2C
+       0014  TravelDrive 2C
+       0015  Kingston DataTraveler ELITE
+       0016  Kingston DataTraveler U3
+       0020  TravelDrive
+       0021  TravelDrive
+       0022  TravelDrive
+       0023  TravelDrive
+       0024  TravelDrive
+       0025  TravelDrive
+       0026  TravelDrive
+       0027  TravelDrive
+       0028  TravelDrive
+       0029  TravelDrive
+       0030  TravelDrive
+       0822  TravelDrive 2C
+       0832  Hi-Speed Mass Storage Device
+       0834  M-Disk 220
+       0998  Kingston Data Traveler2.0 Disk Driver
+       0999  Kingston Data Traveler2.0 Disk Driver
+       1000  TravelDrive 2C
+       2000  TravelDrive 2C
+       2038  TravelDrive
+       2039  TravelDrive
+       204a  TravelDrive
+       204b  TravelDrive
+08ed  MediaTek Inc.
+       0002  CECT M800 memory card
+08ee  CCSI/Hesso
+08f0  Corex Technologies
+08f1  CTI Electronics Corp.
+08f5  SysTec Co., Ltd
+08f6  Logic 3 International, Ltd
+08f7  Vernier
+       0001  LabPro
+       0002  EasyTemp
+08f8  Keen Top International Enterprise Co., Ltd
+08f9  Wipro Technologies
+08fa  Caere
+08fb  Socket Communications
+08fc  Sicon Cable Technology Co., Ltd
+08fd  Digianswer A/S
+       0001  Bluetooth Device
+08ff  AuthenTec, Inc.
+       1600  AES1600
+       1610  AES1600
+       2500  AES2501
+       2501  AES2501
+       2502  AES2501
+       2503  AES2501
+       2504  AES2501
+       2505  AES2501
+       2506  AES2501
+       2507  AES2501
+       2508  AES2501
+       2509  AES2501
+       250a  AES2501
+       250b  AES2501
+       250c  AES2501
+       250d  AES2501
+       250e  AES2501
+       250f  AES2501
+       2510  AES2510
+       2580  AES2501 Fingerprint Sensor
+       2588  AES2501
+       2589  AES2501
+       258a  AES2501
+       258b  AES2501
+       258c  AES2501
+       258d  AES2501
+       258e  AES2501
+       258f  AES2501
+       2810  AES2810
+       3400  AES3400 TruePrint Sensor
+       3401  AES3400 Sensor
+       3402  AES3400 Sensor
+       3403  AES3400 Sensor
+       3404  AES3400 TruePrint Sensor
+       3405  AES3400 TruePrint Sensor
+       3406  AES3400 TruePrint Sensor
+       3407  AES3400 TruePrint Sensor
+       4902  BioMV with TruePrint AES3500
+       4903  BioMV with TruePrint AES3400
+       5500  AES4000
+       5501  AES4000 TruePrint Sensor
+       5503  AES4000 TruePrint Sensor
+       5505  AES4000 TruePrint Sensor
+       5507  AES4000 TruePrint Sensor
+       55ff  AES4000 TruePrint Sensor.
+       5700  AES3500 Fingerprint Reader
+       5701  AES3500 TruePrint Sensor
+       5702  AES3500 TruePrint Sensor
+       5703  AES3500 TruePrint Sensor
+       5704  AES3500-BZ TruePrint Sensor
+       5705  AES3500-BZ TruePrint Sensor
+       5706  AES3500-BZ TruePrint Sensor
+       5707  AES3500-BZ TruePrint Sensor
+       5710  AES3500 TruePrint Sensor
+       5711  AES3500 TruePrint Sensor
+       5712  AES3500 TruePrint Sensor
+       5713  AES3500 TruePrint Sensor
+       5714  AES3500-BZ TruePrint Sensor
+       5715  AES3500-BZ TruePrint Sensor
+       5716  AES3500-BZ TruePrint Sensor
+       5717  AES3500-BZ TruePrint Sensor
+       5730  AES3500 TruePrint Sensor
+       5731  AES3500 TruePrint Sensor
+       5732  AES3500 TruePrint Sensor
+       5733  AES3500 TruePrint Sensor
+       5734  AES3500-BZ TruePrint Sensor
+       5735  AES3500-BZ TruePrint Sensor
+       5736  AES3500-BZ TruePrint Sensor
+       5737  AES3500-BZ TruePrint Sensor
+       afe3  FingerLoc Sensor Module (Anchor)
+       afe4  FingerLoc Sensor Module (Anchor)
+       afe5  FingerLoc Sensor Module (Anchor)
+       afe6  FingerLoc Sensor Module (Anchor)
+       fffd  AES2510 Sensor (USB Emulator)
+       ffff  Sensor (Emulator)
+0900  Pinnacle Systems, Inc.
+0901  VST Technologies
+       0001  Hard Drive Adapter (TPP)
+       0002  SigmaDrive Adapter (TPP)
+0906  Faraday Technology Corp.
+0908  ShenZhen SANZHAI Technology Co.,Ltd
+       2701  Spy Pen VGA
+0909  Audio-Technica Corp.
+090a  Trumpion Microelectronics, Inc.
+       1001  T33520 Flash Card Controller
+       1100  Comotron C3310 MP3 player
+       1200  MP3 player
+       1540  Digitex Container Flash Disk
+090b  Neurosmith
+090c  Feiya Technology Corp.
+       1000  Flash Drive
+       1132  5-in-1 Card Reader
+       6000  SD/SDHC Card Reader (SG365 / FlexiDrive XC+)
+       b371  Silicon Motion SM371 Camera
+090d  Multiport Computer Vertriebs GmbH
+090e  Shining Technology, Inc.
+090f  Fujitsu Devices, Inc.
+0910  Alation Systems, Inc.
+0911  Philips Speech Processing
+       2512  SpeechMike Pro
+0912  Voquette, Inc.
+0915  GlobeSpan, Inc.
+       0001  DSL Modem
+       0002  ADSL ATM Modem
+       0005  LAN Modem
+       2000  802.11 Adapter
+       2002  802.11 Adapter
+       8000  ADSL LAN Modem
+       8005  DSL-302G Modem
+       8101  ADSL WAN Modem
+       8102  DSL-200 ADSL Modem
+       8103  DSL-200 ADSL Modem
+       8104  DSL-200 Modem
+       8400  DSL Modem
+       8401  DSL Modem
+       8402  DSL Modem
+       8500  DSL Modem
+       8501  DSL Modem
+0917  SmartDisk Corp.
+       0001  eFilm Reader-11 SM/CF
+       0002  eFilm Reader-11 SM
+       0003  eFilm Reader-11 CF
+       0200  FireFly
+       0201  FireLite
+       0202  STORAGE ADAPTER (FirePower)
+       0204  FlashTrax Storage
+       0205  STORAGE ADAPTER (CrossFire)
+       0206  FireFly 20G HDD
+       0207  FireLite
+       020f  STORAGE ADAPTER (FireLite)
+       da01  eFilm Reader-11 Test
+       ffff  eFilm Reader-11 (Class/PDR)
+0919  Tiger Electronics
+       0100  Fast Flicks Digital Camera
+091e  Garmin International
+       0003  GPSmap (various models)
+       0004  iQue 3600
+       0200  Data Card Programmer (install)
+       1200  Data Card Programmer
+       21a5  etrex Cx (msc)
+       2295  Colorado 300
+       2353  Nüvi 205T
+0920  Echelon Co.
+       7500  Network Interface
+0921  GoHubs, Inc.
+       1001  GoCOM232 Serial
+0922  Dymo-CoStar Corp.
+       0007  LabelWriter 330
+       0009  LabelWriter 310
+0923  IC Media Corp.
+       010f  SIIG MobileCam
+0924  Xerox
+       23dd  DocuPrint M760 (X760_USB)
+       3ce8  Phaser 3428 Printer
+       3d5b  Phaser 6115MFP TWAIN Scanner
+       420f  WorkCentre PE220 Series
+       421f  M20 Scanner
+       423b  Printing Support
+       ffef  WorkCenter M15
+       fffb  DocuPrint M750 (X750_USB)
+0925  Lakeview Research
+       0005  Gamtec.,Ltd SmartJoy PLUS Adapter
+       8101  Phidgets, Inc., 1-Motor PhidgetServo v2.0
+       8104  Phidgets, Inc., 4-Motor PhidgetServo v2.0
+       8800  WiseGroup Ltd, MP-8800 Quad Joypad
+       8866  WiseGroup Ltd, MP-8866 Dual Joypad
+0927  Summus, Ltd
+0928  Oxford Semiconductor, Ltd
+0929  American Biometric Co.
+092a  Toshiba Information & Industrial Sys. And Services
+092b  Sena Technologies, Inc.
+092f  Northern Embedded Science/CAVNEX
+       0004  JTAG-4
+       0005  JTAG-5
+0930  Toshiba Corp.
+       0009  Gigabeat F/X (HDD audio player)
+       000c  Gigabeat F (mtp)
+       0010  Gigabeat S (mtp)
+       0301  PCX1100U Cable Modem (WDM)
+       0302  PCX2000 Cable Modem (WDM)
+       0305  Cable Modem PCX3000
+       0307  Cable Modem PCX2500
+       0308  PCX2200 Cable Modem (WDM)
+       0309  PCX5000 Cable Modem (WDM)
+       030b  Cable Modem PCX2600
+       0501  Bluetooth Controller
+       0502  Integrated Bluetooth
+       0503  Bluetooth Controller
+       0505  Integrated Bluetooth
+       0506  Integrated Bluetooth
+       0507  Bluetooth Adapter
+       0508  Integrated Bluetooth HCI
+       0509  BT EDR Dongle
+       0706  PocketPC e740
+       0707  Pocket PC e330 Series
+       0708  Pocket PC e350 Series
+       0709  Pocket PC e750 Series
+       070a  Pocket PC e400 Series
+       070b  Pocket PC e800 Series
+       0b05  PX1220E-1G25 External hard drive
+       0b09  PX1396E-3T01 External hard drive
+       1300  Wireless Broadband (CDMA EV-DO) SM-Bus Minicard Status Port
+       1301  Wireless Broadband (CDMA EV-DO) Minicard Status Port
+       1302  Wireless Broadband (3G HSDPA) SM-Bus Minicard Status Port
+       1303  Wireless Broadband (3G HSDPA) Minicard Status Port
+       1308  Broadband (3G HSDPA) SM-Bus Minicard Diagnostics Port
+       642f  TravelDrive
+       6506  TravelDrive 2C
+       6507  TravelDrive 2C
+       6508  TravelDrive 2C
+       6509  TravelDrive 2C
+       6510  TravelDrive 2C
+       6517  TravelDrive 2C
+       6518  TravelDrive 2C
+       6519  Kingston DataTraveler 2.0 USB Stick
+       651a  TravelDrive 2C
+       651b  TravelDrive 2C
+       651c  TravelDrive 2C
+       651d  TravelDrive 2C
+       651e  TravelDrive 2C
+       651f  TravelDrive 2C
+       6520  TravelDrive 2C
+       6521  TravelDrive 2C
+       6522  TravelDrive 2C
+       6523  TravelDrive
+       6524  TravelDrive
+       6525  TravelDrive
+       6526  TravelDrive
+       6527  TravelDrive
+       6528  TravelDrive
+       6529  TravelDrive
+       652a  TravelDrive
+       652b  TravelDrive
+       652c  TravelDrive
+       652d  TravelDrive
+       652f  TravelDrive
+       6530  TravelDrive
+       6531  TravelDrive
+       6532  256M Stick
+       6533  512M Stick
+       6534  TravelDrive
+       653c  Kingston DataTraveler 2.0 Stick (512M)
+       653d  Kingston DataTraveler 2.0 Stick (1GB)
+       653e  Flash Memory
+       6540  TransMemory Flash Memory
+       6544  Kingston DataTraveler 2.0 Stick (2GB)
+       6545  Kingston DataTraveler 2.0 Stick (4GB) / PNY Attache 4GB Stick
+0931  Harmonic Data Systems, Ltd
+0932  Crescentec Corp.
+       0300  VideoAdvantage
+       0302  Syntek DC-112X
+       0320  VideoAdvantage
+       0482  USB2.0 TVBOX
+       1100  DC-1100 Video Enhamcement Device
+       1112  Veo Web Camera
+       a311  Video Enhancement Device
+0933  Quantum Corp.
+0934  Netcom Systems
+0936  NuTesla
+       0030  Composite Device, Mass Storage Device (Flash Drive) amd HID
+       003c  Rhythmedics HID Bootloader
+0939  Lumberg, Inc.
+093a  Pixart Imaging, Inc.
+       0007  CMOS 100K-R Rev. 1.90
+       010e  Digital camera, CD302N/Elta Medi@ digi-cam/HE-501A
+       010f  Argus DC-1610/DC-1620/Emprex PCD3600/Philips P44417B keychain camera/Precision Mini,Model HA513A/Vivitar Vivicam 55
+       020f  Bullet Line Photo Viewer
+       050f  Mars-Semi Pc-Camera
+       2460  Q-TEC WEBCAM 100
+       2468  Cammaestro 2.5DU/X-EYE/Orite SC-120/ICGear TravelCam/Easy Snap Snake Eye Webcam
+       2470  SoC PC-Camera
+       2471  SoC PC-Camera
+       2500  USB Optical Mouse
+       2510  Hama Optical Mouse
+       2600  Typhoon Easycam USB 330K (newer)/Typhoon Easycam USB 2.0 VGA 1.3M/Sansun SN-508
+       2601  SPC 610NC Laptop Camera
+       2603  PAC7312 Camera
+       2608  PAC7311 Trust WB-3300p
+       260e  PAC7311 Gigaware VGA PC Camera:Trust WB-3350p:SIGMA cam 2350
+       260f  PAC7311 SnakeCam
+       2621  PAC731x Trust Webcam
+       2624  Webcam
+093b  Plextor Corp.
+       0010  Storage Adapter
+       0011  PlexWriter 40/12/40U
+       0042  PX-712UF DVD RW
+       a002  ConvertX M402U XLOADER
+       a003  ConvertX AV100U A/V Capture Audio
+       a004  ConvertX TV402U XLOADER
+       a005  KWorld EMP Audio Device
+       a102  ConvertX M402U A/V Capture
+       a104  ConvertX PX-TV402U/NA
+093c  Intrepid Control Systems, Inc.
+       0601  ValueCAN
+       0701  NeoVI Blue vehicle bus interface
+093d  InnoSync, Inc.
+093e  J.S.T. Mfg. Co., Ltd
+093f  Olympia Telecom Vertriebs GmbH
+0940  Japan Storage Battery Co., Ltd
+0941  Photobit Corp.
+0942  i2Go.com, LLC
+0943  HCL Technologies India Private, Ltd
+0944  KORG, Inc.
+0945  Pasco Scientific
+0948  Kronauer music in digital
+       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.
+       0001  neonode N2
+094d  Cable Television Laboratories
+094f  Yano
+       0101  U640MO-03
+       05fc  METALWEAR-HDD
+0951  Kingston Technology
+       0008  Ethernet
+       000a  KNU101TX 100baseTX Ethernet
+       1600  DataTraveler II Pen Drive
+       1601  DataTraveler II+ Pen Drive
+       1602  DataTraveler Mini
+       1603  DataTraveler 1GB/2GB Pen Drive
+       1607  DataTraveler 100
+       1613  DataTraveler 8GB Pen Drive
+       1625  DataTraveler 101 II
+       162a  DataTraveler 112 4GB Pen Drive
+0954  RPM Systems Corp.
+0955  NVidia Corp.
+0956  BSquare Corp.
+0957  Agilent Technologies, Inc.
+       0200  E-Video DC-350 Camera
+       0202  E-Video DC-350 Camera
+0958  CompuLink Research, Inc.
+0959  Cologne Chip AG
+       2bd0  Intelligent ISDN (Ver. 3.60.04)
+095a  Portsmith
+       3003  Express Ethernet
+095b  Medialogic Corp.
+095c  K-Tec Electronics
+095d  Polycom, Inc.
+       0001  Polycom ViaVideo
+0967  Acer (??)
+       0204  WarpLink 802.11b Adapter
+0968  Catalyst Enterprises, Inc.
+096e  Feitian Technologies, Inc.
+       0802  ePass2000 (G&D STARCOS SPK 2.4)
+0971  Gretag-Macbeth AG
+       2005  Huey
+0973  Schlumberger
+       0001  e-gate Smart Card
+0974  Datagraphix, a business unit of Anacomp
+0975  OL'E Communications, Inc.
+0976  Adirondack Wire & Cable
+0977  Lightsurf Technologies
+0978  Beckhoff GmbH
+0979  Jeilin Technology Corp., Ltd
+       0224  JL2005A Toy Camera
+       0226  JL2005A Toy Camera
+097a  Minds At Work LLC
+       0001  Digital Wallet
+097b  Knudsen Engineering, Ltd
+097c  Marunix Co., Ltd
+097d  Rosun Technologies, Inc.
+097f  Barun Electronics Co., Ltd
+0981  Oak Technology, Ltd
+0984  Apricorn
+       0200  Hard Drive Storage (TPP)
+0985  cab Produkttechnik GmbH & Co KG
+       00a3  A3/200 or A3/300 Label Printer
+0986  Matsushita Electric Works, Ltd.
+098c  Vitana Corp.
+098d  INDesign
+098e  Integrated Intellectual Property, Inc.
+098f  Kenwood TMI Corp.
+0993  Gemstar eBook Group, Ltd
+       0001  REB1100 eBook Reader
+       0002  eBook
+0996  Integrated Telecom Express, Inc.
+099a  Zippy Technology Corp.
+       610c  EL-610 Super Mini Electron luminescent Keyboard
+       7160  Hyper Slim Keyboard
+09a3  PairGain Technologies
+09a4  Contech Research, Inc.
+09a5  VCON Telecommunications
+09a6  Poinchips
+       8001  Mass Storage Device
+09a7  Data Transmission Network Corp.
+09a8  Lin Shiung Enterprise Co., Ltd
+09a9  Smart Card Technologies Co., Ltd
+09aa  Intersil Corp.
+       1000  Prism GT 802.11b/g Adapter
+       3642  Prism 2.x 802.11b Adapter
+09ab  Japan Cash Machine Co., Ltd.
+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
+09bc  Grundig
+       0002  MPaxx MP150 MP3 Player
+09be  MySmart.Com
+       0001  MySmartPad
+09bf  Auerswald GmbH & Co. KG
+       00c0  COMpact 2104 ISDN PBX
+       00db  COMpact 4410/2206 ISDN ISDN
+       00f1  COMfort System Telephones
+09c1  Arris Interactive LLC
+       1337  TOUCHSTONE DEVICE
+09c2  Nisca Corp.
+09c3  ActivCard, Inc.
+       0007  Reader V2
+       0008  SmartCard Reader
+09c4  ACTiSYS Corp.
+       0011  ACT-IR2000U IrDA Dongle
+09c5  Memory Corp.
+09cc  Workbit Corp.
+       0404  BAFO USB-ATA/ATAPI Bridge Controller
+09cd  Psion Dacom Home Networks, Ltd
+09ce  City Electronics, Ltd
+09cf  Electronics Testing Center, Taiwan
+09d1  NeoMagic, Inc.
+09d2  Vreelin Engineering, Inc.
+09d3  Com One
+       0001  ISDN TA
+09d7  Novatel Wireless
+       0100  NovAtel FlexPack GPS receiver
+09d9  KRF Tech, Ltd
+09da  A4 Tech Co., Ltd
+       0006  Optical Mouse WOP-35 / Trust 450L Optical Mouse
+       000a  Port Mouse
+       0018  Trust Human Interface Device
+       001a  Wireless Mouse & RXM-15 Receiver
+       002a  Wireless Optical Mouse NB-30
+09db  Measurement Computing Corp.
+       0075  MiniLab 1008
+       0076  PMD-1024
+       007a  PMD-1208LS
+       0081  USB-1616FS
+       0082  USB-1208FS
+       0088  USB-1616FS internal hub
+09dc  Aimex Corp.
+09dd  Fellowes, Inc.
+09df  Addonics Technologies Corp.
+09e1  Intellon Corp.
+       5121  MicroLink dLAN
+09e5  Jo-Dan International, Inc.
+09e6  Silutia, Inc.
+09e7  Real 3D, 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
+09f5  AresCom
+       0168  Network Adapter
+       0188  LAN Adapter
+       0850  Adapter
+09f6  RocketChips, Inc.
+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.
+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 (HCI mode)
+       0002  Frontline Test Equipment Bluetooth Device
+       0003  Nanosira
+       0004  Nanosira WHQL Reference Radio
+       0005  Nanosira-Multimedia
+       0006  Nanosira-Multimedia WHQL Reference Radio
+       0007  Nanosira3-ROM
+       0008  Nanosira3-ROM
+       0009  Nanosira4-EDR WHQL Reference Radio
+       000a  Nanosira4-EDR-ROM
+       000b  Nanosira5-ROM
+       0043  Bluetooth Device
+       0100  Casira with BlueCore2-External Module
+       0101  Casira with BlueCore2-Flash Module
+       0102  Casira with BlueCore3-Multimedia Module
+       0103  Casira with BlueCore3-Flash Module
+       0104  Casira with BlueCore4-External Module
+       0105  Casira with BlueCore4-Multimedia Module
+       1000  Bluetooth Dongle (HID proxy mode)
+       1010  Bluetooth Device
+       1011  Bluetooth Device
+       1012  Bluetooth Device
+       ffff  USB Bluetooth Device in DFU State
+0a13  Telebyte, Inc.
+0a14  Spacelabs Medical, Inc.
+0a15  Scalar Corp.
+0a16  Trek Technology (S) PTE, Ltd
+       1111  ThumbDrive
+       8888  IBM USB Memory Key
+       9988  Trek2000 TD-G2
+0a17  Pentax Corp.
+       0004  Optio 330
+       0006  Optio S
+       0007  Optio 550
+       0009  Optio 33WR
+       000a  Optio 555
+       000c  Optio 43WR (mass storage mode)
+       000d  Optio 43WR
+       0015  Optio S40/S5i
+       003b  Optio 50 (mass storage mode)
+       003d  Optio S55
+       0043  *ist DL
+       0047  Optio S60
+       0052  Optio 60 Digital Camera
+       006e  K10D
+       0070  K100D
+       00a7  Optio E50
+       1001  EI2000 Camera powered by Digita!
+0a18  Heidelberger Druckmaschinen AG
+0a19  Hua Geng Technologies, Inc.
+0a21  Medtronic Physio Control Corp.
+0a22  Century Semiconductor USA, Inc.
+0a2c  AK-Modul-Bus Computer GmbH
+       0008  GPIO Ports
+0a34  TG3 Electronics, Inc.
+       0110  Deck 82-key backlit keyboard
+0a39  Gilat Satellite Networks, Ltd
+0a3a  PentaMedia Co., Ltd
+       0163  KN-W510U 1.0 Wireless LAN Adapter
+0a3c  NTT DoCoMo, Inc.
+0a3d  Varo Vision
+0a3f  Swissonic AG
+0a43  Boca Systems, Inc.
+0a46  Davicom Semiconductor, Inc.
+       0268  ST268
+       6688  ZT6688 Fast Ethernet Adapter
+       9601  DM9601 Fast Ethernet Adapter
+0a47  Hirose Electric
+0a48  I/O Interconnect
+       3233  Multimedia Card Reader
+       3239  Multimedia Card Reader
+       3258  Dane Elec zMate SD Reader
+       3259  Dane Elec zMate CF Reader
+       5000  MediaGear xD-SM
+       500a  Mass Storage Device
+       500f  Mass Storage Device
+       5010  Mass Storage Device
+       5011  Mass Storage Device
+       5014  Mass Storage Device
+       5020  Mass Storage Device
+       5021  Mass Storage Device
+       5022  Mass Storage Device
+       5023  Mass Storage Device
+       5024  Mass Storage Device
+       5025  Mass Storage Device
+0a4b  Fujitsu Media Devices, Ltd
+0a4c  Computex Co., Ltd
+0a4d  Evolution Electronics, Ltd
+       0064  MK-225 Driver
+       0065  MK-225C Driver
+       0066  MK-225C Driver
+       0067  MK-425C Driver
+       0078  MK-37 Driver
+       0079  MK-37C Driver
+       007a  MK-37C Driver
+       008c  TerraTec MIDI MASTER
+       008d  MK-249C Driver
+       008e  MK-249C MIDI Keyboard
+       008f  MK-449C Driver
+       0090  Keystation 49e Driver
+       0091  Keystation 61es Driver
+       00a0  MK-361 Driver
+       00a1  MK-361C Driver
+       00a2  MK-361C Driver
+       00a3  MK-461C MIDI Keyboard
+       00b5  Keystation Pro 88 Driver
+       00d2  E-Keys Driver
+       00f0  UC-16 Driver
+       00f1  X-Session Driver
+       00f5  UC-33e MIDI Controller
+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
+       1000  Scanner
+       2000  Q-Scan A6 Scanner
+       2001  Q-Scan A6 Scanner
+       2013  Media Drive A6 Scanner
+       2014  Media Drive A6 Scanner
+       2015  BizCardReader 600C
+       2016  BizCardReader 600C
+       202a  Scanshell-CSSN
+       3000  Q-Scan A8 Scanner
+       3002  Q-Scan A8 Reader
+       3015  BizCardReader 300G
+       5001  BizCardReader 900C
+0a5a  Electronics For Imaging, Inc.
+0a5b  EAsics NV
+0a5c  Broadcom Corp.
+       0201  iLine10(tm) Network Adapter
+       2000  Bluetooth Device
+       2001  Bluetooth Device
+       2009  Bluetooth Controller
+       200a  Bluetooth dongle
+       200f  Bluetooth Controller
+       201d  Bluetooth Device
+       201e  IBM Integrated Bluetooth IV
+       2020  Bluetooth dongle
+       2033  BCM2033 Bluetooth
+       2035  BCM2035 Bluetooth
+       2038  Blutonium Device
+       2039  Bluetooth Device
+       2045  Bluetooth Controller
+       2046  Bluetooth Device
+       2047  Bluetooth Device
+       205e  Bluetooth Device
+       2100  Bluetooth 2.0+eDR dongle
+       2101  A-Link BlueUsbA2 Bluetooth
+       2102  ANYCOM Blue USB-200/250
+       2110  Bluetooth Controller
+       2111  ANYCOM Blue USB-UHE 200/250
+       2120  2045 Bluetooth 2.0 USB-UHE Device with trace filter
+       2121  BCM2210 Bluetooth
+       2122  Bluetooth 2.0+EDR dongle
+       2123  Bluetooth dongle
+       2130  2045 Bluetooth 2.0 USB-UHE Device with trace filter
+       2131  2045 Bluetooth 2.0 Device with trace filter
+       2145  Bluetooth with Enhanced Data Rate II
+       2150  BCM2046 Bluetooth Device
+       4500  BCM2046B1 USB 2.0 Hub (part of BCM2046 Bluetooth)
+       4502  Keyboard (Boot Interface Subclass)
+       5800  BCM5880 Secure Applications Processor
+       5801  BCM5880 Secure Applications Processor with fingerprint swipe sensor
+       5802  BCM5880 Secure Applications Processor with fingerprint touch sensor
+       5803  BCM5880 Secure Applications Processor with secure keyboard
+       6300  Pirelli Remote NDIS Device
+0a5d  Diatrend Corp.
+0a5f  Zebra
+       0009  LP2844 Printer
+       930a  Printer
+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.
+       0400  Xanboo
+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
+       0103  Keyboard
+       0203  Mouse
+       0205  PS/2 Keyboard+Mouse Adapter
+       0701  USB Missile Launcher
+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
+       2011  Filter Driver For JAE XMC R/W
+0a90  Candy Technology Co., Ltd
+0a91  Globlink Technology, Inc.
+       3801  Targus PAKP003 Mouse
+0a92  EGO SYStems, Inc.
+       0011  SYS WaveTerminal U2A
+       0021  GIGAPort
+       0031  GIGAPortAG
+       0053  AudioTrak Optoplay
+       0061  Waveterminal U24
+       0071  MAYA EX7
+       0091  Maya 44
+       00b1  MAYA EX5
+       1000  MIDI Mate
+       1010  RoMI/O
+       1020  M4U
+       1030  M8U
+       1090  KeyControl49
+       10a0  KeyControl25
+0a93  C Technologies AB
+       0002  C-Pen 10
+       0005  MyPen Light
+       000d  Input Pen
+       0010  C-Pen 20
+0a94  Intersense
+0aa3  Lava Computer Mfg., Inc.
+0aa4  Develco Elektronik
+0aa5  First International Digital
+       0002  irock! 500 Series
+       0801  MP3 Player
+0aa6  Perception Digital, Ltd
+       0101  Hercules Jukebox
+       1501  Store 'n' Go HD Drive
+0aa7  Wincor Nixdorf International GmbH
+       0100  POS Keyboard, TA58P-USB
+       0101  POS Keyboard, TA85P-USB
+       0102  POS Keyboard, TA59-USB
+       0103  POS Keyboard, TA60-USB
+       0104  SNIkey Keyboard, SNIKey-KB-USB
+       0200  Operator Display, BA63-USB
+       0201  Operator Display, BA66-USB
+       0202  Operator Display & Scanner, XiCheck-BA63
+       0203  Operator Display & Scanner, XiCheck-BA66
+       0204  Graphics Operator Display, BA63GV
+       0300  POS Printer (printer class mode), TH210
+       0301  POS Printer (native mode), TH210
+       0302  POS Printer (printer class mode), TH220
+       0303  POS Printer (native mode), TH220
+       0304  POS Printer, TH230
+       0305  Lottery Printer, XiPrintPlus
+       0306  POS Printer (printer class mode), TH320
+       0307  POS Printer (native mode), TH320
+       0308  POS Printer (printer class mode), TH420
+       0309  POS Printer (native mode), TH420
+       030a  POS Printer, TH200B
+       0400  Lottery Scanner, Xiscan S
+       0401  Lottery Scanner, Xiscan 3
+       0402  Programmable Magnetic Swipe Card Reader, MSRP-USB
+       0500  IDE Adapter
+       0501  Hub Printer Interface
+       0502  Hub SNIKey Keyboard
+       4304  Banking Printer TP07
+0aa8  TriGem Computer, Inc.
+       0060  TG 11Mbps WLAN Mini Adapter
+       1001  DreamComboM4100
+       3002  InkJet Color Printer
+       8001  TG_iMON
+       8002  TG_KLOSS
+       a001  TG_X2
+       a002  TGVFD_KLOSS
+       ffda  iMON_VFD
+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  Tracker 110 Protocol Analyzer
+       8002  Explorer 200 Protocol Analyzer
+0abe  Stereo-Link
+       0101  SL1200 DAC
+0ac3  Sanyo Semiconductor Company Micro
+0ac4  Leco Corp.
+0ac5  I & C Corp.
+0ac6  Singing Electrons, Inc.
+0ac7  Panwest Corp.
+0ac8  Z-Star Microelectronics Corp.
+       0301  Web Camera
+       0302  ZC0302 Webcam
+       0321  Vimicro generic vc0321 Camera
+       0323  Luxya WC-1200 USB 2.0 Webcam
+       0328  A4Tech PK-130MG
+       0336  Elecom UCAM-DLQ30
+       301b  ZC0301 Webcam
+       303b  ZC0303 Webcam
+       305b  ZC0305 Webcam
+       307b  USB 1.1 Webcam
+       332d  Vega USB 2.0 Camera
+       3343  Sirius USB 2.0 Camera
+       c001  Sony embedded vimicro Camera
+       c002  Visual Communication Camera VGP-VCC1
+       c302  Vega USB 2.0 Camera
+       c303  Saturn USB 2.0 Camera
+0ac9  Micro Solutions, Inc.
+       0000  Backpack CD-ReWriter
+       0001  BACKPACK  2 Cable
+       0010  BACKPACK
+       0011  Backpack 40GB Hard Drive
+       0110  BACKPACK
+       0111  BackPack
+       1234  BACKPACK
+0aca  OPEN Networks Ltd
+       1060  OPEN NT1 Plus II
+0acc  Koga Electronics Co.
+0acd  ID Tech
+       0401  ID TECH Spectrum III Hybrid Smartcard Reader
+       0630  ID TECH Spectrum III Mag-Only Insert Reader (SPT3-355 Series) USB-CDC
+0ace  ZyDAS
+       1201  802.11b
+       1211  ZEW 2501 802.11bg Wireless Adapter
+       1215  WLA-54L 802.11bg
+       1221  ZD1221 802.11n
+       1602  ZyXEL Omni FaxModem 56K
+       1608  ZyXEL Omni FaxModem 56K UNO
+       1611  ZyXEL Omni FaxModem 56K Plus
+       2011  Virtual media for 802.11bg
+       20ff  Virtual media for 802.11bg
+       b215  802.11bg
+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.
+       2101  SmartMedia Card Reader
+       2102  CompactFlash Card Reader
+       2103  MMC/SD Card Reader
+       2104  MemoryStick Card Reader
+       2201  SmartMedia+CompactFlash Card Reader
+       2202  SmartMedia+MMC/SD Card Reader
+       2203  SmartMedia+MemoryStick Card Reader
+       2204  CompactFlash+MMC/SD Card Reader
+       2205  CompactFlash+MemoryStick Card Reader
+       2206  MMC/SD+MemoryStick Card Reader
+       2301  SmartMedia+CompactFlash+MMC/SD Card Reader
+       2302  SmartMedia+CompactFlash+MemoryStick Card Reader
+       2303  SmartMedia+MMC/SD+MemoryStick Card Reader
+       2304  CompactFlash+MMC/SD+MemoryStick Card Reader
+       3016  MMC/SD+Memory Stick Card Reader
+       3050  ND3050 8-in-1 Card Reader
+       3060  1.1 FS Card Reader
+       3101  MMC/SD Card Reader
+       3102  MemoryStick Card Reader
+       3201  MMC/SD+MemoryStick Card Reader
+       3216  HS Card Reader
+       3260  7-in-1 Card Reader
+       5010  ND5010 Card Reader
+0af0  Option
+       5000  UMTS Card
+       6000  GlobeTrotter 3G datacard
+       6300  GT 3G Quad UMTS/GPRS Card
+       6600  GlobeTrotter 3G+ datacard
+       6711  GlobeTrotter Express 7.2 v2
+       6971  Globetrotter HSDPA Modem
+       7501  Globetrotter HSUPA Modem (icon 411 aka "Vodafone K3760")
+0af6  Silver I Co., Ltd
+0af7  B2C2, Inc.
+       0101  Digital TV USB Receiver (DVB-S/T/C / ATSC)
+0af9  Hama, Inc.
+       0010  USB SightCam 100
+       0011  Micro Innovations IC50C Webcam
+0afc  Zaptronix Ltd
+0afd  Tateno Dennou, Inc.
+0afe  Cummins Engine Co.
+0aff  Jump Zone Network Products, Inc.
+0b00  INGENICO
+0b05  ASUSTek Computer, Inc.
+       1101  Mass Storage (UISDMC4S)
+       1706  WL-167G 802.11g Adapter [ralink]
+       1707  WL-167g Wireless Adapter
+       1708  Mass Storage Device
+       170b  Mass Storage Device
+       170c  WL-159g 802.11bg
+       170d  802.11b/g Wireless Network Adapter
+       1712  BT-183 Bluetooth 2.0+EDR adapter
+       1715  2045 Bluetooth 2.0 Device with trace filter
+       1716  Bluetooth Device
+       171b  A9T wireless 802.11bg
+       171c  802.11b/g Wireless Network Adapter
+       171f  My Cinema U3000 Mini [DiBcom DiB0700]
+       1723  WL-167G v2 802.11g Adapter [ralink]
+       1724  RT2573
+       1726  Laptop OLED Display
+       172a  ASUS 802.11n Network Adapter
+       172b  802.11n Network Adapter
+       1731  802.11n Network Adapter
+       1732  802.11n Network Adapter
+       1734  ASUS AF-200
+       173c  BT-183 Bluetooth 2.0
+       1742  802.11n Network Adapter
+       1751  BT-253 Bluetooth Adapter
+       1760  802.11n Network Adapter
+       1761  802.11n Network Adapter
+       1784  802.11n Network Adapter
+       6101  Cable Modem
+       620a  Remote NDIS Device
+       b700  Broadcom Bluetooth 2.1
+0b0b  Datamax-O'Neil
+       106e  Datamax E-4304
+0b0c  Todos Data System AB
+       0009  Todos Argos Mini II Smart Card Reader
+       003f  Todos C400 smartcard controller (Handelsbanken card reader)
+0b0d  ProjectLab
+       0000  CenturyCD
+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
+0b33  Contour Design, Inc.
+       0020  ShuttleXpress
+0b37  Hitachi ULSI Systems Co., Ltd
+0b39  Omnidirectional Control Technology, Inc.
+       0001  Composite USB PS2 Converter
+       0109  USB TO Ethernet
+       0421  Serial
+       0801  USB-Parallel Bridge
+       0901  OCT To Fast Ethernet Converter
+       0c03  LAN DOCK Serial Converter
+0b3a  IPaxess
+0b3b  Tekram Technology Co., Ltd
+       0163  TL-WN320G 1.0 WLAN Adapter
+       1601  Allnet 0193 802.11b Adapter
+       1602  ZyXEL ZyAIR B200 802.11b Adapter
+       1612  AIR.Mate 2@net 802.11b Adapter
+       1613  802.11b Wireless LAN Adapter
+       1620  Allnet USB 2.0 Wireless Network Adapter
+       1630  QuickWLAN 802.11bg
+       5630  802.11bg
+       6630  ZD1211
+0b3c  Olivetti Techcenter
+       a010  Simple_Way Printer/Scanner/Copier
+0b3e  Kikusui Electronics Corp.
+0b41  Hal Corp.
+       0011  Crossam2+USB IR commander
+0b43  Play.com, Inc.
+       0003  PS2 Controller Converter
+0b47  Sportbug.com, Inc.
+0b48  TechnoTrend AG
+       1003  Technotrend/Hauppauge USB-Nova
+       1004  TT-PCline
+       1005  Technotrend/Hauppauge USB-Nova
+       1006  Technotrend/Hauppauge DEC3000-s
+       1007  TT-micro plus Device
+       1008  Technotrend/Hauppauge DEC2000-t
+       1009  Technotrend/Hauppauge DEC2540-t
+       300d  TT-connect CT-3650 CI
+0b49  ASCII Corp.
+       064f  Trance Vibrator
+0b4b  Pine Corp. Ltd.
+       0100  D'music MP3 Player
+0b4d  Graphtec America, Inc.
+       110a  Graphtec CC200-20
+0b4e  Musical Electronics, Ltd
+       6500  MP3 Player
+       8028  MP3 Player
+       8920  MP3 Player
+0b50  Dumpries Co., Ltd
+0b51  Comfort Keyboard Co.
+       0020  Comfort Keyboard
+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.
+       000b  Bluetooth Device
+       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.
+       00ba  iRiver H10 20GB
+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.
+       07d0  Bluetooth Dongle
+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.
+       5100  XMC5100 Zippy Drive
+       5110  XMC5110 Flash Drive
+       5200  XMC5200 Zippy Drive
+       5201  XMC5200 Zippy Drive
+       5202  XMC5200 Zippy Drive
+       5280  XMC5280 Storage Drive
+       fff0  ISP5200 Debugger
+0b87  Plus-One I & T, Inc.
+0b88  Sigma Koki Co., Ltd, Technology Center
+0b89  Advanced Digital Broadcast, Ltd
+0b8c  SMART Technologies Inc.
+       00c3  Sympodium ID350
+0b95  ASIX Electronics Corp.
+       1720  10/100 Ethernet
+       1780  AX88178
+       7720  AX88772
+0b96  Sewon Telecom
+0b97  O2 Micro, Inc.
+       7732  Smart Card Reader
+       7761  Oz776 1.1 Hub
+       7762  Oz776 SmartCard Reader
+       7772  OZ776 CCID Smartcard Reader
+0b98  Playmates Toys, Inc.
+0b99  Audio International, Inc.
+0b9b  Dipl.-Ing. Stefan Kunde
+       4012  Reflex RC-controller Interface
+0b9d  Softprotec Co.
+0b9f  Chippo Technologies
+0baf  U.S. Robotics
+       00e5  USR6000
+       00eb  USR1120 802.11b Adapter
+       00ec  56K Faxmodem
+       00f1  SureConnect ADSL ATM Adapter
+       00f2  SureConnect ADSL Loader
+       00f5  SureConnect ADSL ATM Adapter
+       00f6  SureConnect ADSL Loader
+       00f7  SureConnect ADSL ATM Adapter
+       00f8  SureConnect ADSL Loader
+       00f9  SureConnect ADSL ATM Adapter
+       00fa  SureConnect ADSL Loader
+       00fb  SureConnect ADSL Ethernet/USB Router
+       0118  U5 802.11g Adapter
+       011b  Wireless MAXg Adapter
+       0121  USR5423 802.11bg
+       6112  FaxModem Model 5633
+0bb0  Concord Camera Corp.
+       0100  Sound Vision Stream
+       5007  3340z/Rollei DC3100
+0bb1  Infinilink Corp.
+0bb2  Ambit Microsystems Corp.
+       0302  WLAN
+       6098  USB Cable Modem
+0bb3  Ofuji Technology
+0bb4  High Tech Computer Corp.
+       00ce  mmO2 XDA GSM/GPRS Pocket PC
+       00cf  SPV C500 Smart Phone
+       0a01  PocketPC Sync
+       0a02  Himalaya GSM/GPRS Pocket PC
+       0a03  PocketPC Sync
+       0a04  PocketPC Sync
+       0a05  PocketPC Sync
+       0a06  PocketPC Sync
+       0a07  Magician PocketPC SmartPhone / O2 XDA
+       0a08  PocketPC Sync
+       0a09  PocketPC Sync
+       0a0a  PocketPC Sync
+       0a0b  PocketPC Sync
+       0a0c  PocketPC Sync
+       0a0d  PocketPC Sync
+       0a0e  PocketPC Sync
+       0a0f  PocketPC Sync
+       0a10  PocketPC Sync
+       0a11  PocketPC Sync
+       0a12  PocketPC Sync
+       0a13  PocketPC Sync
+       0a14  PocketPC Sync
+       0a15  PocketPC Sync
+       0a16  PocketPC Sync
+       0a17  PocketPC Sync
+       0a18  PocketPC Sync
+       0a19  PocketPC Sync
+       0a1a  PocketPC Sync
+       0a1b  PocketPC Sync
+       0a1c  PocketPC Sync
+       0a1d  PocketPC Sync
+       0a1e  PocketPC Sync
+       0a1f  PocketPC Sync
+       0a20  PocketPC Sync
+       0a21  PocketPC Sync
+       0a22  PocketPC Sync
+       0a23  PocketPC Sync
+       0a24  PocketPC Sync
+       0a25  PocketPC Sync
+       0a26  PocketPC Sync
+       0a27  PocketPC Sync
+       0a28  PocketPC Sync
+       0a29  PocketPC Sync
+       0a2a  PocketPC Sync
+       0a2b  PocketPC Sync
+       0a2c  PocketPC Sync
+       0a2d  PocketPC Sync
+       0a2e  PocketPC Sync
+       0a2f  PocketPC Sync
+       0a30  PocketPC Sync
+       0a31  PocketPC Sync
+       0a32  PocketPC Sync
+       0a33  PocketPC Sync
+       0a34  PocketPC Sync
+       0a35  PocketPC Sync
+       0a36  PocketPC Sync
+       0a37  PocketPC Sync
+       0a38  PocketPC Sync
+       0a39  PocketPC Sync
+       0a3a  PocketPC Sync
+       0a3b  PocketPC Sync
+       0a3c  PocketPC Sync
+       0a3d  PocketPC Sync
+       0a3e  PocketPC Sync
+       0a3f  PocketPC Sync
+       0a40  PocketPC Sync
+       0a41  PocketPC Sync
+       0a42  PocketPC Sync
+       0a43  PocketPC Sync
+       0a44  PocketPC Sync
+       0a45  PocketPC Sync
+       0a46  PocketPC Sync
+       0a47  PocketPC Sync
+       0a48  PocketPC Sync
+       0a49  PocketPC Sync
+       0a4a  PocketPC Sync
+       0a4b  PocketPC Sync
+       0a4c  PocketPC Sync
+       0a4d  PocketPC Sync
+       0a4e  PocketPC Sync
+       0a4f  PocketPC Sync
+       0a50  HTC SmartPhone Sync
+       0a51  SPV C400 / T-Mobile SDA GSM/GPRS Pocket PC
+       0a52  SmartPhone Sync
+       0a53  SmartPhone Sync
+       0a54  SmartPhone Sync
+       0a55  SmartPhone Sync
+       0a56  SmartPhone Sync
+       0a57  SmartPhone Sync
+       0a58  SmartPhone Sync
+       0a59  SmartPhone Sync
+       0a5a  SmartPhone Sync
+       0a5b  SmartPhone Sync
+       0a5c  SmartPhone Sync
+       0a5d  SmartPhone Sync
+       0a5e  SmartPhone Sync
+       0a5f  SmartPhone Sync
+       0a60  SmartPhone Sync
+       0a61  SmartPhone Sync
+       0a62  SmartPhone Sync
+       0a63  SmartPhone Sync
+       0a64  SmartPhone Sync
+       0a65  SmartPhone Sync
+       0a66  SmartPhone Sync
+       0a67  SmartPhone Sync
+       0a68  SmartPhone Sync
+       0a69  SmartPhone Sync
+       0a6a  SmartPhone Sync
+       0a6b  SmartPhone Sync
+       0a6c  SmartPhone Sync
+       0a6d  SmartPhone Sync
+       0a6e  SmartPhone Sync
+       0a6f  SmartPhone Sync
+       0a70  SmartPhone Sync
+       0a71  SmartPhone Sync
+       0a72  SmartPhone Sync
+       0a73  SmartPhone Sync
+       0a74  SmartPhone Sync
+       0a75  SmartPhone Sync
+       0a76  SmartPhone Sync
+       0a77  SmartPhone Sync
+       0a78  SmartPhone Sync
+       0a79  SmartPhone Sync
+       0a7a  SmartPhone Sync
+       0a7b  SmartPhone Sync
+       0a7c  SmartPhone Sync
+       0a7d  SmartPhone Sync
+       0a7e  SmartPhone Sync
+       0a7f  SmartPhone Sync
+       0a80  SmartPhone Sync
+       0a81  SmartPhone Sync
+       0a82  SmartPhone Sync
+       0a83  SmartPhone Sync
+       0a84  SmartPhone Sync
+       0a85  SmartPhone Sync
+       0a86  SmartPhone Sync
+       0a87  SmartPhone Sync
+       0a88  SmartPhone Sync
+       0a89  SmartPhone Sync
+       0a8a  SmartPhone Sync
+       0a8b  SmartPhone Sync
+       0a8c  SmartPhone Sync
+       0a8d  SmartPhone Sync
+       0a8e  SmartPhone Sync
+       0a8f  SmartPhone Sync
+       0a90  SmartPhone Sync
+       0a91  SmartPhone Sync
+       0a92  SmartPhone Sync
+       0a93  SmartPhone Sync
+       0a94  SmartPhone Sync
+       0a95  SmartPhone Sync
+       0a96  SmartPhone Sync
+       0a97  SmartPhone Sync
+       0a98  SmartPhone Sync
+       0a99  SmartPhone Sync
+       0a9a  SmartPhone Sync
+       0a9b  SmartPhone Sync
+       0a9c  SmartPhone Sync
+       0a9d  SmartPhone Sync
+       0a9e  SmartPhone Sync
+       0a9f  SmartPhone Sync
+       0b03  Ozone Mobile Broadband
+       0b04  Hermes / TyTN / T-Mobile MDA Vario II / O2 Xda Trion
+       0b06  Athena / Advantage x7500 / Dopod U1000 / T-Mobile AMEO
+       0b0c  Elf / Touch / P3450 / T-Mobile MDA Touch / O2 Xda Nova / Dopod S1
+       0b51  Qtek 8310 mobile phone [Tornado Noble]
+       0bce  Vario MDA
+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
+       2000  Storage Adapter V3 (TPP)
+0bc3  IPWireless, Inc.
+0bc4  Microcube Corp.
+0bc5  JCN Co., Ltd
+0bc6  ExWAY, Inc.
+0bc7  X10 Wireless Technology, Inc.
+       0001  ActiveHome (ACPI-compliant)
+       0002  Firecracker Interface (ACPI-compliant)
+       0003  VGA Video Sender (ACPI-compliant)
+       0004  X10 Receiver
+       0005  Wireless Transceiver (ACPI-compliant)
+       0006  Wireless Transceiver (ACPI-compliant)
+       0007  Wireless Transceiver (ACPI-compliant)
+       0008  Wireless Transceiver (ACPI-compliant)
+       0009  Wireless Transceiver (ACPI-compliant)
+       000a  Wireless Transceiver (ACPI-compliant)
+       000b  Transceiver (ACPI-compliant)
+       000c  Transceiver (ACPI-compliant)
+       000d  Transceiver (ACPI-compliant)
+       000e  Transceiver (ACPI-compliant)
+       000f  Transceiver (ACPI-compliant)
+0bc8  Telmax Communications
+0bc9  ECI Telecom, Ltd
+0bca  Startek Engineering, Inc.
+0bcb  Perfect Technic Enterprise Co., Ltd
+0bd7  Andrew Pargeter & Associates
+       a021  Amptek DP4 multichannel signal analyzer
+0bda  Realtek Semiconductor Corp.
+       0103  USB 2.0 Card Reader
+       0104  Mass Storage Device
+       0106  Mass Storage Device
+       0107  Mass Storage Device
+       0108  Mass Storage Device
+       0111  Card Reader
+       0113  Mass Storage Device
+       0115  Mass Storage Device (Multicard Reader)
+       0116  Mass Storage Device
+       0117  Mass Storage Device
+       0118  Mass Storage Device
+       0151  Mass Storage Device (Multicard Reader)
+       0152  Mass Storage Device
+       0153  Mass Storage Device
+       0156  Mass Storage Device
+       0157  Mass Storage Device
+       0158  USB 2.0 multicard reader
+       0161  Mass Storage Device
+       0168  Mass Storage Device
+       0169  Mass Storage Device
+       0171  Mass Storage Device
+       0176  Mass Storage Device
+       0178  Mass Storage Device
+       2831  2831U Device
+       8150  RTL8150 Fast Ethernet Adapter
+       8151  RTL8151 Adapteon Business Mobile Networks BV
+       8187  RTL8187 Wireless Adapter
+       8189  RTL8187B Wireless 802.11g 54Mbps Network Adapter
+       8197  RTL8187B Wireless Adapter
+       8198  RTL8187B Wireless Adapter
+0bdb  Ericsson Business Mobile Networks BV
+       1000  BV Bluetooth Device
+       1002  Bluetooth Device 1.2
+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
+0bed  Silicon Labs
+       1100  MEI (TM) Cashflow-SC Bill/Voucher Acceptor
+0bee  LTK Industries, Ltd
+0bef  Way2Call Communications
+0bf0  Pace Micro Technology PLC
+0bf1  Intracom S.A.
+       0001  netMod Driver Ver 2.4.17 (CAPI)
+       0002  netMod Driver Ver 2.4 (CAPI)
+       0003  netMod Driver Ver 2.4 (CAPI)
+0bf2  Konexx
+0bf6  Addonics Technologies, Inc.
+       0103  Storage Device
+       1234  Storage Device
+       a000  Cable 205 (TPP)
+       a001  Cable 205
+       a002  IDE Bridge
+0bf7  Sunny Giken, Inc.
+0bf8  Fujitsu Siemens Computers
+       1001  Fujitsu Pocket Loox 600 PDA
+0c04  MOTO Development Group, Inc.
+0c05  Appian Graphics
+0c06  Hasbro Games, Inc.
+0c07  Infinite Data Storage, Ltd
+0c08  Agate
+       0378  Q 16MB Storage Device
+0c09  Comjet Information System
+       a5a5  Litto Version USB2.0
+0c0a  Highpoint Technologies, Inc.
+0c0b  Dura Micro, Inc. (Acomdata)
+       27cb  6-in-1 Flash Reader and Writer
+       27d7  Multi Memory reader/writer MD-005
+       27da  Multi Memory reader/writer MD-005
+       27dc  Multi Memory reader/writer MD-005
+       27e7  3,5'' HDD case MD-231
+       27ee  3,5'' HDD case MD-231
+       2814  3,5'' HDD case MD-231
+       2815  3,5'' HDD case MD-231
+       281d  3,5'' HDD case MD-231
+       a109  CF/SM Reader and Writer
+       a10c  SD/MS Reader and Writer
+       b001  USB 2.0 Mass Storage IDE adapter
+       b004  MMC/SD Reader and Writer
+0c12  Zeroplus
+       0005  PSX Vibration Feedback Converter
+       8809  Red Octane Ignition Xbox DDR Pad
+0c15  Iris Graphics
+0c16  Gyration, Inc.
+       0080  eHome Infrared Receiver
+       0081  eHome Infrared Receiver
+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
+       0001  Bluetooth Adaptor
+       0002  Bluetooth Device2
+       0005  Bluetooth Device(BC04-External)
+       000b  Bluetooth Device(BC04-External)
+       000c  Bluetooth Adaptor
+       000e  Bluetooth Device(BC04-External)
+       000f  Bluetooth Driver (V2.0+EDR)
+       0010  Bluetooth Device(BC04-External)
+       0012  Bluetooth Device(BC04-External)
+       0018  Bluetooth Device(BC04-External)
+       0019  Bluetooth Device
+       0c24  Bluetooth Device(SAMPLE)
+       ffff  Bluetooth module with BlueCore in DFU mode
+0c25  Sampo Corp.
+       0310  Scream Cam
+0c26  Prolific Technology Inc.
+       0018  USB-Serial Controller [Icom Inc. OPC-478UC]
+0c27  RFIDeas, Inc
+       3bfa  pcProx Card Reader
+0c2e  Metro
+       0200  Metrologic Scanner
+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
+       0021  iDEN P2k0 Device
+       0022  iDEN P2k1 Device
+       03a2  iDEN Smartphone
+0c45  Microdia
+       1020  Mass Storage Reader
+       1028  Mass Storage Reader
+       1030  Mass Storage Reader
+       1031  Sonix Mass Storage Device
+       1032  Mass Storage Reader
+       1033  Sonix Mass Storage Device
+       1034  Mass Storage Reader
+       1035  Mass Storage Reader
+       1036  Mass Storage Reader
+       1037  Sonix Mass Storage Device
+       1050  CF Card Reader
+       1058  HDD Reader
+       1060  iFlash SM-Direct Card Reader
+       1061  Mass Storage Reader
+       1062  Mass Storage Reader
+       1063  Sonix Mass Storage Device
+       1064  Mass Storage Reader
+       1065  Mass Storage Reader
+       1066  Mass Storage Reader
+       1067  Mass Storage Reader
+       1158  A56AK
+       184c  VoIP Phone
+       6001  Genius VideoCAM NB
+       6005  Sweex Mini Webcam
+       6007  VideoCAM Eye
+       6009  VideoCAM ExpressII
+       600d  TwinkleCam USB camera
+       6011  PC Camera (SN9C102)
+       6019  PC Camera (SN9C102)
+       6024  VideoCAM ExpressII
+       6025  VideoCAM ExpressII
+       6028  Typhoon Easycam USB 330K (older)
+       6029  Triplex i-mini PC Camera
+       602a  Meade ETX-105EC Camera
+       602b  VideoCAM NB 300
+       602c  Clas Ohlson TWC-30XOP Webcam
+       602d  VideoCAM ExpressII
+       602e  VideoCAM Messenger
+       6030  VideoCAM ExpressII
+       603f  VideoCAM ExpressII
+       6040  CCD PC Camera (PC390A)
+       606a  CCD PC Camera (PC390A)
+       607a  CCD PC Camera (PC390A)
+       607b  Win2 PC Camera
+       607c  CCD PC Camera (PC390A)
+       607e  CCD PC Camera (PC390A)
+       6080  Audio (Microphone)
+       6082  VideoCAM Look
+       6083  VideoCAM Look
+       608c  VideoCAM Look
+       608e  VideoCAM Look
+       608f  VideoCAM Look
+       60a8  VideoCAM Look
+       60aa  VideoCAM Look
+       60ab  PC Camera
+       60af  VideoCAM Look
+       60b0  Genius VideoCam Look
+       60c0  PC Camera with Mic (SN9C105)
+       60c8  Win2 PC Camera
+       60cc  Composite Device
+       60ec  Composite Device
+       60ef  Win2 PC Camera
+       60fa  PC Camera with Mic (SN9C105)
+       60fb  Composite Device
+       60fc  PC Camera with Mic (SN9C105)
+       60fe  Audio (Microphone)
+       6108  Win2 PC Camera
+       6122  PC Camera (SN9C110)
+       6123  PC Camera (SN9C110)
+       6128  PC Camera (SN9C325 + OM6802)
+       612a  PC Camera (SN9C325)
+       612c  PC Camera (SN9C110)
+       612e  PC Camera (SN9C110)
+       612f  PC Camera (SN9C110)
+       6130  PC Camera (SN9C120)
+       6138  Win2 PC Camera
+       613a  PC Camera (SN9C120)
+       613b  Win2 PC Camera
+       613c  PC Camera (SN9C120)
+       613e  PC Camera (SN9C120)
+       6240  PC Camera (SN9C201 + MI1300)
+       6242  PC Camera (SN9C201 + MI1310)
+       6243  PC Camera (SN9C201 + S5K4AAFX)
+       6248  PC Camera (SN9C201 + OV9655)
+       624b  PC Camera (SN9C201 + CX1332)
+       624c  PC Camera (SN9C201 + MI1320)
+       624e  PC Camera (SN9C201 + SOI968)
+       624f  PC Camera (SN9C201 + OV9650)
+       6251  PC Camera (SN9C201 + OV9650)
+       6253  PC Camera (SN9C201 + OV9650)
+       6260  PC Camera (SN9C201 + OV7670ISP)
+       6262  PC Camera (SN9C201 + OM6802)
+       6270  PC Camera (SN9C201 + MI0360/MT9V011 or MI0360SOC/MT9V111) U-CAM PC Camera NE878, Whitcom WHC017, ...
+       627a  PC Camera (SN9C201 + S5K53BEB)
+       627b  PC Camera (SN9C201 + OV7660)
+       627c  PC Camera (SN9C201 + HV7131R)
+       627f  PC Camera (SN9C201 + OV965x + EEPROM)
+       6280  PC Camera with Microphone (SN9C202 + MI1300)
+       6282  PC Camera with Microphone (SN9C202 + MI1310)
+       6283  PC Camera with Microphone (SN9C202 + S5K4AAFX)
+       6288  PC Camera with Microphone (SN9C202 + OV9655)
+       628a  PC Camera with Microphone (SN9C202 + ICM107)
+       628b  PC Camera with Microphone (SN9C202 + CX1332)
+       628c  PC Camera with Microphone (SN9C202 + MI1320)
+       628e  PC Camera with Microphone (SN9C202 + SOI968)
+       628f  PC Camera with Microphone (SN9C202 + OV9650)
+       62a0  PC Camera with Microphone (SN9C202 + OV7670ISP)
+       62a2  PC Camera with Microphone (SN9C202 + OM6802)
+       62b0  PC Camera with Microphone (SN9C202 + MI0360/MT9V011 or MI0360SOC/MT9V111)
+       62b3  PC Camera with Microphone (SN9C202 + OV9655)
+       62ba  PC Camera with Microphone (SN9C202 + S5K53BEB)
+       62bb  PC Camera with Microphone (SN9C202 + OV7660)
+       62bc  PC Camera with Microphone (SN9C202 + HV7131R)
+       62be  PC Camera with Microphone (SN9C202 + OV7663)
+       62c0  Sonix USB 2.0 Camera
+       62e0  MSI Starcam Racer
+       6310  Sonix USB 2.0 Camera
+       63e0  Sonix Integrated Webcam
+       63f1  Integrated Webcam
+       63f8  Sonix Integrated Webcam
+       8000  DC31VC
+       8006  Dual Mode Camera (8006 VGA)
+       800a  Vivitar Vivicam3350B
+0c46  WaveRider Communications, Inc.
+0c4b  Reiner SCT Kartensysteme GmbH
+       0100  cyberJack e-com/pinpad
+       0300  cyberJack pinpad(a)
+0c52  Sealevel Systems, Inc.
+       2101  Serial Converter
+0c53  ViewPLUS, Inc.
+0c54  Glory, Ltd
+0c55  Spectrum Digital, Inc.
+       0510  Spectrum Digital XDS510 JTAG Debugger
+       0540  SPI540
+       5416  TMS320C5416 DSK
+       6416  TMS320C6416 DDB
+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
+0c60  Apogee Electronics Corp.
+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.
+       0001  Mass Storage Controller
+       0002  Mass Storage Controller
+       0003  USBdisk
+       0004  Mass Storage Controller
+       0005  Transcend Flash disk
+       0006  Transcend JetFlash
+       0007  Mass Storage Device
+       1605  SSS Headphone Set
+0c77  Sipix Group, Ltd
+       1001  SiPix Web2
+       1002  SiPix SC2100
+       1010  SiPix Snap
+       1011  SiPix Blink 2
+       1015  SiPix CAMeleon
+0c78  Detto Corp.
+0c79  NuConnex Technologies Pte., Ltd
+0c7a  Wing-Span Enterprise Co., Ltd
+0c86  NDA Technologies, Inc.
+0c88  Kyocera Wireless Corp.
+       0021  Handheld
+       17da  Qualcomm Kyocera CDMA Technologies MSM
+0c89  Honda Tsushin Kogyo Co., Ltd
+0c8a  Pathway Connectivity, Inc.
+0c8b  Wavefly Corp.
+0c8c  Coactive Networks
+0c8d  Tempo
+0c8e  Cesscom Co., Ltd
+       6000  Luxian Series
+0c8f  Applied Microsystems
+0c98  Berkshire Products, Inc.
+       1140  USB PC Watchdog
+0c99  Innochips Co., Ltd
+0c9a  Hanwool Robotics Corp.
+0c9b  Jobin Yvon, Inc.
+0c9d  SemTek
+       0170  3873 Manual Insert card reader
+0ca2  Zyfer
+0ca3  Sega Corp.
+0ca4  ST&T Instrument Corp.
+0ca5  BAE Systems Canada, Inc.
+0ca6  Castles Technology Co., Ltd
+       0010  EZUSB PC/SC Smart Card Reader
+       0050  EZ220PU Reader Controller
+       1077  Bludrive Family Smart Card Reader
+       107e  Reader Controller
+       2010  myPad110 PC/SC Smart Card Reader
+0ca7  Information Systems Laboratories
+0cad  Motorola CGISS
+       9001  PowerPad Pocket PC Device
+0cae  Ascom Business Systems, Ltd
+0caf  Buslink
+       2507  Hi-Speed USB-to-IDE Bridge Controller
+       2515  Flash Disk Embedded Hub
+       2516  Flash Disk Security Device
+       2517  Flash Disk Mass Storage Device
+       25c7  Hi-Speed USB-to-IDE Bridge Controller
+       3a00  Hard Drive
+       3a20  Mass Storage Device
+       3acd  Mass Storage Device
+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
+       0101  Pocket PC P6C
+       0201  Personal Digital Assistant
+       0301  Personal Digital Assistant P6M+
+       0401  Pocket PC
+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
+       0012  PHASE 26
+       0013  PHASE 26
+       0014  PHASE 26
+       0015  Flash Update for TerraTec PHASE 26
+       0021  Cameo Grabster 200
+       0023  Mystify Claw
+       0028  Aureon 5.1 MkII
+       0032  MIDI HUBBLE
+       0035  Miditech Play'n Roll
+       0036  Cinergy 250 Audio
+       0037  Cinergy 250 Audio
+       0038  Cinergy T² DVB-T Receiver
+       0039  Grabster AV 400
+       003b  Cinergy 400
+       003c  Grabster AV 250
+       0042  Cinergy Hybrid T XS
+       0043  Cinergy T XS
+       004e  Cinergy T XS
+       004f  Cinergy Analog XS
+       0055  Cinergy T XE (Version 1, AF9005)
+       005c  Cinergy T²
+       0069  Cinergy T XE (Version 2, AF9015)
+       0077  Aureon Dual USB
+       0097  Cinergy T RC MKII
+0cd4  Bang Olufsen
+       0101  BeolinkPC2
+0cd5  LabJack Corporation
+       0003  U3
+       0009  UE9
+0cd7  NewChip S.r.l.
+0cd8  JS Digitech, Inc.
+       2007  Smart Card Reader/JSTU-9700
+0cd9  Hitachi Shin Din Cable, Ltd
+0cde  Z-Com
+       0001  M4Y-750
+       0002  XI-725/726 Prism2.5 802.11b Adapter
+       0003  Sagem 802.11b Dongle
+       0004  Sagem 802.11b Dongle
+       0005  XI-735 Prism3 802.11b Adapter
+       0006  Medion 40900 802.11b Adapter
+       0008  Sitecom Wireless Network Adapter 100G+ WL-125
+       0009  (ZD1211)IEEE 802.11b+g Adapter
+       0011  ZD1211
+       0012  AR5523
+       0013  AR5523 driver (no firmware)
+       0014  NB 802.11g Wireless LAN Adapter(3887A)
+       0015  Zoom Wireless-G
+       0016  NB 802.11g Wireless LAN Adapter(3887A)
+       0018  NB 802.11a/b/g Wireless LAN Adapter(3887A)
+       001a  802.11bg
+       001c  802.11b/g Wireless Network Adapter
+       0020  Wi-Fi Wireless LAN Adapter
+       0022  802.11b/g/n Wireless Network Adapter
+       0023  UB81 802.11bgn
+       0025  802.11b/g/n USB Wireless Network Adapter
+       0026  UB82 802.11abgn
+0ce9  pico Technology
+       1001  PicoScope3204
+0cf1  e-Conn Electronic Co., Ltd
+0cf2  ENE Technology, Inc.
+       6220  SD Card Reader (SG361)
+       6225  SD card reader (UB6225)
+0cf3  Atheros Communications, Inc.
+       0001  AR5523
+       0002  AR5523 (no firmware)
+       0003  AR5523
+       0004  AR5523 (no firmware)
+       0005  AR5523
+       0006  AR5523 (no firmware)
+       1001  TG121N
+       3000  AR3011
+       9170  AR9170 802.11n
+0cf4  Fomtex Corp.
+0cf5  Cellink Co., Ltd
+0cf6  Compucable Corp.
+0cf7  ishoni Networks
+0cf8  Clarisys, Inc.
+       0750  Claritel-i750 - vp
+0cf9  Central System Research Co., Ltd
+0cfa  Inviso, Inc.
+0cfc  Minolta-QMS, Inc.
+0cff  SAFA MEDIA Co., Ltd.
+       0320  SR-380N
+0d06  telos EDV Systementwicklung GmbH
+0d08  UTStarcom
+       0602  DV007 [serial]
+       0603  DV007 [storage]
+0d0b  Contemporary Controls
+0d0c  Astron Electronics Co., Ltd
+0d0d  MKNet Corp.
+0d0e  Hybrid Networks, Inc.
+0d0f  Feng Shin Cable Co., Ltd
+0d10  Elastic Networks
+       0001  StormPort (WDM)
+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
+       0001  PhotoShuttle
+       0002  Photo Printer 730 series
+       0004  Photo Printer 63xPL/PS
+       0100  Photo Printer 63xPL/PS
+       0102  Photo Printer 64xPS
+       0103  Photo Printer 730 series
+       0104  Photo Printer 63xPL/PS
+       0105  Photo Printer 64xPS
+       0200  Photo Printer 64xDL
+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
+0d3a  Posiflex Technologies, Inc.
+0d3c  Sri Cable Technology, Ltd
+0d3d  Tangtop Technology Co., Ltd
+       0001  HID Keyboard
+0d3e  Fitcom, inc.
+0d3f  MTS Systems Corp.
+0d40  Ascor, Inc.
+0d41  Ta Yun Terminals Industrial Co., Ltd
+0d42  Full Der Co., Ltd
+0d46  Kobil Systems GmbH
+       2012  KAAN Standard Plus (Smartcard reader)
+       3003  mIDentity Light / KAAN SIM III
+       4000  mIDentity (mass storage)
+       4001  mIDentity Basic/Classic (composite device)
+       4081  mIDentity Basic/Classic (installationless)
+0d49  Maxtor
+       3000  Drive
+       3010  3000LE Drive
+       3100  Hi-Speed USB-IDE Bridge Controller
+       5000  5000XT Drive
+       5010  5000LE Drive
+       5020  Mobile Hard Disk Drive
+       7000  OneTouch
+       7010  OneTouch
+       7410  Mobile Hard Disk Drive (1TB)
+0d4a  NF Corp.
+0d4b  Grape Systems, Inc.
+0d4c  Tedas AG
+0d4d  Coherent, Inc.
+0d4e  Agere Systems Netherland BV
+       047a  WLAN Card
+       1000  Wireless Card Model 0801
+       1001  Wireless Card Model 0802
+0d4f  EADS Airbus France
+0d50  Cleware GmbH
+       0011  USB-Temp2 Thermometer
+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  Atmel at76c503a [F5D6050 802.11b Wireless Adapter v1000]
+0d5e  Myacom, Ltd
+       2346  BT Digital Access adapter
+0d5f  CSI, Inc.
+0d60  IVL Technologies, Ltd
+0d61  Meilu Electronics (Shenzhen) Co., Ltd
+0d62  Darfon Electronics Corp.
+       0003  Smartcard Reader
+       0004  Filter Driver
+       001c  Benq X120 Internet Keyboard Pro
+       0306  M530 Mouse
+       0800  Magic Wheel
+       2021  AM805 Keyboard
+       2026  TECOM Bluetooth Device
+       a100  Benq Mouse
+0d63  Fritz Gegauf AG
+0d64  DXG Technology Corp.
+       0105  Dual Mode Digital Camera 1.3M
+       0107  Horus MT-409 Camera
+       0108  Dual Mode Digital Camera
+       0202  Dual Mode Video Camera Device
+       0303  DXG-305V Camera
+       1001  SiPix Stylecam/UMAX AstraPix 320s
+       1002  Fashion Cam 01 Dual-Mode DSC (Video Camera)
+       1003  Fashion Cam Dual-Mode DSC (Controller)
+       1021  D-Link DSC 350F
+       1208  Dual Mode Still Camera Device
+       2208  Mass Storage
+       3105  Dual Mode Digital Camera Disk
+       3108  Digicam Mass Storage Device
+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
+       0120  Disk Pro 64MB
+       0124  GIGABYTE Disk
+       0240  I/O-Magic/Transcend 6-in-1 Card Reader
+       110e  NEC uPD720121/130 USB-ATA/ATAPI Bridge
+       1240  Apacer 6-in-1 Card Reader 2.0
+       1270  Wolverine SixPac 6000
+       1300  Flash Disk
+       1320  PS2031 Flash Disk
+       1400  Attache 256MB USB 2.0 Flash Drive
+       1420  PS2044 Pen Drive
+       1470  Vosonic X's-Drive II+ VP2160
+       1620  USB Disk Pro
+       1900  USB Thumb Drive
+0d7e  American Computer & Digital Components
+       2507  Hi-Speed USB-to-IDE Bridge Controller
+       2517  Hi-Speed Mass Storage Device
+       25c7  Hi-Speed USB-to-IDE Bridge Controller
+0d7f  Essential Reality LLC
+0d80  H.R. Silvine Electronics, Inc.
+0d81  TechnoVision
+0d83  Think Outside, Inc.
+0d89  Oz Software
+0d8a  King Jim Co., Ltd
+       0101  TEPRA PRO
+0d8b  Ascom Telecommunications, Ltd
+0d8c  C-Media Electronics, Inc.
+       0001  Audio Device
+       0002  Composite Device
+       0003  Sound Device
+       0006  Storm HP-USB500 5.1 Headset
+       000c  Audio Adapter
+       000d  Composite Device
+       000e  Audio Adapter (Planet UP-100, Genius G-Talk)
+       0102  CM106 Like Sound Device
+       0103  Turtle Beach Audio Advantage Micro
+       0201  CM6501
+       5000  Mass Storage Controller
+       5200  Mass Storage Controller(0D8C,5200)
+       b213  USB Phone CM109 (aka CT2000,VPT1000)
+0d8d  Promotion & Display Technology, Ltd
+       0234  V-234 Composite Device
+       0550  V-550 Composite Device
+       0551  V-551 Composite Device
+       0552  V-552 Composite Device
+       0651  V-651 Composite Device
+       0652  V-652 Composite Device
+       0653  V-653 Composite Device
+       0654  V-654 Composite Device
+       0655  V-655 Composite Device
+       0656  V-656 Composite Device
+       0657  V-657 Composite Device
+       0658  V-658 Composite Device
+       0659  V-659 Composite Device
+       0660  V-660 Composite Device
+       0661  V-661 Composite Device
+       0662  V-662 Composite Device
+       0850  V-850 Composite Device
+       0851  V-851 Composite Device
+       0852  V-852 Composite Device
+       0901  V-901 Composite Device
+       0902  V-902 Composite Device
+       0903  V-903 Composite Device
+       4754  Voyager DMP Composite Device
+       bb00  Bloomberg Composite Device
+       bb01  Bloomberg Composite Device
+       bb02  Bloomberg Composite Device
+       bb03  Bloomberg Composite Device
+       bb04  Bloomberg Composite Device
+       bb05  Bloomberg Composite Device
+       fffe  Global Tuner Composite Device
+       ffff  Voyager DMP Composite Device
+0d8e  Global Sun Technology, Inc.
+       0163  802.11g 54 Mbps Wireless Dongle
+       1621  802.11b Wireless Adapter
+       3762  802.11g Wireless Mini adapter
+       3763  802.11g Wireless dongle
+       7100  802.11b Adapter
+       7110  WL-210
+       7801  AR5523
+       7802  AR5523 (no firmware)
+       7811  AR5523
+       7812  AR5523 (no firmware)
+       7a01  PRISM25 802.11b Adapter
+0d8f  Pitney Bowes
+0d90  Sure-Fire Electrical Corp.
+0d96  Skanhex Technology, Inc.
+       0000  Jenoptik JD350 video
+       3300  SX330z Camera
+       4100  SX410z Camera
+       4102  MD 9700 Camera
+       4104  Jenoptik JD-4100z3s
+       410a  Medion 9801/Novatech SX-410z
+       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.
+       0300  Avaya Wireless Card
+0d99  Trazer Technologies, Inc.
+0d9a  RTX Telecom AS
+       0001  Bluetooth Device
+0d9b  Tat Shing Electrical Co.
+0d9c  Chee Chen Hi-Technology Co., Ltd
+0d9d  Sanwa Supply, Inc.
+0d9e  Avaya
+       0300  Wireless Card
+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
+       0001  Interface
+0da7  IOGear, Inc.
+0da8  softDSP Co., Ltd
+       0001  SDS 200A Oscilloscope
+0dab  Cubig Group
+       0100  DVR/CVR-M140 MP3 Player
+0dad  Westover Scientific
+0db0  Micro Star International
+       1020  PC2PC WLAN Card
+       1967  Bluetooth Dongle
+       4011  Medion Flash XL V2.0 Card Reader
+       4600  802.11b/g Turbo Wireless Adapter
+       5501  Mass Storage Device
+       5502  Mass Storage Device
+       5513  MP3 Player
+       5515  MP3 Player
+       5516  MP3 Player
+       5581  Mega Sky 5580 DVB-T Tuner
+       6823  UB11B/MS-6823 802.11b Wi-Fi adapter
+       6826  IEEE 802.11g Wireless Network Adapter
+       6855  Bluetooth Device
+       6861  MSI-6861 802.11g WiFi adapter
+       6865  RT2570
+       6869  RT2570
+       6874  RT2573
+       6877  RT2573
+       6881  Bluetooth Class I EDR Device
+       688a  Bluetooth Class I EDR Device
+       6970  Bluetooth adapter
+       697a  Bluetooth Dongle
+       6982  Medion Flash XL Card Reader
+       a861  RT2573
+       a874  RT2573
+       a970  Bluetooth dongle
+       a97a  Bluetooth EDR Device
+       b970  Bluetooth EDR Device
+       b97a  Bluetooth EDR Device
+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.
+0db7  ELCON Systemtechnik
+       0002  Goldpfeil P-LAN
+0dbc  A&D Medical
+       0003  AND Serial Cable [AND Smart Cable]
+0dbe  Jiuh Shiuh Precision Industry Co., Ltd
+0dbf  Quik Tech Solutions
+       0002  SmartDongle Security Key
+       0200  HDD Storage Solution
+       021b  USB-2.0 IDE Adapter
+       0300  Storage Adapter
+       0333  Storage Adapter
+       0707  ZIV Drive
+0dc0  Great Notions
+0dc1  Tamagawa Seiki Co., Ltd
+0dc3  Athena Smartcard Solutions, Inc.
+       0801  ASEDrive III
+       0802  ASEDrive IIIe
+       1104  ASEDrive IIIe KB
+       1701  ASEKey
+       1702  ASEKey
+0dc4  Macpower Peripherals, Ltd
+       0040  Mass Storage Device
+       0041  Mass Storage Device
+       0042  Mass Storage Device
+       0101  Hi-Speed Mass Storage Device
+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
+0dd0  Access Solutions
+       1002  Triple Talk Speech Synthesizer
+0dd1  Contek Electronics Co., Ltd
+0dd2  Power Quotient International Co., Ltd
+       0003  Mass Storage (P)
+0dd3  MediaQ
+0dd4  Custom Engineering SPA
+0dd5  California Micro Devices
+0dd7  Kocom Co., Ltd
+0dd8  Netac Technology Co., Ltd
+       1060  USB-CF-Card
+       e007  OnlyDisk U222 Pendrive
+       f607  OnlyDisk U208 1G flash drive [U-SAFE]
+0dd9  HighSpeed Surfing
+0dda  Integrated Circuit Solution, Inc.
+       0001  Multi-Card Reader 6in1
+       0002  Multi-Card Reader 7in1
+       0003  Flash Disk
+       0005  Internal Multi-Card Reader 6in1
+       0008  SD single card reader
+       0009  MS single card reader
+       000a  MS+SD Dual Card Reader
+       000b  SM single card reader
+       0101  All-In-One Card Reader
+       0102  All-In-One Card Reader
+       0301  MP3 Player
+       0302  Multi-Card MP3 Player
+       1001  Multi-Flash Disk
+       2001  Multi-Card Reader
+       2002  Q018 default PID
+       2003  Multi-Card Reader
+       2005  Datalux DLX-1611 16in1 Card Reader
+       2006  All-In-One Card Reader
+       2007  USB to ATAPI bridge
+       2008  All-In-One Card Reader
+       2013  SD/MS Combo Card Reader
+       2014  SD/MS Single Card Reader
+       2023  card reader SD/MS DEMO board with ICSI brand name (MaskROM version)
+       2024  card reader SD/MS DEMO board with Generic brand name (MaskROM version)
+       2026  USB2.0 Card Reader
+       2027  USB 2.0 Card Reader
+       2315  UFD MP3 player (model 2)
+       2318  UFD MP3 player (model 1)
+       2321  UFD MP3 player
+0ddb  Tamarack, Inc.
+0ddd  Datelink Technology Co., Ltd
+0dde  Ubicom, Inc.
+0de0  BD Consumer Healthcare
+0dea  UTECH Electronic (D.G.) Co., Ltd.
+0ded  Novasonics
+0dee  Lifetime Memory Products
+       4010  Storage Adapter
+0def  Full Rise Electronic Co., Ltd
+0df6  Sitecom Europe B.V.
+       0001  C-Media VOIP Device
+       0004  Bluetooth 2.0 Adapter 100m
+       0007  Bluetooth 2.0 Adapter 10m
+       000b  Bluetooth 2.0 Adapter DFU
+       000d  WL-168 Wireless Network Adapter 54g
+       0017  WL-182 Wireless-N Network USB Card
+       0019  Bluetooth 2.0 adapter 10m CN-512v2 001
+       001a  Bluetooth 2.0 adapter 100m CN-521v2 001 
+       002b  WL-188 Wireless Network 300N USB Adapter
+       002c  WL-301 Wireless Network 300N USB Adapter
+       002d  WL-302 Wireless Network 300N USB dongle 
+       0039  WL-315 Wireless-N USB Adapter
+       003b  WL-321 Wireless USB Gaming Adapter 300N
+       003c  WL-323 Wireless-N USB Adapter
+       003d  WL-324 Wireless USB Adapter 300N
+       003e  WL-343 Wireless USB Adapter 150N X1
+       003f  WL-608 Wireless USB Adapter 54g
+       0040  WL-344 Wireless USB Adapter 300N X2
+       0041  WL-329 Wireless Dualband USB adapter 300N
+       0042  WL-345 Wireless USB adapter 300N X3
+       0047  WL-352v1 Wireless USB Adapter 300N 002
+       0048  WL-349v1 Wireless USB Adapter 150N 002
+       004a  WL-358v1 Wireless Micro USB Adapter 300N X3 002
+       004b  WL-360 Wireless Micro USB Adapter X3
+       061c  LN-028 Network USB 2.0 Adapter
+       21f4  44 St Bluetooth Device
+       2200  Sitecom bluetooth2.0 class 2 dongle CN-512
+       2208  Sitecom bluetooth2.0 class 2 dongle CN-520
+       2209  Sitecom bluetooth2.0 class 1 dongle CN-521
+       9071  WL-113 rev 1 Wireless Network USB Adapter
+       9075  WL-117 Hi-Speed USB Adapter
+       90ac  WL-172 Wireless Network USB Adapter 54g Turbo
+       9712  WL-113 rev 2 Wireless Network USB Adapter
+0df7  Mobile Action Technology, Inc.
+       0620  MA-620 Infrared Adapter
+       0700  MA-700 Bluetooth Adapter
+       0720  MA-720 Bluetooth Adapter
+       0722  Bluetooth Dongle
+       0800  Data Cable
+       0820  Data Cable
+       0900  MA i-gotU Travel Logger GPS
+       1800  Generic Card Reader
+       1802  Card Reader
+0dfa  Toyo Communication Equipment Co., Ltd
+0dfc  GeneralTouch Technology Co., Ltd
+       0001  Touchscreen
+0e03  Nippon Systemware Co., Ltd
+0e08  Winbest Technology Co., Ltd
+0e0b  Amigo Technology Inc.
+       9031  802.11n Wireless USB Card
+       9041  802.11n Wireless USB Card
+0e0c  Gesytec
+       0101  LonUSB LonTalk Network Adapter
+0e0f  VMware, Inc.
+       0002  Virtual USB Hub
+       0003  Virtual Mouse
+       0004  Virtual CCID
+       0005  Virtual Mass Storage
+       0006  Virtual Keyboard
+       f80a  Smoker FX2
+0e16  JMTek, LLC
+0e17  Walex Electronic, Ltd
+0e1b  Crewave
+0e20  Pegasus Technologies Ltd.
+       0101  NoteTaker
+0e21  Cowon Systems, Inc.
+       0300  iAudio CW200
+       0400  MP3 Player
+       0500  iAudio M3
+       0510  iAudio X5, subpack USB port
+       0513  iAudio X5, side USB port
+       0520  iAudio M5, side USB port
+       0700  iAudio U3
+       0751  iAudio 7
+       0800  Cowon D2 (UMS mode)
+       0801  Cowon D2 (MTP mode)
+0e22  Symbian Ltd.
+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
+       0008  Handyscope HS3
+       0009  Handyscope HS3 (br)
+       000a  Handyscope HS4
+       000b  Handyscope HS4 (br)
+       000e  Handyscope HS4-DIFF
+       000f  Handyscope HS4-DIFF (br)
+       0010  Handyscope HS2
+       0011  TiePieSCOPE HS805 (br)
+       0012  TiePieSCOPE HS805
+       0018  Handyprobe HP2
+       0042  TiePieSCOPE HS801
+       00fd  USB To Parallel adapter
+       00fe  USB To Parallel adapter
+0e38  Stratitec, Inc.
+0e39  Smart Modular Technologies, Inc.
+       0137  Bluetooth Device
+0e3a  Neostar Technology Co., Ltd
+       1100  CW-1100 Wireless Network Adapter
+0e3b  Mansella, Ltd
+0e41  Line6, Inc.
+       4147  TonePort GX
+       4250  BassPODxt
+       4252  BassPODxt Pro
+       4642  BassPODxt Live
+       4650  PODxt Live
+       4750  GuitarPort
+       5044  PODxt
+       5050  PODxt Pro
+       534d  SeaMonkey
+0e44  Sun-Riseful Technology Co., 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
+       110b  MS3303H USB-to-Serial Bridge
+0e56  Kingston Technology Company, Inc.
+       6021  K-PEX 100
+0e5a  Active Co., Ltd
+0e5b  Union Power Information Industrial Co., Ltd
+0e5c  Bitland Information Technology Co., Ltd
+       6118  LCD Device
+       6119  remote receive and control device
+       6441  C-Media Sound Device
+0e5d  Neltron Industrial Co., Ltd
+0e5e  Conwise Technology Co., Ltd.
+       6622  CW6622
+0e66  Hawking Technologies
+       0001  HWUN1 Hi-Gain Wireless-300N USB Adapter w/ Upgradable Antenna
+       0003  HWDN1 Hi-Gain USB Wireless-300N Dish Adapter
+       0009  HWUN2 Hi-Gain Wireless-150N USB Adapter w/ Upgradable Antenna
+       000b  HWDN2 Hi-Gain USB Wireless-150N Dish Adapter
+       0013  Hi-Gain Wireless-N USB [rt2870]
+       400b  UF100 10/100 Network Adapter
+       400c  UF100 Ethernet [pegasus2]
+0e67  Fossil, Inc.
+       0002  Wrist PDA
+0e6a  Megawin Technology Co., Ltd
+       0101  MA100 [USB-UART Bridge IC]
+0e70  Tokyo Electronic Industry Co., Ltd
+0e72  Hsi-Chin Electronics Co., Ltd
+0e75  TVS Electronics, Ltd
+0e79  Archos, Inc.
+       1106  Pocket Media Assistant - PMA400
+       1306  504 Portable Multimedia Player
+0e7b  On-Tech Industry Co., Ltd
+0e7e  Gmate, Inc.
+       0001  Yopy 3000 PDA
+       1001  YP3X00 PDA
+0e82  Ching Tai Electric Wire & Cable Co., Ltd
+0e83  Shin An Wire & Cable Co.
+0e8c  Well Force Electronic Co., Ltd
+0e8d  MediaTek Inc.
+       0004  MT6227 phone
+0e8f  GreenAsia Inc.
+       0003  MaxFire Blae2
+       0012  USB Wireless 2.4GHz Gamepad
+       0016  4 port HUB
+0e90  WiebeTech, LLC
+       0100  Storage Adapter V1
+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
+       c001  TRUST 380 USB2 SPACEC@M
+0e97  Fingerworks, Inc.
+0e98  Advanced Analogic Technologies, Inc.
+0e99  Parallel Dice Co., Ltd
+0e9a  TA HSING Industries, Ltd
+0e9b  ADTEC Corp.
+0e9c  Streamzap, Inc.
+       0000  Streamzap Remote Control
+0e9f  Tamura Corp.
+0ea0  Ours Technology, Inc.
+       2126  7-in-1 Card Reader
+       2153  SD Card Reader Key
+       2168  Transcend JetFlash 2.0 / Astone USB Drive
+       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
+0eb0  NovaTech
+       9020  NovaTech NV-902W
+       9021  RT2573
+0eb1  WIS Technologies, Inc.
+       6666  WinFast WalkieTV TV Loader
+       6668  WinFast WalkieTV TV Loader
+       7007  WinFast WalkieTV WDM Capture
+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.
+       1400  CD\RW 40X
+       a100  LDW-411SX DVD/CD Rewritable Drive
+0ece  TaiSol Electronics Co., Ltd
+0ecf  Phogenix Imaging, LLC
+0ed1  WinMaxGroup
+       6660  Flash Disk 64M-C
+       6680  Flash Disk 64M-B
+       7634  MP3 Player
+0ed2  Kyoto Micro Computer Co., Ltd
+0ed3  Wing-Tech Enterprise Co., Ltd
+0ed5  Fiberbyte
+       e000  USB-inSync Device
+       f000  Fiberbyte USB-inSync Device
+       f201  Fiberbyte USB-inSync DAQ-2500X
+0eda  Noriake Itron Corp.
+0edf  e-MDT Co., Ltd
+       2060  FID irock! 100 Series
+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.
+       8810  Mass Storage Drive
+0eef  D-WAV Scientific Co., Ltd
+       0001  eGalax TouchScreen
+       0002  Touchscreen Controller(Professional)
+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
+       2366  Flash Disk
+0ef6  Yield Microelectronics Corp.
+0ef7  SM Tech Co., Ltd (Tulip)
+0efd  Oasis Semiconductor
+0efe  Wem Technology, Inc.
+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
+0f18  Finger Lakes Instrumentation
+       0002  CCD
+       0006  Focuser
+       0007  Filter Wheel
+       000a  ProLine CCD
+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
+       001c  PS3 Guitar Controller Dongle
+       0110  Dual Analog Rumble Pad
+       0111  Colour Rumble Pad
+0f31  Chrysalis Development
+0f32  YFC-BonEagle Electric Co., Ltd
+0f37  Kokuyo Co., Ltd
+0f38  Nien-Yi Industrial Corp.
+0f3d  Airprime, Incorporated
+       0112  CDMA 1xEVDO PC Card, PC 5220
+0f41  RDC Semiconductor Co., Ltd
+0f42  Nital Consulting Services, Inc.
+0f44  Polhemus
+       ef11  Patriot (firmware not loaded)
+       ef12  Patriot
+       ff11  Liberty (firmware not loaded)
+       ff12  Liberty
+0f4b  St. John Technology Co., Ltd
+0f4c  WorldWide Cable Opto Corp.
+0f4d  Microtune, Inc.
+       1000  Bluetooth Dongle
+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
+       9455  Compact Drive
+0f5f  Key Technology Corp.
+0f60  NTK, Ltd
+0f61  Varian, Inc.
+0f62  Acrox Technologies Co., Ltd
+       1001  Targus Mini Trackball Optical Mouse
+0f63  LeapFrog Enterprises
+       0500  Fly Fusion
+       0600  Leap Port Turbo
+       0700  POGO
+       0800  Didj
+       0900  TAGSchool
+       0a00  Leapster 2
+       0b00  Crammer
+       0c00  Tag Jr
+       0d00  My Pal Scout
+       0e00  Tag32
+       0f00  Tag64
+       1000  Kiwi16
+       1100  Leapster L2x
+       1111  Fly Fusion
+       1300  Didj UK/France (Leapster Advance)
+0f68  Kobe Steel, Ltd
+0f69  Dionex Corp.
+0f6a  Vibren Technologies, Inc.
+0f6e  INTELLIGENT SYSTEMS
+       0100  GameBoy Color Emulator
+       0201  GameBoy Advance Flash Gang Writer
+       0202  GameBoy Advance Capture
+       0300  Gamecube DOL Viewer
+       0400  NDS Emulator
+       0401  NDS UIC
+       0402  NDS Writer
+       0403  NDS Capture
+       0404  NDS Emulator (Lite)
+0f73  DFI
+0f7c  DQ Technology, Inc.
+0f7d  NetBotz, Inc.
+0f7e  Fluke Corp.
+0f88  VTech Holdings, Ltd
+       3012  RT2570
+       3014  ZD1211B
+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.
+0f9c  Hyun Won, Inc.
+       0301  M-Any Premium DAH-610 MP3/WMA Player
+       0332  mobiBLU DAH-1200 MP3/Ogg Player
+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.
+       0002  eHome Infrared Receiver
+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
+       00af  V640i Phone [PTP Camera]
+       00d4  C902 [MTP]
+       00d9  C702 Phone
+       1010  WMC Modem
+       10af  V640i Phone [PictBridge]
+       10d4  C902 Phone [PictBridge]
+       d008  V800-Vodafone 802SE WMC Modem
+       d016  K750i Phone
+       d017  K608i Phone
+       d019  VDC EGPRS Modem
+       d025  520 WMC Data Modem
+       d038  W850i Phone
+       d041  K510i Phone
+       d042  W810i Phone
+       d046  K610i Phone
+       d0af  V640i Phone
+       d0d4  C902 Phone [Modem]
+       e042  W810i Phone
+       e0af  V640i Phone [Mass Storage]
+       e0d4  C902 Phone [Mass Storage] 
+0fcf  Dynastream Innovations, Inc.
+0fd0  Tulip Computers B.V.
+0fd1  Giant Electronics Ltd.
+0fd4  Tenovis GmbH & Co., KG
+0fd5  Direct Access Technology, Inc.
+0fdc  Micro Plus
+0fe4  IN-Tech Electronics, Ltd
+0fe5  Greenconn (U.S.A.), Inc.
+0fe9  DVICO
+       db00  FusionHDTV DVB-T (MT352+LgZ201) (uninitialized)
+       db01  FusionHDTV DVB-T (MT352+LgZ201) (initialized)
+       db10  FusionHDTV DVB-T (MT352+Thomson7579) (uninitialized)
+       db11  FusionHDTV DVB-T (MT352+Thomson7579) (initialized)
+       db78  FusionHDTV DVB-T Dual Digital 4 (ZL10353+xc2028/xc3028) (initialized)
+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.
+       0100  Sigma SD10
+1004  LG Electronics, Inc.
+       1fae  U8120 3G Cellphone
+       6000  VX4400/VX6000 Cellphone
+       6005  T5100
+       6800  CDMA Modem
+       7000  LG LDP-7024D(LD)USB
+1005  Apacer Technology, Inc.
+       1001  MP3 Player
+       1004  MP3 Player
+       1006  MP3 Player
+       b113  Handy Steno 2.0/HT203
+       b223  CD-RW + 6in1 Card Reader Digital Storage / Converter
+1006  iRiver, Ltd.
+       3001  iHP-100
+       3002  iHP-120/140 MP3 Player
+       3003  H320/H340
+       3004  H340 (mtp)
+1009  Emuzed, Inc.
+       000e  eHome Infrared Receiver
+       0013  Angel MPEG Device
+       0015  Lumanate Wave PAL SECAM DVBT Device
+       0016  Lumanate Wave NTSC/ATSC Combo Device
+100a  AV Chaseway, Ltd
+       2402  MP3 Player
+       2404  MP3 Player
+       2405  MP3 Player
+       2406  MP3 Player
+       a0c0  MP3 Player
+100b  Chou Chin Industrial Co., Ltd
+100d  Netopia, Inc.
+       3342  Cayman 3352 DSL Modem
+       3382  3380 Series Network Interface
+       6072  DSL Modem
+       9031  Motorola 802.11n Dualband USB Wireless Adapter
+       9032  Motorola 802.11n 5G USB Wireless Adapter
+       cb01  Cayman 3341 Ethernet DSL Router
+1010  Fukuda Denshi Co., Ltd
+1011  Mobile Media Tech.
+       0001  AccFast Mp3
+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
+1019  Elitegroup Computer Systems (ECS)
+       0c55  Flash Reader, Desknote UCR-61S2B
+1020  Labtec
+       000a  Wireless Optical Mouse
+       0106  Wireless Optical Mouse
+1022  Shinko Shoji Co., Ltd
+1025  Hyper-Paltek
+       005e  USB DVB-T device
+       005f  USB DVB-T device
+       0300  MP3 Player
+       0350  MP3 Player
+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.
+       6151  Q-Cam Sangha CIF
+       6251  Q-Cam VGA
+102d  Winic Corp.
+1031  Comax Technology, Inc.
+1032  C-One Technology Corp.
+1033  Nucam Corp.
+       0068  3,5'' HDD case MD-231
+1038  Ideazon, Inc.
+       0100  Zboard
+1039  devolo AG
+       2140  dsl+ 1100 duo
+103d  Stanton
+       0100  ScratchAmp
+       0101  ScratchAmp
+1043  iCreate Technologies Corp.
+       160f  Wireless Network Adapter
+       4901  AV-836 Video Capture Device
+       8006  Flash Disk 32-256 MB
+1044  Chu Yuen Enterprise Co., Ltd
+       7001  U7000 TV tuner device
+       8001  GN-54G
+       8002  GN-BR402W
+       8003  GN-WLBM101
+       8004  GN-WLBZ101 802.11b Adapter
+       8005  GN-WLBZ201 802.11b Adapter
+       8006  GN-WBZB-M 802.11b Adapter
+       8007  GN-WBKG
+       8008  GN-WB01GS
+       800a  GN-WI05GS
+       800b  GN-WB30N 802.11n WLAN Card
+       800c  GN-WB31N 802.11n USB WLAN Card
+       800d  GN-WB32L 802.11n USB WLAN Card
+1046  Winbond Electronics Corp. [hex]
+       6694  Generic W6694 USB
+       8901  Bluetooth Device
+       9967  W9967CF/W9968CF Webcam IC
+1048  Targus Group International
+104c  AMCO TEC International, Inc.
+104f  WB Electronics
+       0001  Infinity Phoenix
+       0002  Smartmouse
+       0003  FunProgrammer
+       0004  Infinity Unlimited
+       0006  Infinity Smart
+       0007  Infinity Smart module
+       0008  Infinity CryptoKey
+       0009  RE-BL PlayStation 3 IR-to-Bluetooth converter
+1050  Yubico.com
+       0010  Yubikey
+1053  Immanuel Electronics Co., Ltd
+1054  BMS International Beheer N.V.
+       5004  DSL 7420 Loader
+       5005  DSL 7420 LAN Modem
+1055  Complex Micro Interconnection Co., Ltd
+1056  Hsin Chen Ent Co., Ltd
+1057  ON Semiconductor
+1058  Western Digital Technologies, Inc.
+       0200  Firewire USB Combo
+       0400  External HDD
+       0500  hub
+       0702  Passport External HDD
+       0900  MyBook Essential External HDD
+       0901  MyBook External HDD
+       1001  External Hard Disk [Elements]
+1059  Giesecke & Devrient GmbH
+       000b  StarSign Bio Token 3.0
+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
+       4100  SB4100 USB Cable Modem
+1065  CCYU Technology
+       0020  USB-DVR2 Dev Board
+       2136  EasyDisk ED1064
+106a  Loyal Legend, Ltd
+106c  Curitel Communications, Inc.
+       1101  CDMA 2000 1xRTT USB modem (HX-550C)
+       1102  Packet Service
+       1103  Packet Service Diagnostic Serial Port (WDM)
+       1104  Packet Service Diagnostic Serial Port (WDM)
+       1105  Composite Device
+       1106  Packet Service Diagnostic Serial Port (WDM)
+       1301  Composite Device
+       1302  Packet Service Diagnostic Serial Port (WDM)
+       1303  Packet Service
+       1304  Packet Service
+       1401  Composite Device
+       1402  Packet Service
+       1403  Packet Service Diagnostic Serial Port (WDM)
+       1501  Packet Service
+       1502  Packet Service Diagnostic Serial Port (WDM)
+       1503  Packet Service
+       1601  Packet Service
+       1602  Packet Service Diagnostic Serial Port (WDM)
+       1603  Packet Service
+       2101  AudioVox 8900 Cell Phone
+       2102  Packet Service
+       2103  Packet Service Diagnostic Serial Port (WDM)
+       2301  Packet Service
+       2302  Packet Service Diagnostic Serial Port (WDM)
+       2303  Packet Service
+       2401  Packet Service Diagnostic Serial Port (WDM)
+       2402  Packet Service
+       2403  Packet Service Diagnostic Serial Port (WDM)
+       2501  Packet Service
+       2502  Packet Service Diagnostic Serial Port (WDM)
+       2503  Packet Service
+       2601  Packet Service
+       2602  Packet Service Diagnostic Serial Port (WDM)
+       2603  Packet Service
+       3701  Broadband Wireless modem
+       3702  Pantech PX-500
+       3714  PANTECH USB MODEM [UM175]
+       3eb4  Packet Service Diagnostic Serial Port (WDM)
+       4101  Packet Service Diagnostic Serial Port (WDM)
+       4102  Packet Service
+       4301  Composite Device
+       4302  Packet Service Diagnostic Serial Port (WDM)
+       4401  Composite Device
+       4402  Packet Service
+       4501  Packet Service
+       4502  Packet Service Diagnostic Serial Port (WDM)
+       4601  Composite Device
+       4602  Packet Service Diagnostic Serial Port (WDM)
+       5101  Packet Service
+       5102  Packet Service Diagnostic Serial Port (WDM)
+       5301  Packet Service Diagnostic Serial Port (WDM)
+       5302  Packet Service
+       5401  Packet Service
+       5402  Packet Service Diagnostic Serial Port (WDM)
+       5501  Packet Service Diagnostic Serial Port (WDM)
+       5502  Packet Service
+       5601  Packet Service Diagnostic Serial Port (WDM)
+       5602  Packet Service
+       7101  Composite Device
+       7102  Packet Service
+       a000  Packet Service
+       a001  Packet Service Diagnostic Serial Port (WDM)
+       c100  Packet Service
+       c200  Packet Service
+       c500  Packet Service Diagnostic Serial Port (WDM)
+       e200  Packet Service
+106d  San Chieh Manufacturing, Ltd
+106e  ConectL
+106f  Money Controls
+1076  GCT Semiconductor, Inc.
+       0031  Bluetooth Device
+       0032  Bluetooth Device
+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
+108e  Lotes Co., Ltd.
+1099  Surface Optics Corp.
+109a  DATASOFT Systems GmbH
+109f  eSOL Co., Ltd
+       3163  Trigem Mobile SmartDisplay84
+       3164  Trigem Mobile SmartDisplay121
+10a0  Hirotech, Inc.
+10a3  Mitsubishi Materials Corp.
+10a9  SK Teletech Co., Ltd
+10aa  Cables To Go
+10ab  USI Co., Ltd
+       1002  Bluetooth Device
+       1003  BC02-EXT in DFU
+       1005  Bluetooth Adptr
+       1006  BC04-EXT in DFU
+       10c5  Sony-Ericsson / Samsung DataCable
+10ac  Honeywell, Inc.
+10ae  Princeton Technology Corp.
+10af  Liebert Corp.
+       0000  UPS
+       0001  PowerSure PSA UPS
+       0002  PowerSure PST UPS
+       0003  PowerSure PSP UPS
+       0004  PowerSure PSI UPS
+       0005  UPStation GXT 2U UPS
+       0006  UPStation GXT UPS
+       0007  Nfinity Power Systems UPS
+       0008  PowerSure Interactive UPS
+10b5  Comodo (PLX?)
+       9060  Test Board
+10b8  DiBcom
+       0bb8  DiBcom USB DVB-T reference design (MOD300) (cold)
+       0bb9  DiBcom USB DVB-T reference design (MOD300) (warm)
+       0bc6  DiBcom USB2.0 DVB-T reference design (MOD3000P) (cold)
+       0bc7  DiBcom USB2.0 DVB-T reference design (MOD3000P) (warm)
+10bb  TM Technology, Inc.
+10bc  Dinging Technology Co., Ltd
+10bd  TMT Technology, Inc.
+       1427  Ethernet
+10bf  SmartHome
+       0001  SmartHome PowerLinc
+10c4  Cygnal Integrated Products, Inc.
+       0002  F32x USBXpress Device
+       80a9  CP210x to UART Bridge Controller
+       80ca  ATM2400 Sensor Device
+       8461  Sangoma U100
+       ea60  CP210x Composite Device
+10c5  Sanei Electric, Inc.
+10c6  Intec, Inc.
+10cb  Eratech
+10cc  GBM Connector Co., Ltd
+       1101  MP3 Player
+10cd  Kycon, Inc.
+10ce  Silicon Labs
+       ea6a  MobiData EDGE USB Modem
+10cf  Velleman Components, Inc.
+       2011  R-Engine MPEG2 encoder/decoder
+       5500  8055 Experiment Interface Board (address=0)
+       5501  8055 Experiment Interface Board (address=1)
+       5502  8055 Experiment Interface Board (address=2)
+       5503  8055 Experiment Interface Board (address=3)
+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
+       55a2  2Port KVMSwitcher
+10d6  Actions Semiconductor Co., Ltd
+       1000  MP3 Player
+       1100  MPMan MP-Ki 128 MP3 Player/Recorder
+       1101  D-Wave 2GB MP4 Player / AK1025 MP3/MP4 Player
+       2200  Acer MP-120 MP3 player
+       8888  ADFU Device
+       ff51  ADFU Device
+       ff61  MP4 Player
+       ff66  Craig 2GB MP3/Video Player
+10de  Authenex, Inc.
+10df  In-Win Development, Inc.
+       0500  iAPP CR-e500 Card reader
+10e0  Post-Op Video, Inc.
+10e1  CablePlus, Ltd
+10e2  Nada Electronics, Ltd
+10ec  Vast Technologies, Inc.
+10f0  Nexio Co., Ltd
+       2002  iNexio Touchscreen controller
+10f5  Turtle Beach
+       0200  Audio Advantage Roadie
+10fb  Pictos Technologies, Inc.
+10fd  Anubis Electronics, Ltd
+       7e50  FlyCam Usb 100
+       804d  Typhoon Webshot II Webcam [zc0301]
+       8050  FlyCAM-USB 300 XP2
+       de00  WinFast WalkieTV WDM Capture Driver.
+1100  VirTouch, Ltd
+       0001  VTPlayer VTP-1 Braille Mouse
+1101  EasyPass Industrial Co., Ltd
+       0001  FSK Electronics Super GSM Reader
+1108  Brightcom Technologies, Ltd
+110a  Moxa Technologies Co., Ltd.
+       1250  UPort 1250 2-Port RS-232/422/485
+       1251  UPort 1250I 2-Port RS-232/422/485 with Isolation
+       1410  UPort 1410 4-Port RS-232
+       1450  UPort 1450 4-Port RS-232/422/485
+       1451  UPort 1450I 4-Port RS-232/422/485 with Isolation
+       1613  UPort 1610-16 16-Port RS-232
+       1618  UPort 1610-8 8-Port RS-232
+       1653  UPort 1650-16 16-Port RS-232/422/485
+       1658  UPort 1650-8 8-Port RS-232/422/485
+1110  Analog Devices Canada, Ltd (Allied Telesyn)
+       5c01  Huawei MT-882 Remote NDIS Network Device
+       6489  ADSL ETH/USB RTR
+       9000  ADSL LAN Adapter
+       9001  ADSL Loader
+       900f  AT-AR215 DSL Modem
+       9010  AT-AR215 DSL Modem
+       9021  ADSL WAN Adapter
+       9022  ADSL Loader
+       9023  ADSL WAN Adapter
+       9024  ADSL Loader
+       9031  ADSL LAN Adapter
+       9032  ADSL Loader
+1111  Pandora International Ltd.
+       8888  Evolution Device
+1112  YM ELECTRIC CO., Ltd
+1113  Medion AG
+       a0a2  Active Sync device
+111e  VSO Electric Co., Ltd
+112a  RedRat
+       0001  RedRat3 IR Transceiver
+       0005  RedRat3II IR Transceiver
+112e  Master Hill Electric Wire and Cable Co., Ltd
+112f  Cellon International, Inc.
+1130  Tenx Technology, Inc.
+       6806  Keychain photo frame
+       f211  audio headset
+1131  Integrated System Solution Corp.
+       1001  KY-BT100 Bluetooth Adapter
+       1002  Bluetooth Device
+       1003  Bluetooth Device
+       1004  Bluetooth Device
+1132  Toshiba Corp., Digital Media Equipment [hex]
+       4331  PDR-M4/M5/M70 Digital Camera
+       4332  PDR-M60 Digital Camera
+       4333  PDR-M2300/PDR-M700
+       4334  PDR-M65
+       4335  PDR-M61
+       4337  PDR-M11
+       4338  PDR-M25
+113c  Arin Tech Co., Ltd
+113d  Mapower Electronics Co., Ltd
+1141  V One Multimedia, Pte., Ltd
+1142  CyberScan Technologies, Inc.
+1145  Japan Radio Company
+       0001  AirH PHONE AH-J3001V/J3002V
+1146  Shimane SANYO Electric Co., Ltd.
+1147  Ever Great Electric Wire and Cable Co., Ltd
+114b  Sphairon Access Systems GmbH
+       0110  Turbolink UB801R WLAN Adapter
+114c  Tinius Olsen Testing Machine Co., Inc.
+114d  Alpha Imaging Technology Corp.
+114f  Wavecom
+115b  Salix Technology Co., Ltd.
+1162  Secugen Corp.
+1163  DeLorme Publishing, Inc.
+       0100  Earthmate GPS (orig)
+       0200  Earthmate GPS (LT-20, LT-40)
+1164  YUAN High-Tech Development Co., Ltd
+       0300  ELSAVISION 460D
+       0601  Analog TV Tuner
+       0900  TigerBird BMP837 USB2.0 WDM Encoder
+       0bc7  Digital TV Tuner
+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 ??)
+       0001  DigitalDream l'espion XS
+       19c7  ISDN TA
+       4008  56k FaxModem
+       504a  PJB-100 Personal Jukebox
+1184  Kyocera Elco Corp.
+1188  Bloomberg L.P.
+1189  Acer Communications & Multimedia
+       0893  EP-1427X-2 Ethernet Adapter
+118f  You Yang Technology Co., Ltd
+1190  Tripace
+1191  Loyalty Founder Enterprise Co., Ltd
+1196  Yankee Robotics, LLC
+       0010  Trifid Camera without code
+       0011  Trifid Camera
+1197  Technoimagia Co., Ltd
+1198  StarShine Technology Corp.
+1199  Sierra Wireless, Inc.
+       0019  AC595U
+       0021  AC597E
+       0024  MC5727 CDMA modem
+       0110  Composite Device
+       0112  CDMA 1xEVDO PC Card, AirCard 580
+       0120  AC595U
+       0218  MC5720 Wireless Modem
+       6467  MP Series Network Adapter
+       6468  MP Series Network Adapter
+       6469  MP Series Network Adapter
+       6802  MC8755 Device
+       6803  MC8765 Device
+       6804  MC8755 Device
+       6805  MC8765 Device
+       6812  MC8775 Device
+       6820  AC875 Device
+       6832  MC8780 Device
+       6833  MC8781 Device
+       683a  MC8785 Device
+       6850  AirCard 880 Device
+       6851  AirCard 881 Device
+       6852  AirCard 880E Device
+       6853  AirCard 881E Device
+       6854  AirCard 885 Device
+       6856  ATT "USB Connect 881"
+       6870  MC8780 Device
+       6871  MC8781 Device
+       6893  MC8777 Device
+119a  ZHAN QI Technology Co., Ltd
+119b  ruwido austria GmbH
+       0400  Infrared Keyboard V2.01
+11a0  Chipcon AS
+       eb11  CC2400EB 2.0 ZigBee Sniffer
+11a3  Technovas Co., Ltd
+       8031  MP3 Player
+       8032  MP3 Player
+11aa  GlobalMedia Group, LLC
+       1518  iREZ K2
+11ab  Exito Electronics Co., Ltd
+11b0  ATECH FLASH TECHNOLOGY
+11c5  Inmax
+       0521  IMT-0521 Smartcard Reader
+11db  Topfield Co., Ltd.
+       1000  PVR
+       1100  PVR
+11e6  K.I. Technology Co. Ltd.
+11f5  Siemens AG (?)
+       0001  SX1
+       0003  Mobile phone USB cable
+       0004  X75
+11f6  Prolific
+       2001  Willcom WSIM
+11f7  Alcatel (?)
+       02df  TD10 Mobile phone USB cable
+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
+       3403  Muzio JM250 Audio Player
+1223  SKYCABLE ENTERPRISE. CO., LTD.
+1230  Chipidea-Microelectronica, S.A.
+1235  Novation EMS
+       0001  ReMOTE Audio/XStation
+       0002  Speedio
+       4661  ReMOTE25
+1241  Belkin
+       1111  Mouse
+       1122  Typhoon Stream Optical Mouse USB+PS/2
+       1155  PS2/USB Browser Combo Mouse
+       1166  MI-2150 Trust Mouse
+       1177  F8E842-DL Mouse
+       1503  Keyboard
+124a  AirVast
+       168b  PRISM3 WLAN Adapter
+       4017  PC-Chips 802.11b Adapter
+124b  Nyko (Honey Bee)
+       4d01  Airflo EX Joystick
+124c  MXI - Memory Experts International, Inc.
+       3200  Stealth MXP 1GB
+125c  Apogee Inc.
+       0010  Alta series CCD
+125f  A-DATA Technology Co., Ltd.
+1260  Standard Microsystems Corp.
+       ee22  Intersil ISL3887 [EZ-Connect 802.11g Adapter v3]
+1264  Covidien Energy-based Devices
+1266  Pirelli Broadband Solutions
+       6302  Fastweb DRG A226M ADSL Router
+1267  Logic3 / SpectraVideo plc
+       0103  G-720 Keyboard
+       0201  A4Tech SWOP-3 Mouse
+       a001  JP260 PC Game Pad
+       c002  Wireless Optical Mouse
+126c  Aristocrat Technologies
+126d  Bel Stewart
+126e  Strobe Data, Inc.
+126f  TwinMOS
+       1325  Mobile Disk
+       2168  Mobile Disk III
+       a006  G240 802.11bg
+1275  Xaxero Marine Software Engineering, Ltd.
+       0002  WeatherFax 2000 Demodulator
+       0080  SkyEye Weather Satellite Receiver
+1283  zebris Medical GmbH
+       0100  USB-RS232 Adaptor
+       0110  CMS20
+       0111  CMS 10
+       0112  CMS 05
+       0114  ARCUS digma PC-Interface
+       0115  SAM Axioquick recorder
+       0116  SAM Axioquick recorder
+       0120  emed-X
+       0121  emed-AT
+       0130  PDM
+       0150  CMS10GI (Golf)
+1286  Marvell Semiconductor, Inc.
+       8001  BLOB boot loader firmware
+1291  Qualcomm Flarion Technologies, Inc. / Leadtek Research, Inc.
+       0010  FDM 2xxx Flash-OFDM modem
+       0011  LR7F06/LR7F14 Flash-OFDM modem
+1292  Innomedia
+       0258  Creative Labs VoIP Blaster
+1293  Belkin Components [hex]
+       0002  F5U002 Parallel Port [uss720]
+       2101  104-key keyboard
+1294  RISO KAGAKU CORP.
+129b  CyberTAN Technology
+       1666  TG54USB 802.11bg
+       1667  802.11bg
+       1828  Gigaset USB Adapter 300
+12a7  Trendchip Technologies Corp.
+12ab  Honey Bee Electronic International Ltd.
+12ba  Licensed by Sony Computer Entertainment America
+       0100  RedOctane Guitar for PlayStation(R)3
+       0120  RedOctane Drum Kit for PlayStation(R)3
+       0200  Harmonix Guitar for PlayStation(R)3
+       0210  Harmonix Drum Kit for PlayStation(R)3
+12d1  Huawei Technologies Co., Ltd.
+       1001  E620 USB Modem
+       1003  E220 HSDPA Modem / E270 HSDPA/HSUPA Modem
+       1009  U120
+       140b  EC1260 Wireless Data Modem HSD USB Card
+       1446  E1552 (HSPA modem)
+12d2  LINE TECH INDUSTRIAL CO., LTD.
+12d6  EMS Dr. Thomas Wuensche
+       0444  CPC-USB/ARM7
+       0888  CPC-USB/M16C
+12d7  BETTER WIRE FACTORY CO., LTD.
+12e6  Waldorf Music GmbH
+       0013  Blofeld
+12ef  Tapwave, Inc.
+       0100  Tapwave Handheld [Tapwave Zodiac]
+12f5  Dynamic System Electronics Corp.
+12f7  Memorex Products, Inc.
+       1a00  TD Classic 003B
+       1e23  TravelDrive 2007 Flash Drive
+12fd  AIN Comm. Technology Co., Ltd
+       1001  AWU2000b 802.11b Stick
+12ff  Fascinating Electronics, Inc.
+       0101  Advanced RC Servo Controller
+1307  Transcend Information, Inc.
+       0163  256MB/512MB/1GB Flash Drive
+       0165  2GB/4GB Flash Drive
+       1169  TS2GJF210 JetFlash 210 2GB
+1310  Roper
+       0001  Class 1 Bluetooth Dongle
+1312  ICS Electronics
+131d  Natural Point
+       0155  TrackIR 3 Pro Head Tracker
+132b  Konica Minolta
+       0000  Dimage A2 Camera
+       0001  Minolta DiMAGE A2 (ptp)
+       0003  Dimage Xg Camera
+       0006  Dimage Z2 Camera
+       0007  Minolta DiMAGE Z2 (PictBridge mode)
+       0008  Dimage X21 Camera
+       000a  Dimage Scan Dual IV
+       000b  Dimage Z10 Camera
+       000d  Dimage X50 Camera [storage?]
+       000f  Dimage X50 Camera [p2p?]
+       0010  Dimage G600 Camera
+       0012  Dimage Scan Elite5400 2
+       0013  Dimage X31 Camera
+       0015  Dimage G530 Camera
+       0017  Dimage Z3 Camera
+       0018  Minolta DiMAGE Z3 (PictBridge mode)
+       0019  Dimage A200 Camera
+       0021  Dimage Z5 Camera
+       0022  Minolta DiMAGE Z5 (PictBridge mode)
+1342  Mobility
+       0200  EasiDock 200 Hub
+       0201  EasiDock 200 Keyboard and Mouse Port
+       0202  EasiDock 200 Serial Port
+       0203  EasiDock 200 Printer Port
+       0204  Ethernet
+       0304  EasiDock Ethernet
+1345  Sino Lite Technology Corp.
+       001c  Xbox Controller Hub
+1347  Moravian Instruments
+       0400  G2CCD USB 1.1 obsolete
+       0401  G2CCD-S with Sony ICX285 CCD
+       0402  G2CCD2
+       0403  G2/G3CCD-I KAI CCD
+       0404  G2/G3CCD-F KAF CCD
+       0410  G1-0400 CCD
+       0411  G1-0800 CCD
+       0412  G1-0300 CCD
+       0413  G1-2000 CCD
+       0414  G1-1400 CCD
+1348  Katsuragawa Electric Co., Ltd.
+134e  Digby's Bitpile, Inc. DBA D Bit
+1357  P&E Microcomputer Systems
+       0503  USB-ML-12 HCS08/HCS12 Multilink
+1366  SEGGER
+       0101  J-Link ARM
+136b  STEC
+1370  Swissbit
+       0323  Swissmemory cirrusWHITE
+       6828  Victorinox Flash Drive
+1371  Dick Smith Electronics
+       9022  RT2573
+       9032  C-Net CWD-854 rev F
+1376  Vimtron Electronics Co., Ltd.
+137b  SCAPS GmbH
+       0002  SCAPS USC-2 Scanner Controller
+1385  Netgear, Inc
+       4250  WG111T
+       4251  WG111T (no firmware)
+       5f00  WPN111 RangeMax(TM) Wireless USB 2.0 Adapter
+       5f01  WPN111 (no firmware)
+138a  DigitalPersona, Inc
+       0001  Fingeprint Reader
+138e  Jungo LTD
+       9000  Raisonance S.A. STM32 ARM evaluation board
+1390  TOMTOM B.V.
+       0001  GO 520 T
+1391  IdealTEK, Inc.
+       1000  URTC-1000
+1395  Sennheiser Communications
+       3556  USB Headset
+1397  BEHRINGER International GmbH
+       00bc  BCF2000
+1398  Q-tec
+       2103  USB 2.0 Storage Device
+13ad  Baltech
+       9999  Card reader
+13b0  PerkinElmer Optoelectronics
+       000a  Alesis Photon X25 MIDI Controller
+13b1  Linksys
+       000b  WUSB11 v4.0 802.11b Adapter
+       000d  WUSB54G Wireless Adapter
+       0011  WUSB54GP v4.0 802.11g Adapter
+       0018  USB200M 10/100 Ethernet Adapter
+       001a  HU200TS Wireless Adapter
+       001e  WUSBF54G 802.11bg
+       0020  WUSB54GC 802.11g Adapter [ralink rt73]
+       0023  WUSB54GR
+       0024  WUSBF54G v1.1 802.11bg
+13b3  Nippon Dics Co., Ltd.
+13ba  Unknown
+       0017  PS/2 Keyboard+Mouse Adapter
+13be  Ricoh Printing Systems, Ltd.
+13ca  JyeTai Precision Industrial Co., Ltd.
+13cf  Wisair Ltd.
+13d1  A-Max Technology Macao Commercial Offshore Co. Ltd.
+       7019  MD 82288
+13d2  Shark Multimedia
+       0400  Pocket Ethernet [klsi]
+13d3  IMC Networks
+       3201  VisionDTV USB-Ter/HAMA USB DVB-T device cold
+       3202  VisionDTV USB-Ter/HAMA USB DVB-T device warm
+       3203  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
+       3204  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
+       3205  DNTV Live! Tiny USB2 BDA (No Remote)
+       3206  DNTV Live! Tiny USB2 BDA (No Remote)
+       3207  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
+       3208  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
+       3209  DTV-DVB UDST7022BDA DVB-S Box(Without HID)
+       3211  DTV-DVB Hybrid Analog/Capture / Pinnacle PCTV 310e
+       3212  DTV-DVB UDTT704C - DVBT/NTSC/PAL Driver(PCM4)
+       3213  DTV-DVB UDTT704D - DVBT/NTSC/PAL Driver (PCM4)
+       3214  DTV-DVB UDTT704F -(MiniCard) DVBT/NTSC/PAL Driver(Without HID)
+       3215  DTV-DVB UDAT7240 - ATSC/NTSC/PAL Driver(PCM4)
+       3216  DTV-DVB UDTT 7047-USB 2.0 DVB-T Driver
+       3217  Digital-TV Receiver.
+       3219  DTV-DVB UDTT7049 - DVB-T Driver(Without HID)
+       3220  DTV-DVB UDTT 7047M-USB 2.0 DVB-T Driver
+       3223  DNTV Live! Tiny USB2 BDA (No Remote)
+       3224  DNTV Live! Tiny USB2 BDA (No Remote)
+       3226  DigitalNow TinyTwin DVB-T Receiver
+       3236  DTV-DVB UDTT 7047A-USB 2.0 DVB-T Driver
+       3237  DTV-DVB UDTT 704J - dual DVB-T Driver
+       3239  DTV-DVB UDTT704D - DVBT/NTSC/PAL Driver(Without HID)
+       3240  DTV-DVB UDXTTM6010 - A/D Driver(Without HID)
+       3241  DTV-DVB UDXTTM6010 - A/D Driver(Without HID)
+       3242  DTV-DVB UDAT7240LP - ATSC/NTSC/PAL Driver(Without HID)
+       3243  DTV-DVB UDXTTM6010 - A/D Driver(Without HID)
+       3244  DTV-DVB UDTT 7047Z-USB 2.0 DVB-T Driver
+       3247  802.11 n/g/b Wireless LAN Adapter
+       3262  802.11 n/g/b Wireless LAN USB Adapter
+       3273  802.11 n/g/b Wireless LAN USB Mini-Card
+       3284  Wireless LAN USB Mini-Card
+       7020  DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005)
+       7022  DTV-DVB UDST7022BDA DVB-S Box(Without HID)
+13dc  ALEREON, INC.
+13dd  i.Tech Dynamic Limited
+13e1  Kaibo Wire & Cable (Shenzhen) Co., Ltd.
+13e5  Rane
+       0001  SL-1
+13e6  TechnoScope Co., Ltd.
+13fd  Initio Corporation
+       1340  Hi-Speed USB to SATA Bridge
+13fe  Kingston Technology Company Inc.
+       1a00  512MB/1GB Flash Drive
+       1a23  512MB Flash Drive
+       1d00  DataTraveler 2.0 1GB/4GB Flash Drive / Patriot Xporter 4GB Flash Drive
+       1f00  DataTraveler 2.0 4GB Flash Drive / Patriot Xporter 32GB (PEF32GUSB) Flash Drive
+       3100  2 GB USB stick
+1400  Axxion Group Corp.
+1402  Bowe Bell & Howell
+1403  Sitronix
+       0001  Digital Photo Frame
+140e  Telechips, Inc.
+       b011  TCC780X-based player (USB Boot mode)
+       b021  TCC77X-based players (USB Boot mode)
+1410  Novatel Wireless
+       1110  Merlin S620
+       1120  Merlin EX720
+       1130  Merlin S720
+       1400  Merlin U730/U740 (Vodafone)
+       1410  Merlin U740 (non-Vodafone)
+       1430  Merlin XU870
+       1450  Merlin X950D
+       2110  Ovation U720/MCD3000
+       2410  Expedite EU740
+       2420  Expedite EU850D/EU860D/EU870D
+       4100  U727
+       4400  Ovation MC930D/MC950D
+1415  Nam Tai E&E Products Ltd. or OmniVision Technologies, Inc.
+       0000  Sony SingStar USBMIC
+       0020  Sony Wireless SingStar
+       2000  Sony Playstation Eye
+1419  ABILITY ENTERPRISE CO., LTD.
+1429  Vega Technologies Industrial (Austria) Co.
+142a  Thales E-Transactions
+       0003  Artema Hybrid
+       0005  Artema Modular
+       0043  medCompact
+1430  RedOctane
+       4734  Guitar Hero4 hub
+1431  Pertech Resources, Inc.
+1435  Wistron NeWeb
+       0711  UR055G 802.11bg
+       0826  AR5523
+       0827  AR5523 (no firmware)
+       0828  AR5523
+       0829  AR5523 (no firmware)
+1436  Denali Software, Inc.
+143c  Altek Corporation
+1443  Digilent
+       0007  CoolRunner-II CPLD Starter Kit
+1453  Radio Shack
+       4026  26-183 Serial Cable
+1456  Extending Wire & Cable Co., Ltd.
+1457  First International Computer, Inc.
+       5117  OpenMoko Neo1973 kernel usbnet (g_ether, CDC Ethernet) mode
+       5118  OpenMoko Neo1973 Debug board (V2+)
+       5119  OpenMoko Neo1973 u-boot cdc_acm serial port
+       5120  OpenMoko Neo1973 u-boot usbtty generic serial
+       5121  OpenMoko Neo1973 kernel mass storage (g_storage) mode
+       5122  OpenMoko Neo1973 / Neo Freerunner kernel cdc_ether USB network
+       5123  OpenMoko Neo1973 internal USB CSR4 module
+       5124  OpenMoko Neo1973 Bluetooth Device ID service
+145f  Trust
+       0106  Trust K56 V92 USB Modem
+       013d  PC Camera (SN9C201 + OV7660)
+       013f  Megapixel Auto Focus Webcam
+       0142  WB-6250X Webcam
+       015a  WB-8300X 2MP Webcam
+1461  Staccato Communications
+1462  Micro Star International
+       5512  MegaStick-1 Flash Stick
+1472  Huawei-3Com
+       0009  Aolynk WUB320g
+147a  Formosa Industrial Computing, Inc.
+       e015  eHome Infrared Receiver
+       e016  eHome Infrared Receiver
+       e017  eHome Infrared Receiver
+147e  Upek
+       1000  Biometric Touchchip/Touchstrip Fingerprint Sensor
+       2016  Biometric Touchchip/Touchstrip Fingerprint Sensor
+147f  Hama GmbH & Co., KG
+1484  Elsa AG [hex]
+       1746  Ecomo 19H99 Monitor
+       7616  Elsa Hub
+1485  Silicom
+       0001  U2E
+       0002  Psion Gold Port Ethernet
+1487  DSP Group, Ltd.
+148e  EVATRONIX SA
+148f  Ralink Technology, Corp.
+       1706  RT2500USB Wireless Adapter
+       2570  802.11g WiFi
+       2573  RT2501USB Wireless Adapter
+       2671  RT2601USB Wireless Adapter
+       2870  RT2870 Wireless Adapter
+       3070  RT2870 Wireless Adapter
+       9020  RT2500USB Wireless Adapter
+       9021  RT2501USB Wireless Adapter
+1497  Panstrong Company Ltd.
+149a  Imagination Technologies
+       2107  DBX1 DSP core
+14aa  AVerMedia (again) or C&E
+       0001  Avermedia AverTV DVBT USB1.1 (cold)
+       0002  Avermedia AverTV DVBT USB1.1 (warm)
+       0201  AVermedia/Yakumo/Hama/Typhoon DVB-T USB2.0 (cold)
+       0221  AVermedia DVBT Tuner Dongle
+       0301  AVermedia/Yakumo/Hama/Typhoon DVB-T USB2.0 (warm)
+14ad  CTK Corporation
+14ae  Printronix Inc.
+14af  ATP Electronics Inc.
+14b0  StarTech.com Ltd.
+14b2  Ralink Technology, Corp.
+       3a93  USB WLAN Device
+       3c02  rt2500 802.11g WLAN
+       3c05  rt2570 802.11g WLAN
+       3c22  rt73 802.11g WLAN
+       3c27  rt2870 802.11n WLAN
+14c0  Rockwell Automation, Inc.
+14c2  Gemlight Computer, Ltd
+       0250  Storage Adapter V2
+       0350  Storage Adapter V2
+14cd  Super Top
+       6600  USB 2.0 IDE DEVICE
+       6700  Card Reader
+       6900  Card Reader
+14d8  JAMER INDUSTRIES CO., LTD.
+14dd  Raritan Computer, Inc.
+14e1  Dialogue Technology Corp.
+       5000  PenMount 5000 Touch Controller
+14e5  SAIN Information & Communications Co., Ltd.
+14ea  Planex Communications
+       ab10  GW-US54GZ
+       ab11  GU-1000T
+       ab13  GW-US54Mini 802.11bg
+14ed  Shure Inc.
+1500  Ellisys
+1501  Pine-Tum Enterprise Co., Ltd.
+1513  Hypercom
+       0444  medMobile
+1516  CompUSA
+       1603  1GB Flash Drive
+       8628  128M Pen Drive
+1518  Cheshire Engineering Corp.
+       0001  HDReye High Dynamic Range Camera
+       0002  HDReye (before firmware loads)
+1520  Bitwire Corp.
+1524  ENE Technology Inc
+       6680  UTS 6680
+1527  Silicon Portals
+       0200  YAP Phone (no firmware)
+       0201  YAP Phone
+1529  UBIQUAM Co., Ltd.
+       3100  CDMA 1xRTT USB Modem (U-100/105/200/300/520)
+152d  JMicron Technology Corp. / JMicron USA Technology Corp.
+       2335  ATA/ATAPI Bridge
+       2336  Hard Disk Drive
+       2338  JM20337 Hi-Speed USB to SATA & PATA Combo Bridge
+152e  LG (HLDS)
+       e001  GSA-5120D DVD-RW
+1532  Razer USA, Ltd
+       0001  RZ01-020300 Optical Mouse [Diamondback]
+       0003  Krait Mouse
+       0007  DeathAdder Mouse
+       0101  Copperhead Mouse
+       0102  Tarantula Keyboard
+       0109  Lycosa Keyboard
+1546  U-Blox AG
+154a  Celectronic GmbH
+       8180  CARD STAR/medic2
+154b  PNY
+       0010  USB 2.0 Flash Drive
+154d  ConnectCounty Holdings Berhad
+154e  D&M Holdings, Inc. (Denon/Marantz)
+       3000  Marantz RC9001 Remote Control
+1554  Prolink Microsystems Corp.
+1557  OQO
+       0002  model 01 WiFi interface
+       0003  model 01 Bluetooth interface
+       7720  model 01+ Ethernet
+       8150  model 01 Ethernet interface
+1568  Sunf Pu Technology Co., Ltd
+156f  Quantum Corporation
+1570  ALLTOP TECHNOLOGY CO., LTD.
+157b  Ketron SRL
+157e  TRENDnet
+       3006  TEW-444UB EU
+       3007  TEW-444UB EU (no firmware)
+       300a  TEW-429UB 802.11bg
+       300b  TEW-429UB 802.11bg
+       300d  TEW-429UB C1 802.11bg
+       3204  ALL0298 v2 802.11bg
+       3205  AR5523
+       3206  AR5523 (no firmware)
+1582  Fiberline
+       6003  WL-430U 802.11bg
+1587  SMA Technologie AG
+158d  Oakley Inc.
+1598  Kunshan Guoji Electronics Co., Ltd.
+15a2  Freescale Semiconductor, Inc.
+15a4  Afatech Technologies, Inc.
+       1001  AF9015 DVB-T USB2.0 stick
+       9015  AF9015 DVB-T USB2.0 stick
+       9016  AF9015 DVB-T USB2.0 stick
+15a8  Teams Power Limited
+15a9  Gemtek
+       0004  WUBR177G
+       0006  Wireless 11n USB Adapter
+       0010  802.11n USB Wireless Card
+15aa  Gearway Electronics (Dong Guan) Co., Ltd.
+15ba  Olimex Ltd.
+       0003  OpenOCD JTAG
+       0004  OpenOCD JTAG TINY
+15c0  XL Imaging
+       0001  2M pixel Microscope Camera
+       0002  3M pixel Microscope Camera
+       0003  1.3M pixel Microscope Camera (mono)
+       0004  1.3M pixel Microscope Camera (colour)
+       0005  3M pixel Microscope Camera (Mk 2)
+       0006  2M pixel Microscope Camera (with capture button)
+       0007  3M pixel Microscope Camera (with capture button)
+       0008  1.3M pixel Microscope Camera (colour, with capture button)
+       0009  1.3M pixel Microscope Camera (colour, with capture button)
+       000a  2M pixel Microscope Camera (Mk 2)
+       0010  1.3M pixel "Tinycam"
+       0101  3M pixel Microscope Camera
+15c2  SoundGraph Inc.
+       0036  LC16M VFD Display/IR Receiver
+       0038  GD01 MX VFD Display/IR Receiver
+       ffda  iMON PAD Remote Controller
+       ffdc  iMON PAD Remote Controller
+15c6  Laboratoires MXM
+       1000  DigistimSP (cold)
+       1001  DigistimSP (warm)
+       1002  DigimapSP USB (cold)
+       1003  DigimapSP USB (warm)
+15c9  D-Box Technologies
+15ca  Textech International Ltd.
+       00c3  Mini Optical Mouse
+15d5  Coulomb Electronics Ltd.
+15d9  Unknown
+       0a33  Optical Mouse
+       0a37  Mouse
+15dc  Hynix Semiconductor Inc.
+15e0  Seong Ji Industrial Co., Ltd.
+15e1  RSA
+       2007  RSA SecurID (R) Authenticator
+15e8  SohoWare
+       9100  NUB100 Ethernet [pegasus]
+       9110  10/100 USB Ethernet
+15e9  Pacific Digital Corp.
+       04ce  MemoryFrame MF-570
+       1968  MemoryFrame MF-570
+       1969  Digital Frame
+15ec  Belcarra Technologies Corp.
+15f4  HanfTek
+       0001  HanfTek UMT-010 USB2.0 DVB-T (cold)
+       0025  HanfTek UMT-010 USB2.0 DVB-T (warm)
+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]
+       0002  Astra 1236U Scanner
+       0010  Astra 1220U
+       0030  Astra 2000U
+       0050  Scanner
+       0060  Astra 3400U
+       0130  Astra 2100U
+       0160  Astra 5400U
+       0230  Astra 2200/2200SU
+       0350  Astra 4800/4850 Scanner
+       1030  Astra 4000U
+       1220  Genesys Logic Scanner Controller NT5.0
+       2010  AstraCam Digital Camera
+       2020  AstraCam 1000
+       2030  AstraCam 1800 Digital Camera
+1608  Inside Out Networks [hex]
+       0001  EdgePort/4 Serial Port
+       0002  Edgeport/8
+       0003  Rapidport/4
+       0004  Edgeport/4
+       0005  Edgeport/2
+       0006  Edgeport/4i
+       0007  Edgeport/2i
+       0008  Edgeport/8
+       000c  Edgeport/421
+       000d  Edgeport/21
+       000e  Edgeport/4
+       000f  Edgeport/8
+       0010  Edgeport/2
+       0011  Edgeport/4
+       0012  Edgeport/416
+       0014  Edgeport/8i
+       0018  Edgeport/412
+       0019  Edgeport/412
+       001a  Edgeport/2+2i
+       0101  Edgeport/4
+       0105  Edgeport/2
+       0106  Edgeport/4i
+       0107  Edgeport/2i
+       010c  Edgeport/421
+       010d  Edgeport/21
+       0110  Edgeport/2
+       0111  Edgeport/4
+       0112  Edgeport/416
+       0114  Edgeport/8i
+       0201  Edgeport/4
+       0203  Rapidport/4
+       0204  Edgeport/4
+       0205  Edgeport/2
+       0206  Edgeport/4i
+       0207  Edgeport/2i
+       020c  Edgeport/421
+       020d  Edgeport/21
+       020e  Edgeport/4
+       020f  Edgeport/8
+       0210  Edgeport/2
+       0211  Edgeport/4
+       0212  Edgeport/416
+       0214  Edgeport/8i
+       0215  Edgeport/1
+       0216  EPOS/44
+       0217  Edgeport/42
+       021a  Edgeport/2+2i
+       021b  Edgeport/2c
+       021c  Edgeport/221c
+       021d  Edgeport/22c
+       021e  Edgeport/21c
+       021f  Edgeport/62
+       0240  Edgeport/1
+       0241  Edgeport/1i
+       0242  Edgeport/4s
+       0243  Edgeport/8s
+       0244  Edgeport/8
+       0245  Edgeport/22c
+       0301  Watchport/P
+       0302  Watchport/M
+       0303  Watchport/W
+       0304  Watchport/T
+       0305  Watchport/H
+       0306  Watchport/E
+       0307  Watchport/L
+       0308  Watchport/R
+       0309  Watchport/A
+       030a  Watchport/D
+       030b  Watchport/D
+       030c  Power Management Port
+       030e  Power Management Port
+       030f  Watchport/G
+       0310  Watchport/Tc
+       0311  Watchport/Hc
+       1403  MultiTech Systems MT4X56 Modem
+       1a17  Agilent Technologies (E6473)
+1614  Amoi Electronics
+       0404  WMA9109 UMTS Phone
+       0600  Vodafone VDA GPS / Toschiba Protege G710
+       0804  WP-S1 Phone
+1619  L & K Precision Technology Co., Ltd.
+1621  Wionics Research
+1628  Stonestreet One, Inc.
+162a  Airgo Networks Inc.
+162f  WiQuest Communications, Inc.
+1631  Good Way Technology
+       6200  GWUSB2E
+       c019  RT2573
+1645  Entrega [hex]
+       0001  1S Serial Port
+       0002  2S Serial Port
+       0003  1S25 Serial Port
+       0004  4S Serial Port
+       0005  E45 Ethernet [klsi]
+       0006  Parallel Port
+       0007  U1-SC25 SCSI
+       0008  Ethernet
+       0016  Bi-directional to Parallel Printer Converter
+       0080  1 port to Serial Converter
+       0081  1 port to Serial Converter
+       0093  1S9 Serial Port
+       8000  EZ-USB
+       8001  1 port to Serial
+       8002  2x Serial Port
+       8003  1 port to Serial
+       8004  2U4S serial/usb hub
+       8005  Ethernet
+       8080  1 port to Serial
+       8081  1 port to Serial
+       8093  PortGear Serial Port
+1649  SofTec Microsystems
+       0102  uDART In-Circuit Debugger
+       0200  SpYder USBSPYDER08
+164a  ChipX
+164c  Matrix Vision GmbH
+       0101  mvBlueFOX camera (no firmware)
+       0103  mvBlueFOX camera
+1657  Struck Innovative Systeme GmbH
+       3150  SIS3150 USB2.0 to VME interface
+165b  Frontier Design Group
+       8101  Tranzport Control Surface
+       fad1  Alphatrack Control Surface
+1660  Creatix Polymedia GmbH
+1668  Actiontec Electronics, Inc. [hex]
+       0009  Gateway
+       0333  Modem
+       0358  InternetPhoneWizard
+       0405  Gateway
+       0408  Prism2.5 802.11b Adapter
+       0413  Gateway
+       0421  Prism2.5 802.11b Adapter
+       0441  IBM Integrated Bluetooth II
+       0500  BTM200B BlueTooth Adapter
+       1050  802.11g Wireless Mini adapter
+       1441  IBM Integrated Bluetooth II
+       2441  BMDC-2 IBM Bluetooth III w.56k
+       3441  IBM Integrated Bluetooth III
+       6010  Gateway
+       6097  802.11b Wireless Adapter
+       6106  ROPEX FreeLan 802.11b
+       7605  UAT1 Wireless Ethernet Adapter
+1669  PiKRON Ltd. [hex]
+       1001  uLan2USB Converter - PS1 protocol
+1677  China Huada Integrated Circuit Design (Group) Co., Ltd. (CIDC Group)
+1679  Total Phase
+       2001  Beagle USB 12 Protocol Analyzer
+1681  Prevo Technologies, Inc.
+       0001  Tuner's Dashboard
+1682  Maxwise Production Enterprise Ltd.
+1684  Godspeed Computer Corp.
+1685  Delock
+       0200  Infrared adapter
+1686  ZOOM Corporation
+       0045  H4 Digital Recorder
+1687  Kingmax Digital Inc.
+168c  Atheros Communications
+       0001  AR5523
+       0002  AR5523 (no firmware)
+1690  Askey Computer Corp. [hex]
+       0101  Creative Modem Blaster DE5670
+       0102  V1456 VQE-R2 Modem [conexant]
+       0103  1456 VQE-R3 Modem [conexant]
+       0104  HCF V90 Data Fax RTAD Modem
+       0107  HCF V.90 Data,Fax,RTAD Modem
+       0109  MagicXpress V.90 Pocket Modem [conexant]
+       0203  Voyager ADSL Modem Loader
+       0204  Voyager ADSL Modem
+       0205  DSL Modem
+       0206  GlobeSpan ADSL WAN Modem
+       0208  DSL Modem
+       0209  Voyager 100 ADSL Modem
+       0211  Globespan Virata ADSL LAN Modem
+       0212  DSL Modem
+       0213  HM121d DSL Modem
+       0214  HM121d DSL Modem
+       0215  Voyager 105 ADSL Modem
+       0701  WLAN
+       0710  SMCWUSBT-G
+       0711  SMCWUSBT-G (no firmware)
+       0712  AR5523
+       0713  AR5523 (no firmware)
+       0715  Voyager 1055 Laptop Adapter
+       0722  RT2573
+       0726  Wi-Fi Wireless LAN Adapter
+       0901  Voyager 205 ADSL Router
+1696  Hitachi Video and Information System, Inc.
+1697  VTec Test, Inc.
+16a5  Shenzhen Zhengerya Cable Co., Ltd.
+16a6  Unigraf
+       3000  VTG-3xxx Video Test Generator family
+       4000  VTG-4xxx Video Test Generator family
+       5000  VTG-5xxx Video Test Generator family
+       5001  VTG-5xxx Special (update) mode of VTG-5xxx family
+16ab  Global Sun Technology
+       7801  AR5523
+       7802  AR5523 (no firmware)
+       7811  AR5523
+       7812  AR5523 (no firmware)
+16ac  Dongguan ChingLung Wire & Cable Co., Ltd.
+16b5  Persentec, Inc.
+       0002  Otto driving companion
+16c0  VOTI
+       03e8  free for internal lab use 1000
+       03e9  free for internal lab use 1001
+       03ea  free for internal lab use 1002
+       03eb  free for internal lab use 1003
+       03ec  free for internal lab use 1004
+       03ed  free for internal lab use 1005
+       03ee  free for internal lab use 1006
+       03ef  free for internal lab use 1007
+       03f0  free for internal lab use 1008
+       03f1  free for internal lab use 1009
+       05dc  USBasp AVR Programmer
+       05dd  BlackcatUSB2
+       076b  OpenPCD 13.56MHz RFID Reader
+       076c  OpenPICC 13.56MHz RFID Simulator (native)
+       08ac  OpenBeacon USB stick
+       08ca  Alpermann+Velte Universal Display
+       08cb  Alpermann+Velte Studio Clock
+       08cc  Alpermann+Velte SAM7S MT Boot Loader
+       08cd  Alpermann+Velte SAM7X MT Boot Loader
+16cc  silex technology, Inc.
+16d3  Frontline Test Equipment, Inc.
+16d5  AnyDATA Corporation
+       6501  CDMA 2000 1xRTT/EV-DO Modem
+16d6  JABLOCOM s.r.o.
+       8000  GDP-04 desktop phone
+       8001  EYE-02
+       8003  GDP-04 modem
+       8004  Bootloader
+       8005  GDP-04i
+       8007  BTP-06 modem
+16d8  CMOTECH Co., Ltd.
+       5141  CMOTECH CDMA Technologies modem
+       5533  CCU-550 CDMA EV-DO modem
+       5543  CDMA 2000 1xRTT/1xEVDO modem
+       6280  CMOTECH CDMA Technologies modem
+       6803  CNU-680 CDMA EV-DO modem
+16dc  Wiener, Plein & Baus
+       0001  CC
+       000b  VM
+16df  King Billion Electronics Co., Ltd.
+16f5  Futurelogic Inc.
+1706  BlueView Technologies, Inc.
+1707  ARTIMI
+170b  Swissonic
+       0011  MIDI-USB 1x1
+170d  Avnera
+172f  Waltop International Corp.
+1733  Cellink Technology Co., Ltd
+       0101  RF Wireless Optical Mouse OP-701
+1736  CANON IMAGING SYSTEM TECHNOLOGIES INC.
+1737  Linksys
+       0039  USB1000
+       0070  WUSB100 RangePlus Wireless USB Adapter
+       0071  WUSB600N Dual-Band Wireless-N USB Network Adapter
+       0078  WUSB100 RangePlus Wireless USB Network Adapter ver. 2
+       0079  WUSB600N Wireless-N USB Network Adapter with Dual-Band ver. 2
+1740  Senao
+       0605  LevelOne WUA-0605 N_Max Wireless USB Adapter
+       0615  LevelOne WUA-0615 N_Max Wireless USB Adapter
+       2000  NUB-8301 802.11bg
+       9701  EnGenius 802.11n Wireless USB Adapter
+       9702  EnGenius 802.11n Wireless USB Adapter
+       9703  EnGenius 802.11n Wireless USB Adapter
+       9705  EnGenius 802.11n Wireless USB Adapter
+       9706  EnGenius 802.11n Wireless USB Adapter
+1743  General Atomics
+174c  ASMedia Technology Inc.
+174f  Syntek
+       1105  SM-MS/Pro-MMC-XD Card Reader
+       1403  Integrated Webcam
+       1404  USB Camera device, 1.3 MPixel Web Cam
+       5212  USB 2.0 UVC PC Camera
+       5a11  PC Camera
+       5a31  Sonix USB 2.0 Camera
+       5a35  Sonix 1.3MPixel USB 2.0 Camera
+       6a31  Web Cam - Asus A8J, F3S, F5R, VX2S, V1S
+       6a33  Web Cam - Asus F3SA, F9J, F9S
+       6a51  2.0MPixel Web Cam - Asus Z96J, Z96S, S96S
+       6a54  Web Cam
+       6d51  2.0Mpixel Web Cam - Eurocom D900C
+       8a12  Syntek 0.3MPixel USB 2.0 UVC PC Camera
+       8a33  Syntek USB 2.0 UVC PC Camera
+       a311  1.3MPixel Web Cam - Asus A3A, A6J, A6K, A6M, A6R, A6T, A6V, A7T, A7sv, A7U
+       a312  1.3MPixel Web Cam
+       a821  Web Cam - Packard Bell BU45, PB Easynote MX66-208W
+       aa11  Web Cam
+1759  LucidPort Technology, Inc.
+1772  System Level Solutions, Inc.
+1776  Arowana
+       501c  300K CMOS Camera
+177f  Sweex
+       0313  LW313 802.11n Adapter [ralink rt2770 + rt2720]
+1781  Multiple Vendors
+       083e  MetaGeek Wi-Spy
+       083f  MetaGeek Wi-Spy 2.4x
+       0938  Iguanaworks USB IR Transceiver
+1782  Spreadtrum Communications Inc.
+1784  TopSeed Technology Corp.
+1788  ShenZhen Litkconn Technology Co., Ltd.
+1796  Printrex, Inc.
+1797  JALCO CO., LTD.
+17a0  Samson Technologies Corp.
+       0001  C01U condenser microphone
+       0002  Q1U dynamic microphone
+       0100  C03U multi-pattern microphone
+       0101  UB1 boundary microphone
+       0200  StudioDock monitors (internal hub)
+       0201  StudioDock monitors (audio)
+       0301  Q2U handheld microphone with XLR
+       0302  GoMic compact condenser microphone
+17a4  Concept2
+       0001  Performance Monitor 3
+       0002  Performance Monitor 4
+17a5  Advanced Connection Technology Inc.
+17a7  MICOMSOFT CO., LTD.
+17b3  Grey Innovation
+       0004  Linux-USB Midi Gadget
+17c3  Singim International Corp.
+17cc  Native Instruments
+       0815  Audio Kontrol 1
+       1940  RigKontrol3
+       1969  RigKontrol2
+       1978  Audio 8 DJ
+       4711  Kore Controller
+       4712  Kore Controller 2
+17cf  Hip Hing Cable & Plug Mfy. Ltd.
+17d0  Sanford L.P.
+17d3  Korea Techtron Co., Ltd.
+17e9  Newnham Research
+       0051  USB VGA Adaptor
+17eb  Cornice, Inc.
+17ef  Lenovo
+       1003  Integrated Smart Card Reader
+       3815  ChipsBnk 2GB USB Stick
+       4802  Lenovo Vc0323+MI1310_SOC Camera
+17f5  K.K. Rocky
+17f6  Unicomp, Inc
+1809  Advantech
+       4761  USB-4761 Portable Data Acquisition Module
+1822  Twinhan
+       3201  VisionDTV USB-Ter/HAMA USB DVB-T device cold
+       3202  VisionDTV USB-Ter/HAMA USB DVB-T device warm
+1831  Gwo Jinn Industries Co., Ltd.
+1832  Huizhou Shenghua Industrial Co., Ltd.
+183d  VIVOphone
+       0010  VoiceKey
+1854  Memory Devices Ltd.
+185b  Compro
+       d000  Compro Videomate DVB-U2000 - DVB-T USB cold
+       d001  Compro Videomate DVB-U2000 - DVB-T USB warm
+1861  Tech Technology Industrial Company
+1862  Teridian Semiconductor Corp.
+1870  Nexio Co., Ltd
+       0001  iNexio Touchscreen controller
+1871  Aveo Technology Corp.
+187f  Siano Mobile Silicon
+       0010  Stallar Board
+       0100  Stallar Board
+       0200  Nova A
+       0201  Nova B
+       0202  Nice
+       0300  Vega
+       0301  VeNice
+1894  Topseed
+       5632  Atek Tote Remote
+       5641  TSAM-004 Presentation Remote
+1897  Evertop Wire Cable Co.
+18a5  Verbatim, Ltd
+       0214  Portable Hard Drive
+       0216  External Hard Drive
+       0218  External Hard Drive
+18b4  e3C Technologies
+       1001  DUTV007
+       1002  EC168 (v5) based USB DVB-T receiver
+       1689  DUTV009
+       fffa  EC168 (v2) based USB DVB-T receiver
+       fffb  EC168 (v3) based USB DVB-T receiver
+18b6  Mikkon Technology Limited
+18b7  Zotek Electronic Co., Ltd.
+18c5  AMIT Technology, Inc.
+       0002  CG-WLUSB2GO
+       0008  CG-WLUSB2GNR Corega Wireless USB Adapter
+       0012  CG-WLUSB10 Corega Wireless USB Adapter
+18cd  Ecamm
+       cafe  Pico iMage
+18d1  Google Inc.
+       4e11  Nexus One Phone
+18d5  Starline International Group Limited
+18d9  Kaba
+       01a0  B-Net 91 07
+18dd  Planon System Solutions Inc.
+       1000  DocuPen RC800
+18e3  Fitipower Integrated Technology Inc
+       9102  Multi car reader
+18e8  Qcom
+       6196  RT2573
+       6229  RT2573
+18ea  Matrox Graphics, Inc.
+       0002  DualHead2Go [Analog Edition]
+       0004  TripleHead2Go [Digital Edition]
+18ec  Arkmicro Technologies Inc.
+       3118  USB to IrDA adapter [ARK3116T]
+18fd  FineArch Inc.
+190d  Motorola GSG
+1914  Alco Digital Devices Limited
+1915  Nordic Semiconductor ASA
+       2233  Linksys WUSB11 v2.8 802.11b Adapter
+       2234  Linksys WUSB54G 802.11g Adapter
+       2236  Linksys WUSB11 v3.0 802.11b Adapter
+192f  Avago Technologies, Pte.
+1930  Shenzhen Xianhe Technology Co., Ltd.
+1931  Ningbo Broad Telecommunication Co., Ltd.
+1941  Dream Link
+       8021  USB Missile Launcher
+1949  Lab126
+1951  Hyperstone AG
+1953  Ironkey Inc.
+1954  Radiient Technologies
+195d  Itron Technology iONE
+       7002  Libra-Q11 IR remote
+       7006  Libra-Q26 / 1.0 Remote
+       7777  Scorpius wireless keyboard
+       7779  Scorpius-P20MT
+1967  CASIO HITACHI Mobile Communications Co., Ltd.
+196b  Wispro Technology Inc.
+1970  Dane-Elec Corp. USA
+1975  Dongguan Guneetal Wire & Cable Co., Ltd.
+1976  Chipsbrand Microelectronics (HK) Co., Ltd.
+1977  T-Logic
+       0111  TL203 MP3 Player and Voice Recorder
+1989  Nuconn Technology Corp.
+198f  Beceem Communications Inc.
+1990  Acron Precision Industrial Co., Ltd.
+1995  Trillium Technology Pty. Ltd.
+       3202  REC-ADPT-USB (recorder)
+       3203  REC-A-ADPT-USB (recorder)
+199e  The Imaging Source Europe GmbH
+       8101  DFx 21BU04 Camera
+199f  Benica Corporation
+19a8  Biforst Technology Inc.
+19ab  Bodelin
+       1000  ProScope HR
+19af  S Life
+       6611  Celestia VoIP Phone
+19b4  Celestron
+       0101  Handheld Digital Microscope 44302
+19b5  B & W Group
+19b6  Infotech Logistic, LLC
+19ca  Mindtribe
+       0001  Sandio 3D HID Mouse
+19cf  Parrot SA
+19d2  ONDA Communication S.p.A.
+       0002  ET502HS/MT505UP ZTE MF632
+       0031  ZTE MF636
+       0064  ZTE MF627 AU
+       2000  ZTE MF627/MF628/MF628+ HSDPA
+19e1  WeiDuan Electronic Accessory (S.Z.) Co., Ltd.
+19e8  Industrial Technology Research Institute
+19ef  Pak Heng Technology (Shenzhen) Co., Ltd.
+19f7  RODE Microphones
+       0001  Podcaster
+19ff  Dynex
+       0102  1.3MP Webcam
+       0201  Rocketfish Wireless 2.4G Laser Mouse
+1a08  Bellwood International, Inc.
+1a0a  USB-IF non-workshop
+       badd  USB OTG Compliance test device
+1a12  KES Co., Ltd.
+1a25  Amphenol East Asia Ltd.
+1a2a  Seagate Branded Solutions
+1a32  Quanta Microsystems, Inc.
+       0304  802.11n Wireless LAN Card
+1a36  Biwin Technology Ltd.
+1a40  TERMINUS TECHNOLOGY INC.
+       0101  USB-2.0 4-Port HUB
+1a41  Action Electronics Co., Ltd.
+1a44  VASCO Data Security International
+       0001  Digipass 905 SmartCard Reader
+1a4a  Silicon Image
+1a4b  SafeBoot International B.V.
+1a61  Abbott Diabetes Care
+1a6a  Spansion Inc.
+1a6d  SamYoung Electronics Co., Ltd
+1a6e  Global Unichip Corp.
+1a6f  Sagem Orga GmbH
+1a79  Bayer Health Care LLC
+1a7b  Lumberg Connect  GmbH & Co. KG
+1a86  QinHeng Electronics
+       5523  CH341 in serial mode, usb to serial port converter
+       5584  CH341 in parallel mode, usb to printer port converter
+       7523  HL-340 USB-Serial adapter
+1a89  Dynalith Systems Co., Ltd.
+1a8b  SGS Taiwan Ltd.
+1a98  Leica Camera AG
+1aa4  Data Drive Thru, Inc.
+1aa5  UBeacon Technologies, Inc.
+1aa6  eFortune Technology Corp.
+1acb  Salcomp Plc
+1ad1  Desay Wire Co., Ltd.
+1ae4  ic-design Reinhard Gottinger GmbH
+1ae7  X-TENSIONS
+       0381  VS-DVB-T 380U (af9015 based)
+       2001  SpeedLink SL-6825
+1aed  High Top Precision Electronic Co., Ltd.
+1aef  Conntech Electronic (Suzhou) Corporation
+1b04  Meilhaus Electronic GmBH
+       0630  ME-630
+       0940  ME-94
+       0950  ME-95
+       0960  ME-96
+       1000  ME-1000
+       100a  ME-1000
+       100b  ME-1000
+       1400  ME-1400
+       140a  ME-1400A
+       140b  ME-1400B
+       140c  ME-1400C
+       140d  ME-1400D
+       140e  ME-1400E
+       14ea  ME-1400EA
+       14eb  ME-1400EB
+       1604  ME-1600/4U
+       1608  ME-1600/8U
+       160c  ME-1600/12U
+       160f  ME-1600/16U
+       168f  ME-1600/16U8I
+       4610  ME-4610
+       4650  ME-4650
+       4660  ME-4660
+       4661  ME-4660I
+       4662  ME-4660
+       4663  ME-4660I
+       4670  ME-4670
+       4671  ME-4670I
+       4672  ME-4670S
+       4673  ME-4670IS
+       4680  ME-4680
+       4681  ME-4680I
+       4682  ME-4680S
+       4683  ME-4680IS
+       6004  ME-6000/4
+       6008  ME-6000/8
+       600f  ME-6000/16
+       6014  ME-6000I/4
+       6018  ME-6000I/8
+       601f  ME-6000I/16
+       6034  ME-6000ISLE/4
+       6038  ME-6000ISLE/8
+       603f  ME-6000ISLE/16
+       6044  ME-6000/4/DIO
+       6048  ME-6000/8/DIO
+       604f  ME-6000/16/DIO
+       6054  ME-6000I/4/DIO
+       6058  ME-6000I/8/DIO
+       605f  ME-6000I/16/DIO
+       6074  ME-6000ISLE/4/DIO
+       6078  ME-6000ISLE/8/DIO
+       607f  ME-6000ISLE/16/DIO
+       6104  ME-6100/4
+       6108  ME-6100/8
+       610f  ME-6100/16
+       6114  ME-6100I/4
+       6118  ME-6100I/8
+       611f  ME-6100I/16
+       6134  ME-6100ISLE/4
+       6138  ME-6100ISLE/8
+       613f  ME-6100ISLE/16
+       6144  ME-6100/4/DIO
+       6148  ME-6100/8/DIO
+       614f  ME-6100/16/DIO
+       6154  ME-6100I/4/DIO
+       6158  ME-6100I/8/DIO
+       615f  ME-6100I/16/DIO
+       6174  ME-6100ISLE/4/DIO
+       6178  ME-6100ISLE/8/DIO
+       617f  ME-6100ISLE/16/DIO
+       6259  ME-6200I/9/DIO
+       6359  ME-6300I/9/DIO
+       810a  ME-8100A
+       810b  ME-8100B
+       820a  ME-8200A
+       820b  ME-8200B
+1b20  MStar Semiconductor, Inc.
+1b22  WiLinx Corp.
+1b26  Cellex Power Products, Inc.
+1b27  Current Electronics Inc.
+1b28  NAVIsis Inc.
+1b32  Ugobe Life Forms, Inc.
+       0064  Pleo robotic dinosaur
+1b36  ViXS Systems, Inc.
+1b3b  iPassion Technology Inc.
+       2933  PC Camera/Webcam controller
+       2935  PC Camera/Webcam controller
+       2936  PC Camera/Webcam controller
+       2937  PC Camera/Webcam controller
+       2938  PC Camera/Webcam controller
+       2939  PC Camera/Webcam controller
+       2950  PC Camera/Webcam controller
+       2951  PC Camera/Webcam controller
+       2952  PC Camera/Webcam controller
+       2953  PC Camera/Webcam controller
+       2955  PC Camera/Webcam controller
+       2956  PC Camera/Webcam controller
+       2957  PC Camera/Webcam controller
+       2958  PC Camera/Webcam controller
+       2959  PC Camera/Webcam controller
+       2960  PC Camera/Webcam controller
+       2961  PC Camera/Webcam controller
+       2962  PC Camera/Webcam controller
+       2963  PC Camera/Webcam controller
+       2965  PC Camera/Webcam controller
+       2966  PC Camera/Webcam controller
+       2967  PC Camera/Webcam controller
+       2968  PC Camera/Webcam controller
+       2969  PC Camera/Webcam controller
+1b3f  Generalplus Technology Inc.
+1b47  Energizer Holdings, Inc.
+       0001  CHUSB Duo Charger (NiMH AA/AAA USB smart charger)
+1b48  Plastron Precision Co., Ltd.
+1b59  K.S. Terminals Inc.
+1b5a  Chao Zhou Kai Yuan Electric Co., Ltd.
+1b65  The Hong Kong Standards and Testing Centre Ltd.
+1b72  ATERGI TECHNOLOGY CO., LTD.
+1b75  Ovislink Corp.
+       3072  AirLive WN-360USB adapter
+1b76  Legend Silicon Corp.
+1b80  Afatech
+       c810  AF9015 BDA Device
+1b86  Dongguan Guanshang Electronics Co., Ltd.
+1b88  ShenMing Electron (Dong Guan) Co., Ltd.
+1b8c  Altium Limited
+1b8d  e-MOVE Technology Co., Ltd.
+1b8e  Amlogic, Inc.
+1b8f  MA LABS, Inc.
+1b96  N-Trig
+       0001  Duosense Transparent Electromagnetic Digitizer
+1b98  YMax Communications Corp.
+1b99  Shenzhen Yuanchuan Electronic
+1ba1  JINQ CHERN ENTERPRISE CO., LTD.
+1ba2  Lite Metals & Plastic (Shenzhen) Co., Ltd.
+1ba4  Ember Corporation
+       0001  InSight USB Link
+1ba6  Abilis Systems
+1ba8  China Telecommunication Technology Labs
+1bad  Harmonix Music
+       0002  Guitar for Xbox 360
+       0003  Drum Kit for Xbox 360
+1bae  Vuzix Corporation
+       0002  VR920 Immersive Eyewear
+1bbb  T & A Mobile Phones
+1bc4  Ford Motor Co.
+1bc5  AVIXE Technology (China) Ltd.
+1bce  Contac Cable Industrial Limited
+1bcf  Sunplus Innovation Technology Inc.
+       0007  Optical Mouse
+1bd0  Hangzhou Riyue Electronic Co., Ltd.
+1bde  P-TWO INDUSTRIES, INC.
+1bef  Shenzhen Tongyuan Network-Communication Cables Co., Ltd
+1bf0  RealVision Inc.
+1bf5  Extranet Systems Inc.
+1bf6  Orient Semiconductor Electronics, Ltd.
+1bfd  TouchPack
+       1688  Resistive Touch Screen
+1c02  Kreton Corporation
+1c04  QNAP System Inc.
+1c0d  Relm Wireless
+1c10  Lanterra Industrial Co., Ltd.
+1c13  ALECTRONIC LIMITED
+1c1a  Datel Electronics Ltd.
+1c1b  Volkswagen of America, Inc.
+1c1f  Goldvish S.A.
+1c20  Fuji Electric Device Technology Co., Ltd.
+1c21  ADDMM LLC
+1c22  ZHONGSHAN CHIANG YU ELECTRIC CO., LTD.
+1c26  Shanghai Haiying Electronics Co., Ltd.
+1c27  HuiYang D & S Cable Co., Ltd.
+1c31  LS Cable Ltd.
+1c37  Authorizer Technologies, Inc.
+1c3d  NONIN MEDICAL INC.
+1c3e  Wep Peripherals
+1c49  Cherng Weei Technology Corp.
+1c4f  SiGma Micro
+       3000  Micro USB Web Camera
+1c6b  Philips & Lite-ON Digital Solutions Corporation
+1c6c  Skydigital Inc.
+1c73  AMT
+       861f  Anysee E30 USB 2.0 DVB-T Receiver
+1c77  Kaetat Industrial Co., Ltd.
+1c78  Datascope Corp.
+1c79  Unigen Corporation
+1c7a  LighTuning Technology Inc.
+1c7b  LUXSHARE PRECISION INDUSTRY (SHENZHEN) CO., LTD.
+1c87  2N TELEKOMUNIKACE a.s.
+1c88  Somagic, Inc.
+1c89  HONGKONG WEIDIDA ELECTRON LIMITED
+1c8e  ASTRON INTERNATIONAL CORP.
+1c98  ALPINE ELECTRONICS, INC.
+1ca0  ACCARIO Inc.
+1cac  Kinstone
+       a332  C8 Webcam
+       b288  C18 Webcam
+1cb3  Aces Electronic Co., Ltd.
+1cb4  OPEX CORPORATION
+1cbe  Luminary Micro Inc.
+1cbf  FORTAT SKYMARK INDUSTRIAL COMPANY
+1cc0  PlantSense
+1cca  NextWave Broadband Inc.
+1ccd  Bodatong Technology (Shenzhen) Co., Ltd.
+1cd4  adp corporation
+1cd5  Firecomms Ltd.
+1cd6  Antonio Precise Products Manufactory Ltd.
+1cde  Telecommunications Technology Association (TTA)
+1cdf  WonTen Technology Co., Ltd.
+1ce0  EDIMAX TECHNOLOGY CO., LTD.
+1ce1  Amphenol KAE
+1cfc  ANDES TECHNOLOGY CORPORATION
+1cfd  Flextronics Digital Design Japan, LTD.
+1d07  Solid-Motion
+1d08  NINGBO HENTEK DRAGON ELECTRONICS CO., LTD.
+1d09  TechFaith Wireless Technology Limited
+       1026  HSUPA Modem FLYING-LARK46-VER0.07 [Flying Angel]
+1d0a  Johnson Controls, Inc. The Automotive Business Unit
+1d0b  HAN HUA CABLE & WIRE TECHNOLOGY (J.X.) CO., LTD.
+1d14  ALPHA-SAT TECHNOLOGY LIMITED
+1d1f  Diostech Co., Ltd.
+1d20  SAMTACK INC.
+1d4d  PEGATRON CORPORATION
+       0002  Ralink RT2770/2720 802.11b/g/n Wireless LAN Mini-USB Device
+       000c  Ralink RT3070 802.11b/g/n Wireless Lan USB Device
+       000e  Ralink RT3070 802.11b/g/n Wireless Lan USB Device
+1d50  OpenMoko, Inc.
+1d5b  Smartronix, Inc.
+1d6b  Linux Foundation
+       0001  1.1 root hub
+       0002  2.0 root hub
+       0003  3.0 root hub
+       0100  PTP Gadget
+       0101  Audio Gadget
+1e0e  Qualcomm / Option
+1e10  Point Grey Research, Inc.
+       2004  Sony 1.3MP 1/3" ICX445 IIDC video camera [Chameleon]
+1e1f  INVIA
+1e29  Festo AG & Co. KG
+       0101  CPX Adapter
+       0401  iL3-TP
+1e41  Cleverscope
+1e54  TypeMatrix
+       2030  2030 USB Keyboard
+1e68  TrekStor GmbH & Co. KG
+       001b  DataStation maxi g.u
+1e71  NZXT
+       0001  Avatar Optical Mouse
+1e74  Coby Electronics Corporation
+       6511  MP705-8G MP3 player
+       6512  MP705-4G
+1e7d  ROCCAT
+       2ced  Kone Mouse
+1ebb  NuCORE Technology, Inc.
+1eda  AirTies Wireless Networks
+       2310  802.11n USB Wireless LAN Card
+1f28  Cal-Comp
+       0020  CDMA USB Modem A600
+       0021  CD INSTALLER USB Device
+1f87  Stantum
+2001  D-Link Corp. [hex]
+       0001  DWL-120 WIRELESS ADAPTER
+       0201  DHN-120 10Mb Home Phoneline Adapter
+       1a00  10/100 Ethernet
+       200c  10/100 Ethernet
+       3200  DWL-120 802.11b (Atmel RFMD503A) [usbvnetr]
+       3500  Elitegroup Computer Systems WLAN card WL-162
+       3700  DWL-122 802.11b
+       3701  DWL-G120 Spinnaker 802.11b
+       3702  DWL-120 rev F
+       3703  DWL-122 802.11b
+       3704  DWL-G122 802.11g rev. A2
+       3705  AirPlus G DWL-G120 Wireless Adapter(rev.C)
+       3761  IEEE 802.11g USB2.0 Wireless Network Adapter-PN
+       3a00  DWL-AG132
+       3a01  DWL-AG132 (no firmware)
+       3a02  DWL-G132
+       3a03  DWL-G132 (no firmware)
+       3a04  DWL-AG122
+       3a05  DWL-AG122 (no firmware)
+       3a80  AirPlus Xtreme G DWL-G132 Wireless Adapter
+       3a81  predator Bootloader Download
+       3a82  AirPremier AG DWL-AG132 Wireless Adapter
+       3a83  predator Bootloader Download
+       3b00  AirPlus DWL-120+ Wireless Adapter
+       3b01  WLAN Boot Device
+       3c00  DWL-G122 802.11g rev. B1 [ralink]
+       3c01  AirPlus AG DWL-AG122 Wireless Adapter
+       3c02  AirPlus G DWL-G122 Wireless Adapter
+       3c05  DUB-E100 Fast Ethernet [asix]
+       4000  DSB-650C Ethernet [klsi]
+       4001  DSB-650TX Ethernet [pegasus]
+       4002  DSB-650TX Ethernet [pegasus]
+       4003  DSB-650TX-PNA Ethernet [pegasus]
+       400b  10/100 Ethernet
+       4102  10/100 Ethernet
+       5100  DSL-200 ADSL ATM Modem
+       5102  DSL-200 ADSL Loader
+       5b00  Remote NDIS Network Device
+       9414  Cable Modem
+       9b00  Broadband Cable Modem Remote NDIS Device
+       abc1  DSB-650 Ethernet [pegasus]
+       f013  DLink 7 port USB2.0 Hub
+       f103  DUB-H7 7-port USB 2.0 hub
+       f10d  Accent Communications Modem
+       f110  DUB-AV300 A/V Capture
+       f111  DBT-122 Bluetooth adapter
+       f112  DUB-T210 Audio Device
+       f116  Formosa 2
+       f117  Formosa 3
+       f118  Formosa 4
+2013  Unknown (Pinnacle?)
+       0245  PCTV 73ESE
+       0246  PCTV 74E
+       0248  PCTV 282E
+2019  PLANEX
+       3220  GW-US11S WLAN
+       5303  GW-US54GXS 802.11bg
+       5304  GWUS300 802.11n
+       ab01  GW-US54HP
+       ab24  GW-US300MiniS
+       ab25  150N Wireless LAN USB Adapter
+       ab50  GW-US54Mini2
+       c002  GW-US54SG
+       c007  GW-US54GZL
+       ed02  GW-USMM
+2040  Hauppauge
+       0c80  Windham
+       0c90  Windham
+       1700  CataMount
+       1800  Okemo A
+       1801  Okemo B
+       2000  Tiger Minicard
+       2009  Tiger Minicard R2
+       200a  Tiger Minicard
+       2010  Tiger Minicard
+       2011  WinTV MiniCard [Dell Digital TV Receiver]
+       2019  Tiger Minicard
+       2400  WinTV PVR USB2 (Model 24019)
+       4700  WinTV Nova-S-USB2
+       4902  HD PVR
+       4982  HD PVR
+       5500  Windham
+       5510  Windham
+       5520  Windham
+       5530  Windham
+       5580  Windham
+       5590  Windham
+       6502  WinTV HVR-900
+       6503  WinTV HVR-930
+       6513  WinTV HVR-980
+       7050  Nova-T Stick
+       7060  Nova-T Stick 2
+       7070  Nova-T Stick 3
+       9300  WinTV NOVA-T USB2 (cold)
+       9301  WinTV NOVA-T USB2 (warm)
+       b910  Windham
+       b980  Windham
+       b990  Windham
+       c000  Windham
+       c010  Windham
+2047  Texas Instruments
+       0200  MSP430 USB HID Bootstrap Loader
+20b1  XMOS Ltd
+       10ad  XUSB Loader
+       f7d1  X2TAG - USB to JTAG interface
+20df  Simtec Electronics
+       0001  Entropy Key [UDEKEY01]
+2101  ActionStar
+       0201  SIIG 4-to-2 Printer Switch
+2162  Creative (?)
+       2031  Network Blaster Wireless Adapter
+       500c  DE5771 Modem Blaster
+       8001  Broadxent BritePort DSL Bridge 8010U
+21d6  Agecodagis SARL
+       0002  Seismic recorder [Tellus]
+2222  MacAlly
+       0004  iWebKey Keyboard
+       4050  AirStick joystick
+2227  SAMWOO Enterprise
+       3105  SKYDATA SKD-U100
+2233  RadioShack Corporation
+       6323  USB Electronic Scale
+22b8  Motorola PCS
+       0001  Wally 2.2 chipset
+       0002  Wally 2.4 chipset
+       0005  V.60c/V.60i GSM Phone
+       0830  2386C-HT820
+       0833  2386C-HT820 [Flash Mode]
+       0850  Bluetooth Device
+       1001  Patriot 1.0 (GSM) chipset
+       1002  Patriot 2.0 chipset
+       1005  T280e GSM/GPRS Phone
+       1101  Patriot 1.0 (TDMA) chipset
+       1801  Rainbow chipset flash
+       2035  Bluetooth Device
+       2805  GSM Modem
+       2821  T720 GSM Phone
+       2822  V.120e GSM Phone
+       2823  Flash Interface
+       2a01  MSM6050 chipset
+       2a02  CDMA modem
+       2a03  MSM6050 chipset flash
+       2a21  V710 GSM Phone (P2K)
+       2a22  V710 GSM Phone (AT)
+       2a23  MSM6100 chipset flash
+       2a41  MSM6300 chipset
+       2a42  Usb Modem
+       2a43  MSM6300 chipset flash
+       2a61  E815 GSM Phone (P2K)
+       2a62  E815 GSM Phone (AT)
+       2a63  MSM6500 chipset flash
+       2a81  MSM6025 chipset
+       2a83  MSM6025 chipset flash
+       2ac1  MSM6100 chipset
+       2ac3  MSM6100 chipset flash
+       3001  A835/E1000 GSM Phone (P2K)
+       3002  A835/E1000 GSM Phone (AT)
+       3801  C350L/C450 (P2K)
+       3802  C330/C350L/C450/EZX GSM Phone (AT)
+       3803  Neptune LT chipset flash
+       4001  OMAP 1.0 chipset
+       4002  A920/A925 UMTS Phone
+       4003  OMAP 1.0 chipset flash
+       4008  OMAP 1.0 chipset RDL
+       41d9  Motorola Droid
+       41db  Motorola Droid (USB Debug)
+       4204  MPx200 Smartphone
+       4214  MPc GSM
+       4224  MPx220 Smartphone
+       4234  MPc CDMA
+       4244  MPx100 Smartphone
+       4801  Neptune LTS chipset
+       4803  Neptune LTS chipset flash
+       4810  Triplet GSM Phone (storage)
+       4901  Triplet GSM Phone (P2K)
+       4902  Triplet GSM Phone (AT)
+       4903  Neptune LTE chipset flash
+       4a01  Neptune LTX chipset
+       4a03  Neptune LTX chipset flash
+       4a32  L6-imode Phone
+       5801  Neptune ULS chipset
+       5803  Neptune ULS chipset flash
+       5901  Neptune VLT chipset
+       5903  Neptune VLT chipset flash
+       6001  Dalhart EZX
+       6003  Dalhart flash
+       6004  EZX GSM Phone (CDC Net)
+       6006  MOTOROKR E6
+       6008  Dalhart RDL
+       6009  EZX GSM Phone (P2K)
+       600a  Dalhart EZX config 17
+       600b  Dalhart EZX config 18
+       600c  EZX GSM Phone (USBLAN)
+       6021  JUIX chipset
+       6023  JUIX chipset flash
+       6026  Flash RAM Downloader/miniOS
+       6027  USBLAN
+       604c  EZX GSM Phone (Storage)
+       6101  Talon integrated chipset
+       6401  Argon chipset
+       6403  Argon chipset flash
+       6415  ROKR Z6 (MTP mode)
+       6604  Washington CDMA Phone
+       6631  CDC Modem
+       7001  Q Smartphone
+22b9  eTurboTouch Technology, Inc.
+22ba  Technology Innovation Holdings, Ltd
+2304  Pinnacle Systems, Inc. [hex]
+       0109  Studio PCTV USB (SECAM)
+       0110  Studio PCTV USB (PAL)
+       0111  Miro PCTV USB
+       0112  Studio PCTV USB (NTSC) with FM radio
+       0201  Systems MovieBox Device
+       0204  MovieBox USB_B
+       0205  DVC 150B
+       0206  Systems MovieBox Deluxe Device
+       0207  Dazzle DVC90 Video Device
+       0208  Studio PCTV USB2
+       020e  PCTV 200e
+       020f  PCTV 400e BDA Device
+       0210  Studio PCTV USB (PAL) with FM radio
+       0212  Studio PCTV USB (NTSC)
+       0213  500-USB Device
+       0214  Studio PCTV USB (PAL) with FM radio
+       0216  PCTV 60e
+       0219  PCTV 260e
+       021a  Dazzle DVC100 Audio Device
+       021b  Dazzle DVC130/DVC170
+       021d  Dazzle DVC130
+       021e  Dazzle DVC170
+       021f  PCTV Sat HDTV Pro BDA Device
+       0222  PCTV Sat Pro BDA Device
+       0223  DazzleTV Sat BDA Device
+       0226  PCTV 330e
+       0227  PCTV for Mac, HD Stick
+       0228  PCTV DVB-T Flash Stick
+       022a  PCTV 160e
+       022b  PCTV 71e
+       0232  PCTV 170e
+       0237  PCTV nano stick
+       0300  Studio Linx Video input cable (NTSC)
+       0301  Studio Linx Video input cable (PAL)
+       0302  Dazzle DVC120
+       0419  PCTV Bungee USB (PAL) with FM radio
+       061d  PCTV Deluxe (NTSC) Device
+       061e  PCTV Deluxe (PAL) Device
+2318  Shining Technologies, Inc. [hex]
+       0011  CitiDISK Jr. IDE Enclosure
+2375  Digit@lway, Inc.
+       0001  Digital Audio Player
+2406  SANHO Digital Electronics Co., Ltd.
+       6688  PD7X Portable Storage
+2478  Tripp-Lite
+       2008  U209-000-R Serial Port
+2632  TwinMOS
+       3209  7-in-1 Card Reader
+2650  Electronics For Imaging, Inc. [hex]
+2730  Citizen
+       200f  CT-S310 Label printer
+2735  DigitalWay
+       0003  MPIO HS100
+       1001  MPIO FY200
+       1002  MPIO FL100
+       1003  MPIO FD100
+       1004  MPIO HD200
+       1005  MPIO HD300
+       1006  MPIO FG100
+       1007  MPIO FG130
+       1008  MPIO FY300
+       1009  MPIO FY400
+       100a  MPIO FL300
+       100b  MPIO HS200
+       100c  MPIO FL350
+       100d  MPIO FY500
+       100e  MPIO FY500
+       100f  MPIO FY600
+       1012  MPIO FL400
+       1013  MPIO HD400
+       1014  MPIO HD400
+       1016  MPIO FY700
+       1017  MPIO FY700
+       1018  MPIO FY800
+       1019  MPIO FY800
+       101a  MPIO FY900
+       101b  MPIO FY900
+       102b  MPIO FL500
+       102c  MPIO FL500
+       103f  MPIO FY570
+       1040  MPIO FY570
+       1041  MPIO FY670
+       1042  MPIO FY670
+       1043  HCT HMD-180A
+       1044  HCT HMD-180A
+2770  NHJ, Ltd
+       0a01  ScanJet 4600 series
+       905c  Che-Ez Snap SNAP-U/Digigr8/Soundstar TDC-35
+       9060  A130
+       9120  Che-ez! Snap / iClick Tiny VGA Digital Camera
+       9130  TCG 501
+       913c  Argus DC-1730
+       9150  Mini Cam
+       9153  iClick 5X
+       915d  Cyberpix S-210S / Little Tikes My Real Digital Camera
+       930b  CCD Webcam(PC370R)
+       930c  CCD Webcam(PC370R)
+2821  Unknown
+       3300  Wireless Adapter
+2899  Toptronic Industrial Co., Ltd
+       012c  Camera Device
+2c02  Planex Communications
+       14ea  GW-US11H WLAN
+2fb2  Fujitsu, Ltd
+3125  Eagletron
+       0001  TrackerPod Camera Stand
+3176  Whanam Electronics Co., Ltd
+3275  VidzMedia Pte Ltd
+       4fb1  MonsterTV P2H
+3334  AEI
+       1701  Fast Ethernet
+3340  Yakumo
+       043a  Mio A701 DigiWalker PPCPhone
+       0e3a  Pocket PC 300 GPS SL / Typhoon MyGuide 3500
+       a0a3  deltaX 5 BT (D) PDA
+3504  Micro Star
+       f110  Security Key
+3538  Power Quotient International Co., Ltd
+       0001  Travel Flash
+       0015  Mass Storge Device
+       0022  Hi-Speed Mass Storage Device
+       0042  Cool Drive U339 Flash Disk
+       0054  Flash Drive (2GB)
+3579  DIVA
+       6901  Media Reader
+3636  InVibro
+3838  WEM
+       0001  5-in-1 Card Reader
+3923  National Instruments Corp.
+       12c0  DAQPad-6020E
+       12d0  DAQPad-6507
+       12e0  NI 4350
+       12f0  NI 5102
+       1750  DAQPad-6508
+       17b0  USB-ISA-Bridge
+       1820  DAQPad-6020E (68 pin I/O)
+       1830  DAQPad-6020E (BNC)
+       1f00  DAQPad-6024E
+       1f10  DAQPad-6024E
+       1f20  DAQPad-6025E
+       1f30  DAQPad-6025E
+       1f40  DAQPad-6036E
+       1f50  DAQPad-6036E
+       2f80  DAQPad-6052E
+       2f90  DAQPad-6052E
+       702b  GPIB-USB-B
+       703c  USB-485 RS485 Cable
+       709b  GPIB-USB-HS
+       7254  NI MIO (data acquisition card) firmware updater
+       729e  USB-6251 (OEM) data acquisition card
+40bb  I-O Data
+       0a09  USB2.0-SCSI Bridge USB2-SC
+4101  i-rocks
+       1301  IR-2510 usb phone
+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
+       1014  T20 series mp3/ogg vorbis player (ums firmware)
+       1041  E100 (ums)
+       1101  iFP-100 series mp3 player (ums firmware)
+       1103  iFP-300 series mp3 player (ums firmware)
+       1105  iFP-500 series mp3 player (ums firmware)
+       1113  T10 (alternate)
+       1117  T10
+       1119  T30 series mp3/ogg/wma player
+       1141  E100 (mtp)
+       2002  H10 6GB
+       2101  H10 20GB (mtp)
+       2102  H10 5GB (mtp)
+       2105  H10 5/6GB (mtp)
+413c  Dell Computer Corp.
+       0058  Port Replicator
+       1001  Keyboard Hub
+       1002  Keyboard Hub
+       1003  Keyboard Hub
+       1005  Multimedia Pro Keyboard Hub
+       2001  Keyboard HID Support
+       2002  SK-8125 Keyboard
+       2003  Keyboard
+       2005  RT7D50 Keyboard
+       2011  Multimedia Pro Keyboard
+       2100  SK-3106 Keyboard
+       2101  SmartCard Reader Keyboard
+       2105  Model L100 Keyboard
+       2106  Dell QuietKey Keyboard
+       2500  DRAC4 Remote Access Card
+       3010  Optical Wheel Mouse
+       3012  Optical Wheel Mouse
+       3016  Optical 5-Button Wheel Mouse
+       3200  Mouse
+       4001  Axim X5
+       4002  Axim X3
+       4003  Axim X30
+       4004  Axim Sync
+       4005  Axim Sync
+       4006  Axim Sync
+       4007  Axim Sync
+       4008  Axim Sync
+       4009  Axim Sync
+       4011  Axim X51v
+       5103  AIO Printer A940
+       5105  AIO Printer A920
+       5107  AIO Printer A960
+       5109  Photo AIO Printer 922
+       5110  Photo AIO Printer 962
+       5111  Photo AIO Printer 942
+       5112  Photo AIO Printer 924
+       5113  Photo AIO Printer 944
+       5114  Photo AIO Printer 964
+       5115  Photo AIO Printer 926
+       5116  AIO Printer 946
+       5117  Photo AIO Printer 966
+       5118  AIO 810
+       5124  Laser MFP 1815
+       5128  Photo AIO 928
+       5200  Laser Printer
+       5202  Printing Support
+       5203  Printing Support
+       5210  Printing Support
+       5211  Printing Support
+       5220  Laser MFP 1600n
+       5225  Printing Support
+       5226  Printing Support
+       5300  Laser Printer
+       5400  Laser Printer
+       5401  Laser Printer
+       5601  Laser Printer 3100cn
+       5602  Laser Printer 3000cn
+       5631  Laser Printer 5100cn
+       5905  Printing Support
+       8000  BC02 Bluetooth Adapter
+       8010  TrueMobile Bluetooth Module in
+       8100  TrueMobile 1180 802.11b Adapter
+       8102  TrueMobile 1300 USB2.0 WLAN Card
+       8103  Wireless 350 Bluetooth
+       8104  Wireless 1450 Dual-band (802.11a/b/g) USB2.0 Adapter
+       8105  U2 in HID - Driver
+       8106  Wireless 350 Bluetooth Internal Card in
+       8110  Wireless 3xx Bluetooth Internal Card
+       8111  Wireless 3xx Bluetooth Internal Card in
+       8114  Wireless 5700 Mobile Broadband (CDMA EV-DO) Minicard Modem
+       8115  Wireless 5500 Mobile Broadband (3G HSDPA) Minicard Modem
+       8116  Wireless 5505 Mobile Broadband (3G HSDPA) Minicard Modem
+       8117  Wireless 5700 Mobile Broadband (CDMA EV-DO) Expresscard Modem
+       8118  Wireless 5510 Mobile Broadband (3G HSDPA) Expresscard Status Port
+       8120  Bluetooth adapter
+       8121  Eastfold in HID
+       8122  Eastfold in DFU
+       8123  eHome Infrared Receiver
+       8124  eHome Infrared Receiver
+       8126  Wireless 355 Bluetooth
+       8127  Wireless 355 Module with Bluetooth 2.0 + EDR Technology.
+       8128  Wireless 5700-Sprint Mobile Broadband (CDMA EV-DO) Mini-Card Status Port
+       8129  Wireless 5700-Telus Mobile Broadband (CDMA EV-DO) Mini-Card Status Port
+       8131  Wireless 360 Bluetooth 2.0 + EDR module.
+       8133  Wireless 5720 VZW Mobile Broadband (EVDO Rev-A) Minicard GPS Port
+       8134  Wireless 5720 Sprint Mobile Broadband (EVDO Rev-A) Minicard Status Port
+       8135  Wireless 5720 TELUS Mobile Broadband (EVDO Rev-A) Minicard Diagnostics Port
+       8136  Wireless 5520 Cingular Mobile Broadband (3G HSDPA) Minicard Diagnostics Port
+       8137  Wireless 5520 Voda L Mobile Broadband (3G HSDPA) Minicard Status Port
+       8138  Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard EAP-SIM Port
+       8140  Wireless 360 Bluetooth
+       8142  Mobile 360 in DFU
+       8156  Wireless 370 Bluetooth Mini-card
+       8157  Integrated Keyboard
+       8158  Integrated Touchpad / Trackstick
+       8501  Bluetooth Adapter
+       9500  USB CP210x UART Bridge Controller [DW700]
+       a001  Hub
+       a005  Internal 2.0 Hub
+       a700  Hub (in 1905FP LCD Monitor)
+4146  USBest Technology
+       9281  Iomega Micro Mini 128MB Flash Drive
+       ba01  Intuix Flash Drive
+4242  USB Design by Example
+       4201  Buttons and Lights HID device
+       4220  Echo 1 Camera
+4348  WinChipHead
+       5523  USB->RS 232 adapter with Prolifec PL 2303 chipset
+       5537  13.56Mhz RFID Card Reader and Writer
+       5584  CH34x printer adapter cable
+4572  Shuttle, Inc.
+       4572  Shuttle PN31 Remote
+4586  Panram
+       1026  Crystal Bar Flash Drive
+4670  EMS Production
+       9394  Game Cube USB Memory Adaptor 64M
+4752  Miditech
+       0011  Midistart-2
+4766  Aceeca
+       0001  MEZ1000 RDA
+4855  Memorex
+       7288  Ultra Traveldrive 160G 2.5" HDD
+4971  SimpleTech
+       cb01  SP-U25/120G
+       ce17  1TB SimpleDrive II USB External Hard Drive
+5032  Grandtec
+       0bb8  Grandtec USB1.1 DVB-T (cold)
+       0bb9  Grandtec USB1.1 DVB-T (warm)
+       0fa0  Grandtec USB1.1 DVB-T (cold)
+       0fa1  Grandtec USB1.1 DVB-T (warm)
+5041  Linksys (?)
+       2234  WUSB54G 802.11g Adapter
+50c2  Averatec (?)
+       4013  WLAN Adapter
+5173  Sweex
+       1809  ZD1211
+5345  Owon
+       1234  PDS6062T Oscilloscope
+544d  Transmeta Corp.
+5543  UC-Logic Technology Corp.
+       0002  SuperPen WP3325U Tablet
+       0003  Genius MousePen 4x3 Tablet/Aquila L1 Tablet
+       0004  Genius MousePen 5x4 Tablet
+       0005  Genius MousePen 8x6 Tablet
+       0041  Genius PenSketch 6x8 Tablet
+       0042  Genius PenSketch 12x9 Tablet
+5555  Epiphan Systems Inc.
+       1110  VGA2USB
+       1120  KVM2USB
+       2222  DVI2USB
+       3333  VGA2USB Pro
+       3337  KVM2USB Pro
+       3340  VGA2USB LR
+       3344  KVM2USB LR
+       3411  DVI2USB Solo
+       3422  DVI2USB Duo
+55aa  OnSpec Electronic, Inc.
+       0015  Hard Drive
+       0102  SuperDisk
+       0103  IDE Hard Drive
+       0201  DDI to Reader-19
+       1234  ATAPI Bridge
+       a103  Sandisk SDDR-55 SmartMedia Card Reader
+       b000  USB to CompactFlash Card Reader
+       b004  OnSpec MMC/SD Reader/Writer
+       b00b  USB to Memory Stick Card Reader
+       b00c  USB to SmartMedia Card Reader
+       b012  Mitsumi FA402M 8-in-2 Card Reader
+       b200  Compact Flash Reader
+       b204  MMC/ SD Reader
+       b207  Memory Stick Reader
+595a  IRTOUCHSYSTEMS Co. Ltd.
+       0001  Touchscreen
+5986  Acer, Inc
+       0100  Orbicam
+       0101  USB2.0 Camera
+       0102  Crystal Eye Webcam
+       0200  OrbiCam
+       0203  BisonCam NB Pro 1300
+5a57  Zinwell
+       0260  RT2570
+       0280  802.11a/b/g/n USB Wireless LAN Card
+       0282  802.11b/g/n USB Wireless LAN Card
+       0283  802.11b/g/n USB Wireless LAN Card
+       0284  802.11a/b/g/n USB Wireless LAN Card
+       5257  Metronic 495257 wifi 802.11ng
+6189  Sitecom
+       182d  USB 2.0 Ethernet
+       2068  USB to serial cable (v2)
+6253  TwinHan Technology Co., Ltd
+       0100  Ir reciver f. remote control
+636c  CoreLogic, Inc.
+6547  Arkmicro Technologies Inc.
+       0232  ARK3116 Serial
+6615  IRTOUCHSYSTEMS Co. Ltd.
+       0001  Touchscreen
+6666  Prototype product Vendor ID
+       0667  WiseGroup Smart Joy PSX, PS-PC Smart JoyPad
+       2667  JCOP BlueZ Smartcard reader
+       8804  WiseGroup SuperJoy Box 5
+6891  3Com
+       a727  3CRUSB10075 802.11bg
+6993  Freshtel
+       b001  FT-102 VoIP USB Phone
+6a75  Shanghai Jujo Electronics Co., Ltd
+7104  CME (Central Music Co.)
+       2202  UF5/UF6/UF7/UF8 MIDI Master Keyboard
+7392  Edimax Technology Co., Ltd
+       7711  EW-7711UTn nLite Wireless USB Adapter
+       7717  EW-7717UN 802.11n Wireless USB Adapter
+       7718  EW-7718UN 802.11n Wireless USB Adapter
+8086  Intel Corp.
+       0001  AnyPoint (TM) Home Network 1.6 Mbps Wireless Adapter
+       0100  Personal Audio Player 3000
+       0101  Personal Audio Player 3000
+       0110  Easy PC Camera
+       0120  PC Camera CS120
+       0200  AnyPoint(TM) Wireless II Network 11Mbps Adapter
+       0431  Intel Pro Video PC Camera
+       0510  Digital Movie Creator
+       0630  Pocket PC Camera
+       0780  CS780 Microphone Input
+       07d3  BLOB boot loader firmware
+       0dad  Cherry MiniatureCard Keyboard
+       1010  AnyPoint(TM) Home Network 10 Mbps Phoneline Adapter
+       110a  Bluetooth Controller from (Ericsson P4A)
+       110b  Bluetooth Controller from (Intel/CSR)
+       1110  PRO/Wireless LAN Module
+       1111  PRO/Wireless 2011B 802.11b Adapter
+       1134  Hollister Mobile Monitor
+       1139  In-Target Probe (ITP)
+       1234  Prototype Reader/Writer
+       3100  PRO/DSL 3220 Modem - WAN
+       3101  PRO/DSL 3220 Modem
+       3240  AnyPoint® 3240 Modem - WAN
+       3241  AnyPoint® 3240 Modem
+       8602  Miniature Card Slot
+       9303  Intel 8x930Hx Hub
+       9890  82930 Test Board
+       beef  SCM Miniature Card Reader/Writer
+       c013  Wireless HID Station
+       f001  XScale PXA27x Bulverde flash
+       f1a5  Z-U130 [Value Solid State Drive]
+8087  Intel Corp.
+       0020  Integrated Rate Matching Hub
+8341  EGO Systems, Inc.
+       2000  Flashdisk
+9016  Sitecom
+       182d  WL-022 802.11b Adapter
+9148  GeoLab, Ltd
+# All of GeoLab's devices share the same ID 0004.
+       0004  R3 Compatible Device
+9710  MosChip Semiconductor
+       7703  MCS7703 Serial Port Adapter
+       7705  Printer cable
+       7715  Printer cable
+       7780  MS7780 4Mbps Fast IRDA Adapter
+       7830  MCS7830 Ethernet
+99fa  Grandtec
+       8988  V.cap Camera Device
+a128  AnMo Electronics Corp. / Dino-Lite (?)
+       0610  Dino-Lite Digital Microscope (SN9C201 + HV7131R)
+       0611  Dino-Lite Digital Microscope (SN9C201 + HV7131R)
+       0612  Dino-Lite Digital Microscope (SN9C120 + HV7131R)
+       0613  Dino-Lite Digital Microscope (SN9C201 + HV7131R)
+       0614  Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111)
+       0615  Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111)
+       0616  Dino-Lite Digital Microscope (SN9C120 + HV7131R)
+       0617  Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111)
+       0618  Dino-Lite Digital Microscope (SN9C201 + HV7131R)
+a168  AnMo Electronics Corporation
+       0610  Dino-Lite Digital Microscope
+       0611  Dino-Lite Digital Microscope
+       0613  Dino-Lite Digital Microscope
+       0614  Dino-Lite Pro Digital Microscope
+       0615  Dino-Lite Pro Digital Microscope
+       0617  Dino-Lite Pro Digital Microscope
+       0618  Dino-Lite Digital Microscope
+a600  Asix
+       e110  OK1ZIA Davac 4.x
+a727  3Com
+       6893  AR5523
+       6895  AR5523
+       6897  AR5523
+abcd  Unknown
+       cdee  Petcam
+c251  Keil Software, Inc.
+       2710  ULink
+cace  CACE Technologies Inc.
+       0002  AirPCAP Classic 802.11 packet capture adapter
+d209  Ultimarc
+       0301  I-PAC Arcade Control Interface
+       0501  Ultra-Stik Ultimarc Ultra-Stik Player 1
+e4e4  Xorcom Ltd.
+       1130  Astribank series
+       1131  Astribank series
+       1132  Astribank series
+       1140  Astribank series
+       1141  Astribank series
+       1142  Astribank series
+       1150  Astribank series
+       1151  Astribank series
+       1152  Astribank series
+       1160  Astribank 2 series
+       1161  Astribank 2 series
+       1162  Astribank 2 series
+eb03  MakingThings
+       0920  Make Controller Kit
+eb1a  eMPIA Technology, Inc.
+       17de  KWorld V-Stream XPERT DTV - DVB-T USB cold
+       17df  KWorld V-Stream XPERT DTV - DVB-T USB warm
+       2710  SilverCrest Webcam
+       2750  ECS Elitegroup G220 integrated Webcam
+       2761  EeePC 701 integrated Webcam
+       2800  Terratec Cinergy 200
+       2801  GrabBeeX+ Video Encoder
+       2870  Pinnacle PCTV Stick
+       50a3  Gadmei UTV380 TV Box
+       50a6  Gadmei UTV330 TV Box
+eb2a  KWorld
+f003  Hewlett Packard
+       6002  PhotoSmart C500
+
+# List of known device classes, subclasses and protocols
+
+# Syntax:
+# C class  class_name
+#      subclass  subclass_name                 <-- single tab
+#              protocol  protocol_name         <-- two tabs
+
+C 00  (Defined at Interface level)
+C 01  Audio
+       01  Control Device
+       02  Streaming
+       03  MIDI Streaming
+C 02  Communications
+       01  Direct Line
+       02  Abstract (modem)
+               00  None
+               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
+       0c  Ethernet Emulation
+               07  Ethernet Emulation (EEM)
+C 03  Human Interface Device
+       00  No Subclass
+               00  None
+               01  Keyboard
+               02  Mouse
+       01  Boot Interface Subclass
+               00  None
+               01  Keyboard
+               02  Mouse
+C 05  Physical Interface Device
+C 06  Imaging
+       01  Still Image Capture
+               01  Picture Transfer Protocol (PIMA 15470)
+C 07  Printer
+       01  Printer
+               00  Reserved/Undefined
+               01  Unidirectional
+               02  Bidirectional
+               03  IEEE 1284.4 compatible bidirectional
+               ff  Vendor Specific
+C 08  Mass Storage
+       01  RBC (typically Flash)
+               00  Control/Bulk/Interrupt
+               01  Control/Bulk
+               50  Bulk (Zip)
+       02  SFF-8020i, MMC-2 (ATAPI)
+       03  QIC-157
+       04  Floppy (UFI)
+               00  Control/Bulk/Interrupt
+               01  Control/Bulk
+               50  Bulk (Zip)
+       05  SFF-8070i
+       06  SCSI
+               00  Control/Bulk/Interrupt
+               01  Control/Bulk
+               50  Bulk (Zip)
+C 09  Hub
+       00  Unused
+               00  Full speed (or root) hub
+               01  Single TT
+               02  TT per port
+C 0a  CDC 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
+               02  Ultra WideBand Radio Control
+               03  RNDIS
+       02  Wireless USB Wire Adapter
+               01  Host Wire Adapter Control/Data Streaming
+               02  Device Wire Adapter Control/Data Streaming
+               03  Device Wire Adapter Isochronous Streaming
+C ef  Miscellaneous Device
+       01  ?
+               01  Microsoft ActiveSync
+               02  Palm Sync
+       02  ?
+               01  Interface Association
+               02  Wire Adapter Multifunction Peripheral
+       03  ?
+               01  Cable Based Association
+C fe  Application Specific Interface
+       01  Device Firmware Update
+       02  IRDA Bridge
+       03  Test and Measurement
+               01  TMC
+               02  USB488
+C ff  Vendor Specific Class
+       ff  Vendor Specific Subclass
+               ff  Vendor Specific Protocol
+
+# List of Audio Class Terminal Types
+
+# Syntax:
+# AT terminal_type  terminal_type_name
+
+AT 0100  USB Undefined
+AT 0101  USB Streaming
+AT 01ff  USB Vendor Specific
+AT 0200  Input Undefined
+AT 0201  Microphone
+AT 0202  Desktop Microphone
+AT 0203  Personal Microphone
+AT 0204  Omni-directional Microphone
+AT 0205  Microphone Array
+AT 0206  Processing Microphone Array
+AT 0300  Output Undefined
+AT 0301  Speaker
+AT 0302  Headphones
+AT 0303  Head Mounted Display Audio
+AT 0304  Desktop Speaker
+AT 0305  Room Speaker
+AT 0306  Communication Speaker
+AT 0307  Low Frequency Effects Speaker
+AT 0400  Bidirectional Undefined
+AT 0401  Handset
+AT 0402  Headset
+AT 0403  Speakerphone, no echo reduction
+AT 0404  Echo-suppressing speakerphone
+AT 0405  Echo-canceling speakerphone
+AT 0500  Telephony Undefined
+AT 0501  Phone line
+AT 0502  Telephone
+AT 0503  Down Line Phone
+AT 0600  External Undefined
+AT 0601  Analog Connector
+AT 0602  Digital Audio Interface
+AT 0603  Line Connector
+AT 0604  Legacy Audio Connector
+AT 0605  SPDIF interface
+AT 0606  1394 DA stream
+AT 0607  1394 DV stream soundtrack
+AT 0700  Embedded Undefined
+AT 0701  Level Calibration Noise Source
+AT 0702  Equalization Noise
+AT 0703  CD Player
+AT 0704  DAT
+AT 0705  DCC
+AT 0706  MiniDisc
+AT 0707  Analog Tape
+AT 0708  Phonograph
+AT 0709  VCR Audio
+AT 070a  Video Disc Audio
+AT 070b  DVD Audio
+AT 070c  TV Tuner Audio
+AT 070d  Satellite Receiver Audio
+AT 070e  Cable Tuner Audio
+AT 070f  DSS Audio
+AT 0710  Radio Receiver
+AT 0711  Radio Transmitter
+AT 0712  Multitrack Recorder
+AT 0713  Synthesizer
+
+# List of HID Descriptor Types
+
+# Syntax:
+# HID descriptor_type  descriptor_type_name
+
+HID 21  HID
+HID 22  Report
+HID 23  Physical
+
+# List of HID Descriptor Item Types
+# Note: 2 bits LSB encode data length following
+
+# Syntax:
+# R item_type  item_type_name
+
+R 04  Usage Page
+R 08  Usage
+R 14  Logical Minimum
+R 18  Usage Minimum
+R 24  Logical Maximum
+R 28  Usage Maximum
+R 34  Physical Minimum
+R 38  Designator Index
+R 44  Physical Maximum
+R 48  Designator Minimum
+R 54  Unit Exponent
+R 58  Designator Maximum
+R 64  Unit
+R 74  Report Size
+R 78  String Index
+R 80  Input
+R 84  Report ID
+R 88  String Minimum
+R 90  Output
+R 94  Report Count
+R 98  String Maximum
+R a0  Collection
+R a4  Push
+R a8  Delimiter
+R b0  Feature
+R b4  Pop
+R c0  End Collection
+
+# List of Physical Descriptor Bias Types
+
+# Syntax:
+# BIAS item_type  item_type_name
+
+BIAS 0  Not Applicable
+BIAS 1  Right Hand
+BIAS 2  Left Hand
+BIAS 3  Both Hands
+BIAS 4  Either Hand
+
+# List of Physical Descriptor Item Types
+
+# Syntax:
+# PHY item_type  item_type_name
+
+PHY 00  None
+PHY 01  Hand
+PHY 02  Eyeball
+PHY 03  Eyebrow
+PHY 04  Eyelid
+PHY 05  Ear
+PHY 06  Nose
+PHY 07  Mouth
+PHY 08  Upper Lip
+PHY 09  Lower Lip
+PHY 0a  Jaw
+PHY 0b  Neck
+PHY 0c  Upper Arm
+PHY 0d  Elbow
+PHY 0e  Forearm
+PHY 0f  Wrist
+PHY 10  Palm
+PHY 11  Thumb
+PHY 12  Index Finger
+PHY 13  Middle Finger
+PHY 14  Ring Finger
+PHY 15  Little Finger
+PHY 16  Head
+PHY 17  Shoulder
+PHY 18  Hip
+PHY 19  Waist
+PHY 1a  Thigh
+PHY 1b  Knee
+PHY 1c  calf
+PHY 1d  Ankle
+PHY 1e  Foot
+PHY 1f  Heel
+PHY 20  Ball of Foot
+PHY 21  Big Toe
+PHY 22  Second Toe
+PHY 23  Third Toe
+PHY 24  Fourth Toe
+PHY 25  Fifth Toe
+PHY 26  Brow
+PHY 27  Cheek
+
+# List of HID Usages
+
+# Syntax:
+# HUT hi  _usage_page  hid_usage_page_name
+#      hid_usage  hid_usage_name
+
+HUT 00  Undefined
+HUT 01  Generic Desktop Controls
+       000  Undefined
+       001  Pointer
+       002  Mouse
+       004  Joystick
+       005  Gamepad
+       006  Keyboard
+       007  Keypad
+       008  Multi-Axis Controller
+       030  Direction-X
+       031  Direction-Y
+       032  Direction-Z
+       033  Rotate-X
+       034  Rotate-Y
+       035  Rotate-Z
+       036  Slider
+       037  Dial
+       038  Wheel
+       039  Hat Switch
+       03a  Counted Buffer
+       03b  Byte Count
+       03c  Motion Wakeup
+       03d  Start
+       03e  Select
+       040  Vector-X
+       041  Vector-Y
+       042  Vector-Z
+       043  Vector-X relative Body
+       044  Vector-Y relative Body
+       045  Vector-Z relative Body
+       046  Vector
+       080  System Control
+       081  System Power Down
+       082  System Sleep
+       083  System Wake Up
+       084  System Context Menu
+       085  System Main Menu
+       086  System App Menu
+       087  System Menu Help
+       088  System Menu Exit
+       089  System Menu Select
+       08a  System Menu Right
+       08b  System Menu Left
+       08c  System Menu Up
+       08d  System Menu Down
+       090  Direction Pad Up
+       091  Direction Pad Down
+       092  Direction Pad Right
+       093  Direction Pad Left
+HUT 02  Simulation Controls
+       000  Undefined
+       001  Flight Simulation Device
+       002  Automobile Simulation Device
+       003  Tank Simulation Device
+       004  Spaceship Simulation Device
+       005  Submarine Simulation Device
+       006  Sailing Simulation Device
+       007  Motorcycle Simulation Device
+       008  Sports Simulation Device
+       009  Airplane Simualtion Device
+       00a  Helicopter Simulation Device
+       00b  Magic Carpet Simulation Device
+       00c  Bicycle Simulation Device
+       020  Flight Control Stick
+       021  Flight Stick
+       022  Cyclic Control
+       023  Cyclic Trim
+       024  Flight Yoke
+       025  Track Control
+       0b0  Aileron
+       0b1  Aileron Trim
+       0b2  Anti-Torque Control
+       0b3  Autopilot Enable
+       0b4  Chaff Release
+       0b5  Collective Control
+       0b6  Dive Break
+       0b7  Electronic Countermeasures
+       0b8  Elevator
+       0b9  Elevator Trim
+       0ba  Rudder
+       0bb  Throttle
+       0bc  Flight COmmunications
+       0bd  Flare Release
+       0be  Landing Gear
+       0bf  Toe Break
+       0c0  Trigger
+       0c1  Weapon Arm
+       0c2  Weapons Select
+       0c3  Wing Flaps
+       0c4  Accelerator
+       0c5  Brake
+       0c6  Clutch
+       0c7  Shifter
+       0c8  Steering
+       0c9  Turret Direction
+       0ca  Barrel Elevation
+       0cb  Drive Plane
+       0cc  Ballast
+       0cd  Bicylce Crank
+       0ce  Handle Bars
+       0cf  Front Brake
+       0d0  Rear Brake
+HUT 03  VR Controls
+       000  Unidentified
+       001  Belt
+       002  Body Suit
+       003  Flexor
+       004  Glove
+       005  Head Tracker
+       006  Head Mounted Display
+       007  Hand Tracker
+       008  Oculometer
+       009  Vest
+       00a  Animatronic Device
+       020  Stereo Enable
+       021  Display Enable
+HUT 04  Sport Controls
+       000  Unidentified
+       001  Baseball Bat
+       002  Golf Club
+       003  Rowing Machine
+       004  Treadmill
+       030  Oar
+       031  Slope
+       032  Rate
+       033  Stick Speed
+       034  Stick Face Angle
+       035  Stick Heel/Toe
+       036  Stick Follow Through
+       038  Stick Type
+       039  Stick Height
+       047  Stick Temp
+       050  Putter
+       051  1 Iron
+       052  2 Iron
+       053  3 Iron
+       054  4 Iron
+       055  5 Iron
+       056  6 Iron
+       057  7 Iron
+       058  8 Iron
+       059  9 Iron
+       05a  10 Iron
+       05b  11 Iron
+       05c  Sand Wedge
+       05d  Loft Wedge
+       05e  Power Wedge
+       05f  1 Wood
+       060  3 Wood
+       061  5 Wood
+       062  7 Wood
+       063  9 Wood
+HUT 05  Game Controls
+       000  Undefined
+       001  3D Game Controller
+       002  Pinball Device
+       003  Gun Device
+       020  Point Of View
+       021  Turn Right/Left
+       022  Pitch Right/Left
+       023  Roll Forward/Backward
+       024  Move Right/Left
+       025  Move Forward/Backward
+       026  Move Up/Down
+       027  Lean Right/Left
+       028  Lean Forward/Backward
+       029  Height of POV
+       02a  Flipper
+       02b  Secondary Flipper
+       02c  Bump
+       02d  New Game
+       02e  Shoot Ball
+       02f  Player
+       030  Gun Bolt
+       031  Gun Clip
+       032  Gun Selector
+       033  Gun Single Shot
+       034  Gun Burst
+       035  Gun Automatic
+       036  Gun Safety
+       037  Gamepad Fire/Jump
+       038  Gamepad Fun
+       039  Gamepad Trigger
+HUT 07  Keyboard
+       000  No Event
+       001  Keyboard ErrorRollOver
+       002  Keyboard POSTfail
+       003  Keyboard Error Undefined
+       004  A
+       005  B
+       006  C
+       007  D
+       008  E
+       009  F
+       00a  G
+       00b  H
+       00c  I
+       00d  J
+       00e  K
+       00f  L
+       010  M
+       011  N
+       012  O
+       013  P
+       014  Q
+       015  R
+       016  S
+       017  T
+       018  U
+       019  V
+       01a  W
+       01b  X
+       01c  Y
+       01d  Z
+       01e  1 and ! (One and Exclamation)
+       01f  2 and @ (2 and at)
+       020  3 and # (3 and Hash)
+       021  4 and $ (4 and Dollar Sign)
+       022  5 and % (5 and Percent Sign)
+       023  6 and ^ (6 and circumflex)
+       024  7 and & (Seven and Ampersand)
+       025  8 and * (Eight and asterisk)
+       026  9 and ( (Nine and Parenthesis Left)
+       027  0 and ) (Zero and Parenthesis Right)
+       028  Return (Enter)
+       029  Escape
+       02a  Delete (Backspace)
+       02b  Tab
+       02c  Space Bar
+       02d  - and _ (Minus and underscore)
+       02e  = and + (Equal and Plus)
+       02f  [ and { (Bracket and Braces Left)
+       030  ] and } (Bracket and Braces Right)
+       031  \ and | (Backslash and Bar)
+       032  # and ~ (Hash and Tilde, Non-US Keyboard near right shift)
+       033  ; and : (Semicolon and Colon)
+       034  Â´ and " (Accent Acute and Double Quotes)
+       035  ` and ~ (Accent Grace and Tilde)
+       036  , and < (Comma and Less)
+       037  . and > (Period and Greater)
+       038  / and ? (Slash and Question Mark)
+       039  Caps Lock
+       03a  F1
+       03b  F2
+       03c  F3
+       03d  F4
+       03e  F5
+       03f  F6
+       040  F7
+       041  F8
+       042  F9
+       043  F10
+       044  F11
+       045  F12
+       046  Print Screen
+       047  Scroll Lock
+       048  Pause
+       049  Insert
+       04a  Home
+       04b  Page Up
+       04c  Delete Forward (without Changing Position)
+       04d  End
+       04e  Page Down
+       04f  Right Arrow
+       050  Left Arrow
+       051  Down Arrow
+       052  Up Arrow
+       053  Num Lock and Clear
+       054  Keypad / (Division Sign)
+       055  Keypad * (Multiplication Sign)
+       056  Keypad - (Subtraction Sign)
+       057  Keypad + (Addition Sign)
+       058  Keypad Enter
+       059  Keypad 1 and END
+       05a  Keypad 2 and Down Arrow
+       05b  Keypad 3 and Page Down
+       05c  Keypad 4 and Left Arrow
+       05d  Keypad 5 (Tactilei Raised)
+       05f  Keypad 6 and Right Arrow
+       060  Keypad 7 and Home
+       061  Keypad 8 and Up Arrow
+       062  Keypad 8 and Page Up
+       063  Keypad . (decimal delimiter) and Delete
+       064  \ and | (Backslash and Bar, UK and Non-US Keyboard near left shift)
+       065  Keyboard Application (Windows Key for Win95 or Compose)
+       066  Power (not a key)
+       067  Keypad = (Equal Sign)
+       068  F13
+       069  F14
+       06a  F15
+       06b  F16
+       06c  F17
+       06d  F18
+       06e  F19
+       06f  F20
+       070  F21
+       071  F22
+       072  F23
+       073  F24
+       074  Execute
+       075  Help
+       076  Menu
+       077  Select
+       078  Stop
+       079  Again
+       07a  Undo
+       07b  Cut
+       07c  Copy
+       07d  Paste
+       07e  Find
+       07f  Mute
+       080  Volume Up
+       081  Volume Down
+       082  Locking Caps Lock
+       083  Locking Num Lock
+       084  Locking Scroll Lock
+       085  Keypad Comma
+       086  Keypad Equal Sign (AS/400)
+       087  International 1 (PC98)
+       088  International 2 (PC98)
+       089  International 3 (PC98)
+       08a  International 4 (PC98)
+       08b  International 5 (PC98)
+       08c  International 6 (PC98)
+       08d  International 7 (Toggle Single/Double Byte Mode)
+       08e  International 8
+       08f  International 9
+       090  LANG 1 (Hangul/English Toggle, Korea)
+       091  LANG 2 (Hanja Conversion, Korea)
+       092  LANG 3 (Katakana, Japan)
+       093  LANG 4 (Hiragana, Japan)
+       094  LANG 5 (Zenkaku/Hankaku, Japan)
+       095  LANG 6
+       096  LANG 7
+       097  LANG 8
+       098  LANG 9
+       099  Alternate Erase
+       09a  SysReq/Attention
+       09b  Cancel
+       09c  Clear
+       09d  Prior
+       09e  Return
+       09f  Separator
+       0a0  Out
+       0a1  Open
+       0a2  Clear/Again
+       0a3  CrSel/Props
+       0a4  ExSel
+       0e0  Control Left
+       0e1  Shift Left
+       0e2  Alt Left
+       0e3  GUI Left
+       0e4  Control Right
+       0e5  Shift Right
+       0e6  Alt Rigth
+       0e7  GUI Right
+HUT 08  LEDs
+       000  Undefined
+       001  NumLock
+       002  CapsLock
+       003  Scroll Lock
+       004  Compose
+       005  Kana
+       006  Power
+       007  Shift
+       008  Do not disturb
+       009  Mute
+       00a  Tone Enabke
+       00b  High Cut Filter
+       00c  Low Cut Filter
+       00d  Equalizer Enable
+       00e  Sound Field ON
+       00f  Surround On
+       010  Repeat
+       011  Stereo
+       012  Sampling Rate Detect
+       013  Spinning
+       014  CAV
+       015  CLV
+       016  Recording Format Detect
+       017  Off-Hook
+       018  Ring
+       019  Message Waiting
+       01a  Data Mode
+       01b  Battery Operation
+       01c  Battery OK
+       01d  Battery Low
+       01e  Speaker
+       01f  Head Set
+       020  Hold
+       021  Microphone
+       022  Coverage
+       023  Night Mode
+       024  Send Calls
+       025  Call Pickup
+       026  Conference
+       027  Stand-by
+       028  Camera On
+       029  Camera Off
+       02a  On-Line
+       02b  Off-Line
+       02c  Busy
+       02d  Ready
+       02e  Paper-Out
+       02f  Paper-Jam
+       030  Remote
+       031  Forward
+       032  Reverse
+       033  Stop
+       034  Rewind
+       035  Fast Forward
+       036  Play
+       037  Pause
+       038  Record
+       039  Error
+       03a  Usage Selected Indicator
+       03b  Usage In Use Indicator
+       03c  Usage Multi Indicator
+       03d  Indicator On
+       03e  Indicator Flash
+       03f  Indicator Slow Blink
+       040  Indicator Fast Blink
+       041  Indicator Off
+       042  Flash On Time
+       043  Slow Blink On Time
+       044  Slow Blink Off Time
+       045  Fast Blink On Time
+       046  Fast Blink Off Time
+       047  Usage Color Indicator
+       048  Indicator Red
+       049  Indicator Green
+       04a  Indicator Amber
+       04b  Generic Indicator
+       04c  System Suspend
+       04d  External Power Connected
+HUT 09  Buttons
+       000  No Button Pressed
+       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
+       003  Instance 3
+HUT 0b  Telephony
+       000  Unassigned
+       001  Phone
+       002  Answering Machine
+       003  Message Controls
+       004  Handset
+       005  Headset
+       006  Telephony Key Pad
+       007  Programmable Button
+       020  Hook Switch
+       021  Flash
+       022  Feature
+       023  Hold
+       024  Redial
+       025  Transfer
+       026  Drop
+       027  Park
+       028  Forward Calls
+       029  Alternate Function
+       02a  Line
+       02b  Speaker Phone
+       02c  Conference
+       02d  Ring Enable
+       02e  Ring Select
+       02f  Phone Mute
+       030  Caller ID
+       050  Speed Dial
+       051  Store Number
+       052  Recall Number
+       053  Phone Directory
+       070  Voice Mail
+       071  Screen Calls
+       072  Do Not Disturb
+       073  Message
+       074  Answer On/Offf
+       090  Inside Dial Tone
+       091  Outside Dial Tone
+       092  Inside Ring Tone
+       093  Outside Ring Tone
+       094  Priority Ring Tone
+       095  Inside Ringback
+       096  Priority Ringback
+       097  Line Busy Tone
+       098  Recorder Tone
+       099  Call Waiting Tone
+       09a  Confirmation Tone 1
+       09b  Confirmation Tone 2
+       09c  Tones Off
+       09d  Outside Ringback
+       0b0  Key 1
+       0b1  Key 2
+       0b3  Key 3
+       0b4  Key 4
+       0b5  Key 5
+       0b6  Key 6
+       0b7  Key 7
+       0b8  Key 8
+       0b9  Key 9
+       0ba  Key Star
+       0bb  Key Pound
+       0bc  Key A
+       0bd  Key B
+       0be  Key C
+       0bf  Key D
+HUT 0c  Consumer
+       000  Unassigned
+       001  Consumer Control
+       002  Numeric Key Pad
+       003  Programmable Buttons
+       020  +10
+       021  +100
+       022  AM/PM
+       030  Power
+       031  Reset
+       032  Sleep
+       033  Sleep After
+       034  Sleep Mode
+       035  Illumination
+       036  Function Buttons
+       040  Menu
+       041  Menu Pick
+       042  Menu Up
+       043  Menu Down
+       044  Menu Left
+       045  Menu Right
+       046  Menu Escape
+       047  Menu Value Increase
+       048  Menu Value Decrease
+       060  Data on Screen
+       061  Closed Caption
+       062  Closed Caption Select
+       063  VCR/TV
+       064  Broadcast Mode
+       065  Snapshot
+       066  Still
+       080  Selection
+       081  Assign Selection
+       082  Mode Step
+       083  Recall Last
+       084  Enter Channel
+       085  Order Movie
+       086  Channel
+       087  Media Selection
+       088  Media Select Computer
+       089  Media Select TV
+       08a  Media Select WWW
+       08b  Media Select DVD
+       08c  Media Select Telephone
+       08d  Media Select Program Guide
+       08e  Media Select Video Phone
+       08f  Media Select Games
+       090  Media Select Messages
+       091  Media Select CD
+       092  Media Select VCR
+       093  Media Select Tuner
+       094  Quit
+       095  Help
+       096  Media Select Tape
+       097  Media Select Cable
+       098  Media Select Satellite
+       099  Media Select Security
+       09a  Media Select Home
+       09b  Media Select Call
+       09c  Channel Increment
+       09d  Channel Decrement
+       09e  Media Select SAP
+       0a0  VCR Plus
+       0a1  Once
+       0a2  Daily
+       0a3  Weekly
+       0a4  Monthly
+       0b0  Play
+       0b1  Pause
+       0b2  Record
+       0b3  Fast Forward
+       0b4  Rewind
+       0b5  Scan Next Track
+       0b6  Scan Previous Track
+       0b7  Stop
+       0b8  Eject
+       0b9  Random Play
+       0ba  Select Disc
+       0bb  Enter Disc
+       0bc  Repeat
+       0bd  Tracking
+       0be  Track Normal
+       0bf  Slow Tracking
+       0c0  Frame Forward
+       0c1  Frame Back
+       0c2  Mark
+       0c3  Clear Mark
+       0c4  Repeat from Mark
+       0c5  Return to Mark
+       0c6  Search Mark Forward
+       0c7  Search Mark Backward
+       0c8  Counter Reset
+       0c9  Show Counter
+       0ca  Tracking Increment
+       0cb  Tracking Decrement
+       0cc  Stop/Eject
+       0cd  Play/Pause
+       0ce  Play/Skip
+       0e0  Volume
+       0e1  Balance
+       0e2  Mute
+       0e3  Bass
+       0e4  Treble
+       0e5  Bass Boost
+       0e6  Surround Mode
+       0e7  Loudness
+       0e8  MPX
+       0e9  Volume Increment
+       0ea  Volume Decrement
+       0f0  Speed Select
+       0f1  Playback Speed
+       0f2  Standard Play
+       0f3  Long Play
+       0f4  Extended Play
+       0f5  Slow
+       100  Fan Enable
+       101  Fan Speed
+       102  Light Enable
+       103  Light Illumination Level
+       104  Climate Control Enable
+       105  Room Temperature
+       106  Security Enable
+       107  Fire Alarm
+       108  Police Alarm
+       150  Balance Right
+       151  Balance Left
+       152  Bass Increment
+       153  Bass Decrement
+       154  Treble Increment
+       155  Treble Decrement
+       160  Speaker System
+       161  Channel Left
+       162  Channel Right
+       163  Channel Center
+       164  Channel Front
+       165  Channel Center Front
+       166  Channel Side
+       167  Channel Surround
+       168  Channel Low Frequency Enhancement
+       169  Channel Top
+       16a  Channel Unknown
+       170  Sub-Channel
+       171  Sub-Channel Increment
+       172  Sub-Channel Decrement
+       173  Alternative Audio Increment
+       174  Alternative Audio Decrement
+       180  Application Launch Buttons
+       181  AL Launch Button Configuration Tool
+       182  AL Launch Button Configuration
+       183  AL Consumer Control Configuration
+       184  AL Word Processor
+       185  AL Text Editor
+       186  AL Spreadsheet
+       187  AL Graphics Editor
+       188  AL Presentation App
+       189  AL Database App
+       18a  AL Email Reader
+       18b  AL Newsreader
+       18c  AL Voicemail
+       18d  AL Contacts/Address Book
+       18e  AL Calendar/Schedule
+       18f  AL Task/Project Manager
+       190  AL Log/Jounal/Timecard
+       191  AL Checkbook/Finance
+       192  AL Calculator
+       193  AL A/V Capture/Playback
+       194  AL Local Machine Browser
+       195  AL LAN/Wan Browser
+       196  AL Internet Browser
+       197  AL Remote Networking/ISP Connect
+       198  AL Network Conference
+       199  AL Network Chat
+       19a  AL Telephony/Dialer
+       19b  AL Logon
+       19c  AL Logoff
+       19d  AL Logon/Logoff
+       19e  AL Terminal Local/Screensaver
+       19f  AL Control Panel
+       1a0  AL Command Line Processor/Run
+       1a1  AL Process/Task Manager
+       1a2  AL Select Task/Application
+       1a3  AL Next Task/Application
+       1a4  AL Previous Task/Application
+       1a5  AL Preemptive Halt Task/Application
+       200  Generic GUI Application Controls
+       201  AC New
+       202  AC Open
+       203  AC CLose
+       204  AC Exit
+       205  AC Maximize
+       206  AC Minimize
+       207  AC Save
+       208  AC Print
+       209  AC Properties
+       21a  AC Undo
+       21b  AC Copy
+       21c  AC Cut
+       21d  AC Paste
+       21e  AC Select All
+       21f  AC Find
+       220  AC Find and Replace
+       221  AC Search
+       222  AC Go To
+       223  AC Home
+       224  AC Back
+       225  AC Forward
+       226  AC Stop
+       227  AC Refresh
+       228  AC Previous Link
+       229  AC Next Link
+       22b  AC History
+       22c  AC Subscriptions
+       22d  AC Zoom In
+       22e  AC Zoom Out
+       22f  AC Zoom
+       230  AC Full Screen View
+       231  AC Normal View
+       232  AC View Toggle
+       233  AC Scroll Up
+       234  AC Scroll Down
+       235  AC Scroll
+       236  AC Pan Left
+       237  AC Pan Right
+       238  AC Pan
+       239  AC New Window
+       23a  AC Tile Horizontally
+       23b  AC Tile Vertically
+       23c  AC Format
+HUT 0d  Digitizer
+       000  Undefined
+       001  Digitizer
+       002  Pen
+       003  Light Pen
+       004  Touch Screen
+       005  Touch Pad
+       006  White Board
+       007  Coordinate Measuring Machine
+       008  3D Digitizer
+       009  Stereo Plotter
+       00a  Articulated Arm
+       00b  Armature
+       00c  Multiple Point Digitizer
+       00d  Free Space Wand
+       020  Stylus
+       021  Puck
+       022  Finger
+       030  Tip Pressure
+       031  Barrel Pressure
+       032  In Range
+       033  Touch
+       034  Untouch
+       035  Tap
+       036  Quality
+       037  Data Valid
+       038  Transducer Index
+       039  Tablet Function Keys
+       03a  Program Change Keys
+       03b  Battery Strength
+       03c  Invert
+       03d  X Tilt
+       03e  Y Tilt
+       03f  Azimuth
+       040  Altitude
+       041  Twist
+       042  Tip Switch
+       043  Secondary Tip Switch
+       044  Barrel Switch
+       045  Eraser
+       046  Tablet Pick
+       047  Confidence
+       048  Width
+       049  Height
+       051  Contact ID
+       052  Input Mode
+       053  Device Index
+       054  Contact Count
+       055  Maximum Contact Number
+HUT 0f  PID Page
+       000  Undefined
+       001  Physical Interface Device
+       020  Normal
+       021  Set Effect Report
+       022  Effect Block Index
+       023  Parameter Block Offset
+       024  ROM Flag
+       025  Effect Type
+       026  ET Constant Force
+       027  ET Ramp
+       028  ET Custom Force Data
+       030  ET Square
+       031  ET Sine
+       032  ET Triangle
+       033  ET Sawtooth Up
+       034  ET Sawtooth Down
+       040  ET Spring
+       041  ET Damper
+       042  ET Inertia
+       043  ET Friction
+       050  Duration
+       051  Sample Period
+       052  Gain
+       053  Trigger Button
+       054  Trigger Repeat Interval
+       055  Axes Enable
+       056  Direction Enable
+       057  Direction
+       058  Type Specific Block Offset
+       059  Block Type
+       05A  Set Envelope Report
+       05B  Attack Level
+       05C  Attack Time
+       05D  Fade Level
+       05E  Fade Time
+       05F  Set Condition Report
+       060  CP Offset
+       061  Positive Coefficient
+       062  Negative Coefficient
+       063  Positive Saturation
+       064  Negative Saturation
+       065  Dead Band
+       066  Download Force Sample
+       067  Isoch Custom Force Enable
+       068  Custom Force Data Report
+       069  Custom Force Data
+       06A  Custom Force Vendor Defined Data
+       06B  Set Custom Force Report
+       06C  Custom Force Data Offset
+       06D  Sample Count
+       06E  Set Periodic Report
+       06F  Offset
+       070  Magnitude
+       071  Phase
+       072  Period
+       073  Set Constant Force Report
+       074  Set Ramp Force Report
+       075  Ramp Start
+       076  Ramp End
+       077  Effect Operation Report
+       078  Effect Operation
+       079  Op Effect Start
+       07A  Op Effect Start Solo
+       07B  Op Effect Stop
+       07C  Loop Count
+       07D  Device Gain Report
+       07E  Device Gain
+       07F  PID Pool Report
+       080  RAM Pool Size
+       081  ROM Pool Size
+       082  ROM Effect Block Count
+       083  Simultaneous Effects Max
+       084  Pool Alignment
+       085  PID Pool Move Report
+       086  Move Source
+       087  Move Destination
+       088  Move Length
+       089  PID Block Load Report
+       08B  Block Load Status
+       08C  Block Load Success
+       08D  Block Load Full
+       08E  Block Load Error
+       08F  Block Handle
+       090  PID Block Free Report
+       091  Type Specific Block Handle
+       092  PID State Report
+       094  Effect Playing
+       095  PID Device Control Report
+       096  PID Device Control
+       097  DC Enable Actuators
+       098  DC Disable Actuators
+       099  DC Stop All Effects
+       09A  DC Device Reset
+       09B  DC Device Pause
+       09C  DC Device Continue
+       09F  Device Paused
+       0A0  Actuators Enabled
+       0A4  Safety Switch
+       0A5  Actuator Override Switch
+       0A6  Actuator Power
+       0A7  Start Delay
+       0A8  Parameter Block Size
+       0A9  Device Managed Pool
+       0AA  Shared Parameter Blocks
+       0AB  Create New Effect Report
+       0AC  RAM Pool Available
+HUT 10  Unicode
+HUT 14  Alphanumeric Display
+       000  Undefined
+       001  Alphanumeric Display
+       020  Display Attributes Report
+       021  ASCII Character Set
+       022  Data Read Back
+       023  Font Read Back
+       024  Display Control Report
+       025  Clear Display
+       026  Display Enable
+       027  Screen Saver Delay
+       028  Screen Saver Enable
+       029  Vertical Scroll
+       02a  Horizontal Scroll
+       02b  Character Report
+       02c  Display Data
+       02d  Display Status
+       02e  Stat Not Ready
+       02f  Stat Ready
+       030  Err Not a loadable Character
+       031  Err Font Data Cannot Be Read
+       032  Cursur Position Report
+       033  Row
+       034  Column
+       035  Rows
+       036  Columns
+       037  Cursor Pixel Positioning
+       038  Cursor Mode
+       039  Cursor Enable
+       03a  Cursor Blink
+       03b  Font Report
+       03c  Font Data
+       03d  Character Width
+       03e  Character Height
+       03f  Character Spacing Horizontal
+       040  Character Spacing Vertical
+       041  Unicode Character Set
+HUT 80  USB Monitor
+       001  Monitor Control
+       002  EDID Information
+       003  VDIF Information
+       004  VESA Version
+HUT 81  USB Monitor Enumerated Values
+HUT 82  Monitor VESA Virtual Controls
+       001  Degauss
+       010  Brightness
+       012  Contrast
+       016  Red Video Gain
+       018  Green Video Gain
+       01a  Blue Video Gain
+       01c  Focus
+       020  Horizontal Position
+       022  Horizontal Size
+       024  Horizontal Pincushion
+       026  Horizontal Pincushion Balance
+       028  Horizontal Misconvergence
+       02a  Horizontal Linearity
+       02c  Horizontal Linearity Balance
+       030  Vertical Position
+       032  Vertical Size
+       034  Vertical Pincushion
+       036  Vertical Pincushion Balance
+       038  Vertical Misconvergence
+       03a  Vertical Linearity
+       03c  Vertical Linearity Balance
+       040  Parallelogram Balance (Key Distortion)
+       042  Trapezoidal Distortion (Key)
+       044  Tilt (Rotation)
+       046  Top Corner Distortion Control
+       048  Top Corner Distortion Balance
+       04a  Bottom Corner Distortion Control
+       04c  Bottom Corner Distortion Balance
+       056  Horizontal Moire
+       058  Vertical Moire
+       05e  Input Level Select
+       060  Input Source Select
+       06c  Red Video Black Level
+       06e  Green Video Black Level
+       070  Blue Video Black Level
+       0a2  Auto Size Center
+       0a4  Polarity Horizontal Sychronization
+       0a6  Polarity Vertical Synchronization
+       0aa  Screen Orientation
+       0ac  Horizontal Frequency in Hz
+       0ae  Vertical Frequency in 0.1 Hz
+       0b0  Settings
+       0ca  On Screen Display (OSD)
+       0d4  Stereo Mode
+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
+
+# Syntax:
+# L language_id  language_name
+#      dialect_id  dialect_name
+
+L 0001  Arabic
+       01  Saudi Arabia
+       02  Iraq
+       03  Egypt
+       04  Libya
+       05  Algeria
+       06  Morocco
+       07  Tunesia
+       08  Oman
+       09  Yemen
+       0a  Syria
+       0b  Jordan
+       0c  Lebanon
+       0d  Kuwait
+       0e  U.A.E
+       0f  Bahrain
+       10  Qatar
+L 0002  Bulgarian
+L 0003  Catalan
+L 0004  Chinese
+       01  Traditional
+       02  Simplified
+       03  Hongkong SAR, PRC
+       04  Singapore
+       05  Macau SAR
+L 0005  Czech
+L 0006  Danish
+L 0007  German
+       01  German
+       02  Swiss
+       03  Austrian
+       04  Luxembourg
+       05  Liechtenstein
+L 0008  Greek
+L 0009  English
+       01  US
+       02  UK
+       03  Australian
+       04  Canadian
+       05  New Zealand
+       06  Ireland
+       07  South Africa
+       08  Jamaica
+       09  Carribean
+       0a  Belize
+       0b  Trinidad
+       0c  Zimbabwe
+       0d  Philippines
+L 000a  Spanish
+       01  Castilian
+       02  Mexican
+       03  Modern
+       04  Guatemala
+       05  Costa Rica
+       06  Panama
+       07  Dominican Republic
+       08  Venzuela
+       09  Colombia
+       0a  Peru
+       0b  Argentina
+       0c  Ecuador
+       0d  Chile
+       0e  Uruguay
+       0f  Paraguay
+       10  Bolivia
+       11  El Salvador
+       12  Honduras
+       13  Nicaragua
+       14  Puerto Rico
+L 000b  Finnish
+L 000c  French
+       01  French
+       02  Belgian
+       03  Canadian
+       04  Swiss
+       05  Luxembourg
+       06  Monaco
+L 000d  Hebrew
+L 000e  Hungarian
+L 000f  Idelandic
+L 0010  Italian
+       01  Italian
+       02  Swiss
+L 0011  Japanese
+L 0012  Korean
+       01  Korean
+L 0013  Dutch
+       01  Dutch
+       02  Belgian
+L 0014  Norwegian
+       01  Bokmal
+       02  Nynorsk
+L 0015  Polish
+L 0016  Portuguese
+       01  Portuguese
+       02  Brazilian
+L 0017  forgotten
+L 0018  Romanian
+L 0019  Russian
+L 001a  Serbian
+       01  Croatian
+       02  Latin
+       03  Cyrillic
+L 001b  Slovak
+L 001c  Albanian
+L 001d  Swedish
+       01  Swedish
+       02  Finland
+L 001e  Thai
+L 001f  Turkish
+L 0020  Urdu
+       01  Pakistan
+       02  India
+L 0021  Indonesian
+L 0022  Ukrainian
+L 0023  Belarusian
+L 0024  Slovenian
+L 0025  Estonian
+L 0026  Latvian
+L 0027  Lithuanian
+       01  Lithuanian
+L 0028  forgotten
+L 0029  Farsi
+L 002a  Vietnamese
+L 002b  Armenian
+L 002c  Azeri
+       01  Cyrillic
+       02  Latin
+L 002d  Basque
+L 002e  forgotten
+L 002f  Macedonian
+L 0036  Afrikaans
+L 0037  Georgian
+L 0038  Faeroese
+L 0039  Hindi
+L 003e  Malay
+       01  Malaysia
+       02  Brunei Darassalam
+L 003f  Kazak
+L 0041  Awahili
+L 0043  Uzbek
+       01  Latin
+       02  Cyrillic
+L 0044  Tatar
+L 0045  Bengali
+L 0046  Punjabi
+L 0047  Gujarati
+L 0048  Oriya
+L 0049  Tamil
+L 004a  Telugu
+L 004b  Kannada
+L 004c  Malayalam
+L 004d  Assamese
+L 004e  Marathi
+L 004f  Sanskrit
+L 0057  Konkani
+L 0058  Manipuri
+L 0059  Sindhi
+L 0060  Kashmiri
+       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
+
+# List of Video Class Terminal Types
+
+# Syntax:
+# VT terminal_type  terminal_type_name
+
+VT 0100  USB Vendor Specific
+VT 0101  USB Streaming
+VT 0200  Input Vendor Specific
+VT 0201  Camera Sensor
+VT 0202  Sequential Media
+VT 0300  Output Vendor Specific
+VT 0301  Generic Display
+VT 0302  Sequential Media
+VT 0400  External Vendor Specific
+VT 0401  Composite Video
+VT 0402  S-Video
+VT 0403  Component Video
diff --git a/usbmisc.c b/usbmisc.c
new file mode 100644 (file)
index 0000000..db35282
--- /dev/null
+++ b/usbmisc.c
@@ -0,0 +1,140 @@
+/*****************************************************************************/
+/*
+ *      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 *devbususb = "/dev/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 != '/') {
+               result = 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", devbususb, bus->dirname, dev->filename);
+                       if (!strcmp(device_path, absolute_path))
+                               return dev;
+               }                               
+        }                      
+       return NULL;
+}      
+
diff --git a/usbmisc.h b/usbmisc.h
new file mode 100644 (file)
index 0000000..39d4926
--- /dev/null
+++ b/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 */
diff --git a/usbutils.pc.in b/usbutils.pc.in
new file mode 100644 (file)
index 0000000..855c37b
--- /dev/null
@@ -0,0 +1,5 @@
+Name: usbutils
+Description: USB device database
+Version: @VERSION@
+
+usbids=@usbids@