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