1 | Royalty-Free Non-Exclusive License USB Product-ID
|
---|
2 | =================================================
|
---|
3 |
|
---|
4 | Version 2008-04-07
|
---|
5 |
|
---|
6 | OBJECTIVE DEVELOPMENT Software GmbH hereby grants you the non-exclusive
|
---|
7 | right to use three USB.org vendor-ID (VID) / product-ID (PID) pairs with
|
---|
8 | products based on Objective Development's firmware-only USB driver for
|
---|
9 | Atmel AVR microcontrollers:
|
---|
10 |
|
---|
11 | * VID = 5824 (=0x16c0) / PID = 1500 (=0x5dc) for devices implementing no
|
---|
12 | USB device class (vendor-class devices with USB class = 0xff). Devices
|
---|
13 | using this pair will be referred to as "VENDOR CLASS" devices.
|
---|
14 |
|
---|
15 | * VID = 5824 (=0x16c0) / PID = 1503 (=0x5df) for HID class devices
|
---|
16 | (excluding mice and keyboards). Devices using this pair will be referred
|
---|
17 | to as "HID CLASS" devices.
|
---|
18 |
|
---|
19 | * VID = 5824 (=0x16c0) / PID = 1505 (=0x5e1) for CDC class modem devices
|
---|
20 | Devices using this pair will be referred to as "CDC-ACM CLASS" devices.
|
---|
21 |
|
---|
22 | * VID = 5824 (=0x16c0) / PID = 1508 (=0x5e4) for MIDI class devices
|
---|
23 | Devices using this pair will be referred to as "MIDI CLASS" devices.
|
---|
24 |
|
---|
25 | Since the granted right is non-exclusive, the same VID/PID pairs may be
|
---|
26 | used by many companies and individuals for different products. To avoid
|
---|
27 | conflicts, your device and host driver software MUST adhere to the rules
|
---|
28 | outlined below.
|
---|
29 |
|
---|
30 | OBJECTIVE DEVELOPMENT Software GmbH has licensed these VID/PID pairs from
|
---|
31 | Wouter van Ooijen (see www.voti.nl), who has licensed the VID from the USB
|
---|
32 | Implementers Forum, Inc. (see www.usb.org). The VID is registered for the
|
---|
33 | company name "Van Ooijen Technische Informatica".
|
---|
34 |
|
---|
35 |
|
---|
36 | RULES AND RESTRICTIONS
|
---|
37 | ======================
|
---|
38 |
|
---|
39 | (1) The USB device MUST provide a textual representation of the
|
---|
40 | manufacturer and product identification. The manufacturer identification
|
---|
41 | MUST be available at least in USB language 0x0409 (English/US).
|
---|
42 |
|
---|
43 | (2) The textual manufacturer identification MUST contain either an Internet
|
---|
44 | domain name (e.g. "mycompany.com") registered and owned by you, or an
|
---|
45 | e-mail address under your control (e.g. "myname@gmx.net"). You can embed
|
---|
46 | the domain name or e-mail address in any string you like, e.g. "Objective
|
---|
47 | Development http://www.obdev.at/avrusb/".
|
---|
48 |
|
---|
49 | (3) You are responsible for retaining ownership of the domain or e-mail
|
---|
50 | address for as long as any of your products are in use.
|
---|
51 |
|
---|
52 | (4) You may choose any string for the textual product identification, as
|
---|
53 | long as this string is unique within the scope of your textual manufacturer
|
---|
54 | identification.
|
---|
55 |
|
---|
56 | (5) Matching of device-specific drivers MUST be based on the textual
|
---|
57 | manufacturer and product identification in addition to the usual VID/PID
|
---|
58 | matching. This means that operating system features which are based on
|
---|
59 | VID/PID matching only (e.g. Windows kernel level drivers, automatic actions
|
---|
60 | when the device is plugged in etc) MUST NOT be used. The driver matching
|
---|
61 | MUST be a comparison of the entire strings, NOT a sub-string match. For
|
---|
62 | CDC-ACM CLASS and MIDI CLASS devices, a generic class driver should be used
|
---|
63 | and the matching is based on the USB device class.
|
---|
64 |
|
---|
65 | (6) The extent to which VID/PID matching is allowed for non device-specific
|
---|
66 | drivers or features depends on the operating system and particular VID/PID
|
---|
67 | pair used:
|
---|
68 |
|
---|
69 | * Mac OS X, Linux, FreeBSD and other Unixes: No VID/PID matching is
|
---|
70 | required and hence no VID/PID-only matching is allowed at all.
|
---|
71 |
|
---|
72 | * Windows: The operating system performs VID/PID matching for the kernel
|
---|
73 | level driver. You are REQUIRED to use libusb-win32 (see
|
---|
74 | http://libusb-win32.sourceforge.net/) as the kernel level driver for
|
---|
75 | VENDOR CLASS devices. HID CLASS devices all use the generic HID class
|
---|
76 | driver shipped with Windows, except mice and keyboards. You therefore
|
---|
77 | MUST NOT use any of the shared VID/PID pairs for mice or keyboards.
|
---|
78 | CDC-ACM CLASS devices require a ".inf" file which matches on the VID/PID
|
---|
79 | pair. This ".inf" file MUST load the "usbser" driver to configure the
|
---|
80 | device as modem (COM-port).
|
---|
81 |
|
---|
82 | (7) OBJECTIVE DEVELOPMENT Software GmbH disclaims all liability for any
|
---|
83 | problems which are caused by the shared use of these VID/PID pairs. You
|
---|
84 | have been warned that the sharing of VID/PID pairs may cause problems. If
|
---|
85 | you want to avoid them, get your own VID/PID pair for exclusive use.
|
---|
86 |
|
---|
87 |
|
---|
88 | HOW TO IMPLEMENT THESE RULES
|
---|
89 | ============================
|
---|
90 |
|
---|
91 | The following rules are for VENDOR CLASS and HID CLASS devices. CDC-ACM
|
---|
92 | CLASS and MIDI CLASS devices use the operating system's class driver and
|
---|
93 | don't need a custom driver.
|
---|
94 |
|
---|
95 | The host driver MUST iterate over all devices with the given VID/PID
|
---|
96 | numbers in their device descriptors and query the string representation for
|
---|
97 | the manufacturer name in USB language 0x0409 (English/US). It MUST compare
|
---|
98 | the ENTIRE string with your textual manufacturer identification chosen in
|
---|
99 | (2) above. A substring search for your domain or e-mail address is NOT
|
---|
100 | acceptable. The driver MUST NOT touch the device (other than querying the
|
---|
101 | descriptors) unless the strings match.
|
---|
102 |
|
---|
103 | For all USB devices with matching VID/PID and textual manufacturer
|
---|
104 | identification, the host driver must query the textual product
|
---|
105 | identification and string-compare it with the name of the product it can
|
---|
106 | control. It may only initialize the device if the product matches exactly.
|
---|
107 |
|
---|
108 | Objective Development provides examples for these matching rules with the
|
---|
109 | "PowerSwitch" project (using libusb) and with the "Automator" project
|
---|
110 | (using Windows calls on Windows and libusb on Unix).
|
---|
111 |
|
---|
112 |
|
---|
113 | Technical Notes:
|
---|
114 | ================
|
---|
115 |
|
---|
116 | Sharing the same VID/PID pair among devices is possible as long as ALL
|
---|
117 | drivers which match the VID/PID also perform matching on the textual
|
---|
118 | identification strings. This is easy on all operating systems except
|
---|
119 | Windows, since Windows establishes a static connection between the VID/PID
|
---|
120 | pair and a kernel level driver. All devices with the same VID/PID pair must
|
---|
121 | therefore use THE SAME kernel level driver.
|
---|
122 |
|
---|
123 | We therefore demand that you use libusb-win32 for VENDOR CLASS devices.
|
---|
124 | This is a generic kernel level driver which allows all types of USB access
|
---|
125 | for user space applications. This is only a partial solution of the
|
---|
126 | problem, though, because different device drivers may come with different
|
---|
127 | versions of libusb-win32 and they may not work with the libusb version of
|
---|
128 | the respective other driver. You are therefore encouraged to test your
|
---|
129 | driver against a broad range of libusb-win32 versions. Do not use new
|
---|
130 | features in new versions, or check for their existence before you use them.
|
---|
131 | When a new libusb-win32 becomes available, make sure that your driver is
|
---|
132 | compatible with it.
|
---|
133 |
|
---|
134 | For HID CLASS devices it is necessary that all those devices bind to the
|
---|
135 | same kernel driver: Microsoft's generic USB HID driver. This is true for
|
---|
136 | all HID devices except those with a specialized driver. Currently, the only
|
---|
137 | HIDs with specialized drivers are mice and keyboards. You therefore MUST
|
---|
138 | NOT use a shared VID/PID with mouse and keyboard devices.
|
---|
139 |
|
---|
140 | Sharing the same VID/PID among different products is unusual and probably
|
---|
141 | violates the USB specification. If you do it, you do it at your own risk.
|
---|
142 |
|
---|
143 | To avoid possible incompatibilities, we highly recommend that you get your
|
---|
144 | own VID/PID pair if you intend to sell your product. Objective
|
---|
145 | Development's commercial licenses for AVR-USB include a PID for
|
---|
146 | unrestricted exclusive use.
|
---|