| 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. |