From 90c383f9d87435f64f099495a4217c6872baff7d Mon Sep 17 00:00:00 2001 From: HyungKyu Song Date: Sat, 16 Feb 2013 00:16:54 +0900 Subject: [PATCH] Tizen 2.0 Release --- AUTHORS | 4 + COPYING | 340 + ChangeLog | 227 + INSTALL | 182 + Makefile.am | 73 + Makefile.in | 899 +++ NEWS | 48 + README | 3 + aclocal.m4 | 1033 +++ config.h.in | 93 + configure | 6469 +++++++++++++++ configure.ac | 53 + debian/README.Debian | 9 + debian/bkup/usbutils-udeb.dirs | 2 + debian/bkup/usbutils-udeb.substvars | 1 + debian/changelog | 541 ++ debian/compat | 1 + debian/control | 39 + debian/control.org | 38 + debian/copyright | 34 + debian/rules | 126 + debian/rules.org | 126 + debian/update-usbids.8 | 27 + debian/usbutils.dirs | 2 + debian/usbutils.links | 3 + debian/usbutils.manpages | 1 + depcomp | 589 ++ devtree.c | 335 + devtree.h | 87 + install-sh | 519 ++ list.h | 105 + lsusb-t.c | 710 ++ lsusb.8.in | 67 + lsusb.c | 3085 +++++++ missing | 367 + names.c | 809 ++ names.h | 52 + packaging/usbutils-rpmlintrc | 3 + packaging/usbutils.spec | 40 + packaging/usbutils_debian.patch | 3029 +++++++ update-usbids.sh.in | 46 + usb-devices | 172 + usb-devices.1.in | 51 + usb.ids | 14557 ++++++++++++++++++++++++++++++++++ usbmisc.c | 140 + usbmisc.h | 36 + usbutils.pc.in | 5 + 47 files changed, 35178 insertions(+) create mode 100644 AUTHORS create mode 100644 COPYING create mode 100644 ChangeLog create mode 100644 INSTALL create mode 100644 Makefile.am create mode 100644 Makefile.in create mode 100644 NEWS create mode 100644 README create mode 100644 aclocal.m4 create mode 100644 config.h.in create mode 100755 configure create mode 100644 configure.ac create mode 100644 debian/README.Debian create mode 100644 debian/bkup/usbutils-udeb.dirs create mode 100644 debian/bkup/usbutils-udeb.substvars create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/control.org create mode 100644 debian/copyright create mode 100755 debian/rules create mode 100755 debian/rules.org create mode 100644 debian/update-usbids.8 create mode 100644 debian/usbutils.dirs create mode 100644 debian/usbutils.links create mode 100644 debian/usbutils.manpages create mode 100755 depcomp create mode 100644 devtree.c create mode 100644 devtree.h create mode 100755 install-sh create mode 100644 list.h create mode 100644 lsusb-t.c create mode 100644 lsusb.8.in create mode 100644 lsusb.c create mode 100755 missing create mode 100644 names.c create mode 100644 names.h create mode 100644 packaging/usbutils-rpmlintrc create mode 100644 packaging/usbutils.spec create mode 100644 packaging/usbutils_debian.patch create mode 100755 update-usbids.sh.in create mode 100755 usb-devices create mode 100644 usb-devices.1.in create mode 100644 usb.ids create mode 100644 usbmisc.c create mode 100644 usbmisc.h create mode 100644 usbutils.pc.in diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..6a60e24 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,4 @@ +Thomas Sailer, +Johannes Erdfelt +David Brownell +Aurelien Jarno diff --git a/COPYING b/COPYING new file mode 100644 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. + + 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.) + +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. + + 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. + + 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 + + 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. + + + Copyright (C) + + 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. + + , 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 index 0000000..8ac9183 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,227 @@ +2009 Greg Kroah-Hartman + * switched over to git, look at the changelog there + instead of here. + +2007-12-03 David Brownell + * configure, configure.h.in: autoreconf + * usb.ids: update to current version + * lsusb.c: fix minor layout glitch + +2007-11-14 Joe Peterson + * configure.in, lsusb.c: use AC_C_BIGENDIAN + +2007-11-05 David Brownell + * configure, config.h.in: autoreconf + * usb.ids: update to current version + +2007-11-05 Joe Peterson + * configure.in, lsusb.c: use autotools instead of hard-coded + check for __FreeBSD__. + +2007-10-31 Joe Peterson + * lsusb.c: compile on FreeBSD + +2007-10-29 Robin H. Johnson + * update-usbids.sh: add "-q" (quiet) option for cron jobs; + skip filesystems that are readonly + +2007-10-23 David Brownell + * 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 + * lsusb.c: Fix the offsets for the video class descriptors. + +2007-07-17 David Brownell + * lsusb.c: use correct endpoint maxpacket mask + +2006-12-10 Aurelien Jarno + * lsusb.c, names.c, Makefile.am, configure.in: gzipped usb.ids + * configure, other autoconf stuff: regenerate + +2006-12-10 David Brownell + * lsusb.c: bugfix GUID printing; byteorder matches rfc 4122 + * usb.ids: update to current version + +2006-05-03 David Brownell + * 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 + * configure.in, lsusb.8: version 0.72 + * configure, other autoconf stuff: regenerate + +2006-02-18 David Brownell + * 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 + * lsusb.c: (HID) prettyprinting of Unit and Unit Exponent Global items + +2006-02-13 David Brownell + * lsusb.c: whitespace fixes + +2006-02-06 Laurent Pinchart + * lsusb.c: update video support, show camera info + +2006-02-06 Vojtech Pavlik + * usb.ids: updated + +2006-02-01 David Brownell + * lsusb.c: allow longer variable length bitfields in hub descriptors; + ignore all clearly-broken hub descriptors + +2006-01-17 NIIBE Yutaka + * 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 + * lsusb.c: better diagnostics: for invalid CDC descriptors of a + type we know, show that type with the message. + +2005-10-21 Laurent Pinchart + * 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 + * lsusb.c: dump interface associations + +2005-09-26 David Brownell + * 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 + * lsusb.c: correct dump of CCID supported voltages + +2005-05-14 David Brownell + Label as version 0.71 + * usb.ids: update to current version + +2005-05-13 Toby Ernst + * lsusb.c: /proc/bus/usb/BBB/DDD numbers are decimal not octal + * lsusb.8: ditto + +2005-04-29 Olaf Hering + * lsusb.c: fix some compiler warnings + +2005-04-14 David Brownell + * lsusb.c: add some more CDC WHCM dumping, matching a Sony 3G phone + +2005-03-28 Aurelien Jarno + * lsusb.c: disallow decimal product and vendor codes (hex only) + +2005-03-05 David Brownell + * lsusb.c: add basic CDC MDLM dumping, to cope with new CDC + conformance lies from a Zaurus C-860 + +2005-02-11 Thierry Vignaud + * usbmodules.8: fix --device /proc/usb/usb/BBB/DDD typo + +2005-02-02 David Brownell + * configure.in: fix typo, recommend libusb 0.1.8 not 1.8 + +2005-01-30 David Brownell + Fix some more warnings reported by Aurelian, and configure + gcc for "-W -Wunused" to discourage more from appearing. + +2005-01-27 Aurelien Jarno + Fix "configure --enable-usbmodules" glitch, and remove + some warnings reported by GCC 4.0 (and "gcc -Wall -W"). + +2005-01-22 David Brownell + * 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 + * lsusb.c: handle more descriptors; misplaced comm descriptors + get interpreted; some minor fixes. + * usb.ids: update to current version + +2004-12-11 David Brownell + * update-usbids.sh: add, based on update-pciids.sh + +2004-10-20 David Brownell + * lsusb.c: minor formatting updates; add a warning when those HID + descriptors aren't available. + +2004-10-20 Aurelien Jarno + * lsusb.c: bugfixes for reading HID descriptors + +2004-10-15 David Brownell + * 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 + Move to CVS at linux-usb.sf.net + Label as version 0.12. + +2003-12-06 Aurelien Jarno + Update Debian with libusb based version. + +2003-08-31 David Brownell + * lsusb.c: (against 0.11) recognize CDC descriptors, USB 2.0 updates, + string handling updates, + +2003-??-?? Aurelien Jarno + Convert to latest libusb, supporting BSD and Darwin. + +2002-08-02 Pedro Lopez-Cabanillas + * lsusb.c: (against 0.10) recognize USB MIDI class specific descriptors. + +2000-11-06 Thomas Sailer + + * 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 + * 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 + + * lsusb.c: Retry usb_control. + +1999-12-03 Thomas Sailer + + * lsusb.c: bogus error checks for open calls, reported by Matthew Darm + +1999-09-17 Thomas Sailer + + * 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 + + * lsusb.c (dump_audiocontrol_interface): fixed a couple of forgotten printf arguments + +1999-09-13 Thomas Sailer + + * Created package + diff --git a/INSTALL b/INSTALL new file mode 100644 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 index 0000000..cce16b5 --- /dev/null +++ b/Makefile.am @@ -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 index 0000000..a93a363 --- /dev/null +++ b/Makefile.in @@ -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 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 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 index 0000000..6cccc51 --- /dev/null +++ b/aclocal.m4 @@ -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 . +# +# 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 .])], + [$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 /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 index 0000000..7142cca --- /dev/null +++ b/config.h.in @@ -0,0 +1,93 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the 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 header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the 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 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 . +# +# 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 &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 +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#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 if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + 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 . +_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 +#include +#include +#include +/* 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 to if __STDC__ is defined, since + # 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 +#else +# include +#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 +_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 to if __STDC__ is defined, since + # 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 +#else +# include +#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 +_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 +#include +#include +#include + +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 + +_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 + +_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 +#include +#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 +_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 +_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 + /* 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 + /* 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 + /* 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 + /* 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 + /* 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 . +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 . +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 ." + +_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=' ' +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /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 +' >$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 = "" + +} +{ + 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 +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\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 index 0000000..15917e9 --- /dev/null +++ b/configure.ac @@ -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 index 0000000..a26c3c7 --- /dev/null +++ b/debian/README.Debian @@ -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 . + + -- Aurelien Jarno 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 index 0000000..9ec9899 --- /dev/null +++ b/debian/bkup/usbutils-udeb.dirs @@ -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 index 0000000..f9308f1 --- /dev/null +++ b/debian/bkup/usbutils-udeb.substvars @@ -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 index 0000000..8313349 --- /dev/null +++ b/debian/changelog @@ -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 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 Thu, 25 Nov 2010 12:57:12 +0900 + +usbutils (0.86-5slp2) unstable; urgency=low + + * Import Debian Package + + -- Sung-Jin Park 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 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 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 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 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 Sat, 01 Aug 2009 16:40:48 +0200 + +usbutils (0.82-1) unstable; urgency=low + + * New upstream version. + + -- Aurelien Jarno 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 Tue, 28 Apr 2009 23:24:30 +0200 + +usbutils (0.73-10) unstable; urgency=low + + * Fix a typo in README.Debian. + + -- Aurelien Jarno 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 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 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 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 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 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 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 Wed, 24 Oct 2007 15:01:21 +0200 + +usbutils (0.73-2) unstable; urgency=low + + * Reupload the correct version (closes: bug#447851). + + -- Aurelien Jarno Wed, 24 Oct 2007 11:51:20 +0200 + +usbutils (0.73-1) unstable; urgency=low + + * New upstream version. + + -- Aurelien Jarno 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 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 Fri, 13 Apr 2007 16:18:51 +0200 + +usbutils (0.72-7) unstable; urgency=medium + + * Fix a typo in usb.ids. + + -- Aurelien Jarno 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Thu, 2 Jun 2005 17:15:02 +0200 + +usbutils (0.71-1) unstable; urgency=low + + * New upstream version. + + -- Aurelien Jarno 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 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 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 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 Fri, 1 Apr 2005 08:04:08 +0200 + +usbutils (0.70-4) unstable; urgency=low + + * Fixed manpage (closes: bug#302144). + + -- Aurelien Jarno 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Thu, 23 Oct 2003 20:36:01 +0200 + +usbutils (0.11-1) unstable; urgency=low + + * Special Thanks to Andreas Metzler 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 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 Fri, 23 Nov 2001 21:59:19 -0600 + +usbutils (0.8-1) unstable; urgency=low + + * New Maintainer. + + -- Christopher L Cheney 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 Tue, 7 Mar 2000 16:10:14 +0100 + +usbutils (0.6-1) unstable; urgency=low + + * New upstream version. + + -- Raphael Bossek 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 index 0000000..7ed6ff8 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +5 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..6913e50 --- /dev/null +++ b/debian/control @@ -0,0 +1,39 @@ +Source: usbutils +Section: utils +Priority: optional +Maintainer: Sung-Jin Park , Aurelien Jarno +Uploaders: Sung-Jin Park +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 index 0000000..a697c22 --- /dev/null +++ b/debian/control.org @@ -0,0 +1,38 @@ +Source: usbutils +Section: utils +Priority: optional +Maintainer: Aurelien Jarno +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 index 0000000..363246f --- /dev/null +++ b/debian/copyright @@ -0,0 +1,34 @@ +This package was debianized by Christopher L Cheney on +Wed, 13 Jun 2001 11:20:06 -0500. + +It was downloaded from http://www.linux-usb.org/ + +Upstream Authors: + Thomas Sailer + Johannes Erdfelt + +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 index 0000000..976ca57 --- /dev/null +++ b/debian/rules @@ -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 index 0000000..c10ae01 --- /dev/null +++ b/debian/rules.org @@ -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 index 0000000..5dd48f2 --- /dev/null +++ b/debian/update-usbids.8 @@ -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, . diff --git a/debian/usbutils.dirs b/debian/usbutils.dirs new file mode 100644 index 0000000..b174b44 --- /dev/null +++ b/debian/usbutils.dirs @@ -0,0 +1,2 @@ +usr/sbin +usr/share/man/man8 diff --git a/debian/usbutils.links b/debian/usbutils.links new file mode 100644 index 0000000..5ae5e60 --- /dev/null +++ b/debian/usbutils.links @@ -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 index 0000000..69875cd --- /dev/null +++ b/debian/usbutils.manpages @@ -0,0 +1 @@ +debian/update-usbids.8 diff --git a/depcomp b/depcomp new file mode 100755 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 . + +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 . +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 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 +#include +#include +#include +#include +#include + +#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 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 index 0000000..a5897de --- /dev/null +++ b/install-sh @@ -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 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 index 0000000..f604155 --- /dev/null +++ b/lsusb-t.c @@ -0,0 +1,710 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#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 index 0000000..f381749 --- /dev/null +++ b/lsusb.8.in @@ -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, . diff --git a/lsusb.c b/lsusb.c new file mode 100644 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 +#include +#include +#include +#include +#include +#include +#include +#include + +#include "names.h" +#include "devtree.h" +#include "usbmisc.h" + +#include + +#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>= 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> 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 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 , 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 ." + 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 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef HAVE_LIBZ +#include +#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 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 + +/* ---------------------------------------------------------------------- */ + +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 index 0000000..c9ff771 --- /dev/null +++ b/packaging/usbutils-rpmlintrc @@ -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 index 0000000..2543b6e --- /dev/null +++ b/packaging/usbutils.spec @@ -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 index 0000000..7b88994 --- /dev/null +++ b/packaging/usbutils_debian.patch @@ -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 +-# If you have any new entries, send them to the maintainer. +-# Send entries as patches (diff -u old new). ++# Maintained by Stephen J. Gowdy ++# 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 index 0000000..4a487ed --- /dev/null +++ b/update-usbids.sh.in @@ -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 index 0000000..b2052e2 --- /dev/null +++ b/usb-devices @@ -0,0 +1,172 @@ +#!/bin/bash + +# Copyright: 2009 Greg Kroah-Hartman +# 2009 Randy Dunlap +# 2009 Frans Pop +# +# 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 index 0000000..35f9bbb --- /dev/null +++ b/usb-devices.1.in @@ -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 +.P +Randy Dunlap +.P +Frans Pop diff --git a/usb.ids b/usb.ids new file mode 100644 index 0000000..92bc8d1 --- /dev/null +++ b/usb.ids @@ -0,0 +1,14557 @@ +# +# List of USB ID's +# +# Maintained by Stephen J. Gowdy +# 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 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 +#include + +#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 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 + +/* ---------------------------------------------------------------------- */ + +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 index 0000000..855c37b --- /dev/null +++ b/usbutils.pc.in @@ -0,0 +1,5 @@ +Name: usbutils +Description: USB device database +Version: @VERSION@ + +usbids=@usbids@ -- 2.7.4