| 3331 | kaklik | 1 | Royalty-Free Non-Exclusive License USB Product-ID | 
      
        |  |  | 2 | ================================================= | 
      
        |  |  | 3 |  | 
      
        |  |  | 4 | Version 2006-06-19 | 
      
        |  |  | 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 | 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 | 
      
        |  |  | 24 | conflicts, your device and host driver software MUST adhere to the rules | 
      
        |  |  | 25 | outlined below. | 
      
        |  |  | 26 |  | 
      
        |  |  | 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 | 
      
        |  |  | 29 | Implementers Forum, Inc. (see www.usb.org). The VID is registered for the | 
      
        |  |  | 30 | company name "Van Ooijen Technische Informatica". | 
      
        |  |  | 31 |  | 
      
        |  |  | 32 |  | 
      
        |  |  | 33 | RULES AND RESTRICTIONS | 
      
        |  |  | 34 | ====================== | 
      
        |  |  | 35 |  | 
      
        |  |  | 36 | (1) The USB device MUST provide a textual representation of the | 
      
        |  |  | 37 | manufacturer and product identification. The manufacturer identification | 
      
        |  |  | 38 | MUST be available at least in USB language 0x0409 (English/US). | 
      
        |  |  | 39 |  | 
      
        |  |  | 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 | 
      
        |  |  | 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 | 
      
        |  |  | 44 | Development http://www.obdev.at/avrusb/". | 
      
        |  |  | 45 |  | 
      
        |  |  | 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. | 
      
        |  |  | 48 |  | 
      
        |  |  | 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 | 
      
        |  |  | 51 | identification. | 
      
        |  |  | 52 |  | 
      
        |  |  | 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 | 
      
        |  |  | 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 | 
      
        |  |  | 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 | 
      
        |  |  | 59 | CDC-ACM CLASS devices, a generic class driver should be used and the | 
      
        |  |  | 60 | matching is based on the USB device class. | 
      
        |  |  | 61 |  | 
      
        |  |  | 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 | 
      
        |  |  | 64 | pair used: | 
      
        |  |  | 65 |  | 
      
        |  |  | 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. | 
      
        |  |  | 68 |  | 
      
        |  |  | 69 |  * Windows: The operating system performs VID/PID matching for the kernel | 
      
        |  |  | 70 |    level driver. You are REQUIRED to use libusb-win32 (see | 
      
        |  |  | 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 | 
      
        |  |  | 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. | 
      
        |  |  | 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 | 
      
        |  |  | 77 |    device as modem (COM-port). | 
      
        |  |  | 78 |  | 
      
        |  |  | 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 | 
      
        |  |  | 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. | 
      
        |  |  | 83 |  | 
      
        |  |  | 84 |  | 
      
        |  |  | 85 | HOW TO IMPLEMENT THESE RULES | 
      
        |  |  | 86 | ============================ | 
      
        |  |  | 87 |  | 
      
        |  |  | 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 | 
      
        |  |  | 90 | custom driver. | 
      
        |  |  | 91 |  | 
      
        |  |  | 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 | 
      
        |  |  | 94 | the manufacturer name in USB language 0x0409 (English/US). It MUST compare | 
      
        |  |  | 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 | 
      
        |  |  | 97 | acceptable. The driver MUST NOT touch the device (other than querying the | 
      
        |  |  | 98 | descriptors) unless the strings match. | 
      
        |  |  | 99 |  | 
      
        |  |  | 100 | For all USB devices with matching VID/PID and textual manufacturer | 
      
        |  |  | 101 | identification, the host driver must query the textual product | 
      
        |  |  | 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. | 
      
        |  |  | 104 |  | 
      
        |  |  | 105 | Objective Development provides examples for these matching rules with the | 
      
        |  |  | 106 | "PowerSwitch" project (using libusb) and with the "Automator" project | 
      
        |  |  | 107 | (using Windows calls on Windows and libusb on Unix). | 
      
        |  |  | 108 |  | 
      
        |  |  | 109 |  | 
      
        |  |  | 110 | Technical Notes: | 
      
        |  |  | 111 | ================ | 
      
        |  |  | 112 |  | 
      
        |  |  | 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 | 
      
        |  |  | 115 | identification strings. This is easy on all operating systems except | 
      
        |  |  | 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 | 
      
        |  |  | 118 | therefore use THE SAME kernel level driver. | 
      
        |  |  | 119 |  | 
      
        |  |  | 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 | 
      
        |  |  | 122 | for user space applications. This is only a partial solution of the | 
      
        |  |  | 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 | 
      
        |  |  | 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 | 
      
        |  |  | 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 | 
      
        |  |  | 129 | compatible with it. | 
      
        |  |  | 130 |  | 
      
        |  |  | 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 | 
      
        |  |  | 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 | 
      
        |  |  | 135 | NOT use a shared VID/PID with mouse and keyboard devices. | 
      
        |  |  | 136 |  | 
      
        |  |  | 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. | 
      
        |  |  | 139 |  | 
      
        |  |  | 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 | 
      
        |  |  | 142 | Development's commercial licenses for AVR-USB include a PID for | 
      
        |  |  | 143 | unrestricted exclusive use. |