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