diff options
Diffstat (limited to 'drivers/staging/usbip')
42 files changed, 2957 insertions, 16438 deletions
diff --git a/drivers/staging/usbip/README b/drivers/staging/usbip/README index c11be573548..41a2cf2e77a 100644 --- a/drivers/staging/usbip/README +++ b/drivers/staging/usbip/README @@ -2,5 +2,6 @@ TODO: - more discussion about the protocol - testing - review of the userspace interface + - document the protocol Please send patches for this code to Greg Kroah-Hartman <greg@kroah.com> diff --git a/drivers/staging/usbip/stub.h b/drivers/staging/usbip/stub.h index 6592aa2ad15..132adc57ebc 100644 --- a/drivers/staging/usbip/stub.h +++ b/drivers/staging/usbip/stub.h @@ -76,7 +76,9 @@ struct stub_unlink { __u32 status; }; -#define BUSID_SIZE 20 +/* same as SYSFS_BUS_ID_SIZE */ +#define BUSID_SIZE 32 + struct bus_id_priv { char name[BUSID_SIZE]; char status; diff --git a/drivers/staging/usbip/stub_dev.c b/drivers/staging/usbip/stub_dev.c index 8cbea42b69b..fce22f2bd8b 100644 --- a/drivers/staging/usbip/stub_dev.c +++ b/drivers/staging/usbip/stub_dev.c @@ -23,16 +23,10 @@ #include "usbip_common.h" #include "stub.h" -static int stub_probe(struct usb_interface *interface, - const struct usb_device_id *id); -static void stub_disconnect(struct usb_interface *interface); -static int stub_pre_reset(struct usb_interface *interface); -static int stub_post_reset(struct usb_interface *interface); - /* * Define device IDs here if you want to explicitly limit exportable devices. - * In the most cases, wild card matching will be ok because driver binding can - * be changed dynamically by a userland program. + * In most cases, wildcard matching will be okay because driver binding can be + * changed dynamically by a userland program. */ static struct usb_device_id stub_table[] = { #if 0 @@ -56,18 +50,9 @@ static struct usb_device_id stub_table[] = { }; MODULE_DEVICE_TABLE(usb, stub_table); -struct usb_driver stub_driver = { - .name = "usbip", - .probe = stub_probe, - .disconnect = stub_disconnect, - .id_table = stub_table, - .pre_reset = stub_pre_reset, - .post_reset = stub_post_reset, -}; - /* - * usbip_status shows status of usbip as long as this driver is bound to the - * target device. + * usbip_status shows the status of usbip-host as long as this driver is bound + * to the target device. */ static ssize_t show_status(struct device *dev, struct device_attribute *attr, char *buf) @@ -211,10 +196,11 @@ static void stub_shutdown_connection(struct usbip_device *ud) if (ud->tcp_tx && !task_is_dead(ud->tcp_tx)) kthread_stop(ud->tcp_tx); - /* 2. close the socket */ /* - * tcp_socket is freed after threads are killed. - * So usbip_xmit do not touch NULL socket. + * 2. close the socket + * + * tcp_socket is freed after threads are killed so that usbip_xmit does + * not touch NULL socket. */ if (ud->tcp_socket) { sock_release(ud->tcp_socket); @@ -234,8 +220,8 @@ static void stub_shutdown_connection(struct usbip_device *ud) list_del(&unlink->list); kfree(unlink); } - list_for_each_entry_safe(unlink, tmp, - &sdev->unlink_free, list) { + list_for_each_entry_safe(unlink, tmp, &sdev->unlink_free, + list) { list_del(&unlink->list); kfree(unlink); } @@ -262,22 +248,17 @@ static void stub_device_reset(struct usbip_device *ud) /* try to reset the device */ ret = usb_reset_device(udev); - usb_unlock_device(udev); spin_lock(&ud->lock); if (ret) { dev_err(&udev->dev, "device reset\n"); ud->status = SDEV_ST_ERROR; - } else { dev_info(&udev->dev, "device reset\n"); ud->status = SDEV_ST_AVAILABLE; - } spin_unlock(&ud->lock); - - return; } static void stub_device_unusable(struct usbip_device *ud) @@ -379,7 +360,7 @@ static int stub_probe(struct usb_interface *interface, /* check we should claim or not by busid_table */ busid_priv = get_busid_priv(udev_busid); - if (!busid_priv || (busid_priv->status == STUB_BUSID_REMOV) || + if (!busid_priv || (busid_priv->status == STUB_BUSID_REMOV) || (busid_priv->status == STUB_BUSID_OTHER)) { dev_info(&interface->dev, "%s is not in match_busid table... " "skip!\n", udev_busid); @@ -424,7 +405,6 @@ static int stub_probe(struct usb_interface *interface, udev_busid); usb_set_intfdata(interface, NULL); busid_priv->interf_count--; - return err; } @@ -432,7 +412,7 @@ static int stub_probe(struct usb_interface *interface, return 0; } - /* ok. this is my device. */ + /* ok, this is my device */ sdev = stub_device_alloc(udev, interface); if (!sdev) return -ENOMEM; @@ -447,7 +427,6 @@ static int stub_probe(struct usb_interface *interface, /* set private data to usb_interface */ usb_set_intfdata(interface, sdev); busid_priv->interf_count++; - busid_priv->sdev = sdev; err = stub_add_files(&interface->dev); @@ -457,7 +436,6 @@ static int stub_probe(struct usb_interface *interface, usb_put_intf(interface); busid_priv->interf_count = 0; - busid_priv->sdev = NULL; stub_device_free(sdev); return err; @@ -562,3 +540,12 @@ int stub_post_reset(struct usb_interface *interface) dev_dbg(&interface->dev, "post_reset\n"); return 0; } + +struct usb_driver stub_driver = { + .name = "usbip-host", + .probe = stub_probe, + .disconnect = stub_disconnect, + .id_table = stub_table, + .pre_reset = stub_pre_reset, + .post_reset = stub_post_reset, + }; diff --git a/drivers/staging/usbip/stub_main.c b/drivers/staging/usbip/stub_main.c index e9085d66394..a34249a9cb6 100644 --- a/drivers/staging/usbip/stub_main.c +++ b/drivers/staging/usbip/stub_main.c @@ -25,9 +25,7 @@ #define DRIVER_AUTHOR "Takahiro Hirofuchi" #define DRIVER_DESC "USB/IP Host Driver" -/* stub_priv is allocated from stub_priv_cache */ struct kmem_cache *stub_priv_cache; - /* * busid_tables defines matching busids that usbip can grab. A user can change * dynamically what device is locally used and what device is exported to a @@ -37,70 +35,60 @@ struct kmem_cache *stub_priv_cache; static struct bus_id_priv busid_table[MAX_BUSID]; static spinlock_t busid_table_lock; -int match_busid(const char *busid) +static void init_busid_table(void) { int i; - spin_lock(&busid_table_lock); - + memset(busid_table, 0, sizeof(busid_table)); for (i = 0; i < MAX_BUSID; i++) - if (busid_table[i].name[0]) - if (!strncmp(busid_table[i].name, busid, BUSID_SIZE)) { - /* already registerd */ - spin_unlock(&busid_table_lock); - return 0; - } - - spin_unlock(&busid_table_lock); + busid_table[i].status = STUB_BUSID_OTHER; - return 1; + spin_lock_init(&busid_table_lock); } -struct bus_id_priv *get_busid_priv(const char *busid) +/* + * Find the index of the busid by name. + * Must be called with busid_table_lock held. + */ +static int get_busid_idx(const char *busid) { int i; - - spin_lock(&busid_table_lock); + int idx = -1; for (i = 0; i < MAX_BUSID; i++) if (busid_table[i].name[0]) if (!strncmp(busid_table[i].name, busid, BUSID_SIZE)) { - /* already registerd */ - spin_unlock(&busid_table_lock); - return &(busid_table[i]); + idx = i; + break; } - - spin_unlock(&busid_table_lock); - - return NULL; + return idx; } -static ssize_t show_match_busid(struct device_driver *drv, char *buf) +struct bus_id_priv *get_busid_priv(const char *busid) { - int i; - char *out = buf; + int idx; + struct bus_id_priv *bid = NULL; spin_lock(&busid_table_lock); - - for (i = 0; i < MAX_BUSID; i++) - if (busid_table[i].name[0]) - out += sprintf(out, "%s ", busid_table[i].name); - + idx = get_busid_idx(busid); + if (idx >= 0) + bid = &(busid_table[idx]); spin_unlock(&busid_table_lock); - out += sprintf(out, "\n"); - - return out - buf; + return bid; } static int add_match_busid(char *busid) { int i; - - if (!match_busid(busid)) - return 0; + int ret = -1; spin_lock(&busid_table_lock); + /* already registered? */ + if (get_busid_idx(busid) >= 0) { + ret = 0; + goto out; + } for (i = 0; i < MAX_BUSID; i++) if (!busid_table[i].name[0]) { @@ -108,52 +96,55 @@ static int add_match_busid(char *busid) if ((busid_table[i].status != STUB_BUSID_ALLOC) && (busid_table[i].status != STUB_BUSID_REMOV)) busid_table[i].status = STUB_BUSID_ADDED; - spin_unlock(&busid_table_lock); - return 0; + ret = 0; + break; } +out: spin_unlock(&busid_table_lock); - return -1; + return ret; } int del_match_busid(char *busid) { - int i; + int idx; + int ret = -1; spin_lock(&busid_table_lock); + idx = get_busid_idx(busid); + if (idx < 0) + goto out; - for (i = 0; i < MAX_BUSID; i++) - if (!strncmp(busid_table[i].name, busid, BUSID_SIZE)) { - /* found */ - if (busid_table[i].status == STUB_BUSID_OTHER) - memset(busid_table[i].name, 0, BUSID_SIZE); - if ((busid_table[i].status != STUB_BUSID_OTHER) && - (busid_table[i].status != STUB_BUSID_ADDED)) { - busid_table[i].status = STUB_BUSID_REMOV; - } - spin_unlock(&busid_table_lock); - return 0; - } + /* found */ + ret = 0; + + if (busid_table[idx].status == STUB_BUSID_OTHER) + memset(busid_table[idx].name, 0, BUSID_SIZE); + + if ((busid_table[idx].status != STUB_BUSID_OTHER) && + (busid_table[idx].status != STUB_BUSID_ADDED)) + busid_table[idx].status = STUB_BUSID_REMOV; +out: spin_unlock(&busid_table_lock); - return -1; + return ret; } -static void init_busid_table(void) +static ssize_t show_match_busid(struct device_driver *drv, char *buf) { int i; + char *out = buf; - for (i = 0; i < MAX_BUSID; i++) { - memset(busid_table[i].name, 0, BUSID_SIZE); - busid_table[i].status = STUB_BUSID_OTHER; - busid_table[i].interf_count = 0; - busid_table[i].sdev = NULL; - busid_table[i].shutdown_busid = 0; - } + spin_lock(&busid_table_lock); + for (i = 0; i < MAX_BUSID; i++) + if (busid_table[i].name[0]) + out += sprintf(out, "%s ", busid_table[i].name); + spin_unlock(&busid_table_lock); + out += sprintf(out, "\n"); - spin_lock_init(&busid_table_lock); + return out - buf; } static ssize_t store_match_busid(struct device_driver *dev, const char *buf, @@ -175,23 +166,24 @@ static ssize_t store_match_busid(struct device_driver *dev, const char *buf, strncpy(busid, buf + 4, BUSID_SIZE); if (!strncmp(buf, "add ", 4)) { - if (add_match_busid(busid) < 0) + if (add_match_busid(busid) < 0) { return -ENOMEM; - else { + } else { pr_debug("add busid %s\n", busid); return count; } } else if (!strncmp(buf, "del ", 4)) { - if (del_match_busid(busid) < 0) + if (del_match_busid(busid) < 0) { return -ENODEV; - else { + } else { pr_debug("del busid %s\n", busid); return count; } - } else + } else { return -EINVAL; + } } -static DRIVER_ATTR(match_busid, S_IRUSR|S_IWUSR, show_match_busid, +static DRIVER_ATTR(match_busid, S_IRUSR | S_IWUSR, show_match_busid, store_match_busid); static struct stub_priv *stub_priv_pop_from_listhead(struct list_head *listhead) @@ -214,36 +206,30 @@ static struct stub_priv *stub_priv_pop(struct stub_device *sdev) spin_lock_irqsave(&sdev->priv_lock, flags); priv = stub_priv_pop_from_listhead(&sdev->priv_init); - if (priv) { - spin_unlock_irqrestore(&sdev->priv_lock, flags); - return priv; - } + if (priv) + goto done; priv = stub_priv_pop_from_listhead(&sdev->priv_tx); - if (priv) { - spin_unlock_irqrestore(&sdev->priv_lock, flags); - return priv; - } + if (priv) + goto done; priv = stub_priv_pop_from_listhead(&sdev->priv_free); - if (priv) { - spin_unlock_irqrestore(&sdev->priv_lock, flags); - return priv; - } +done: spin_unlock_irqrestore(&sdev->priv_lock, flags); - return NULL; + + return priv; } void stub_device_cleanup_urbs(struct stub_device *sdev) { struct stub_priv *priv; + struct urb *urb; dev_dbg(&sdev->udev->dev, "free sdev %p\n", sdev); while ((priv = stub_priv_pop(sdev))) { - struct urb *urb = priv->urb; - + urb = priv->urb; dev_dbg(&sdev->udev->dev, "free urb %p\n", urb); usb_kill_urb(urb); @@ -251,51 +237,46 @@ void stub_device_cleanup_urbs(struct stub_device *sdev) kfree(urb->transfer_buffer); kfree(urb->setup_packet); - usb_free_urb(urb); } } -static int __init usb_stub_init(void) +static int __init usbip_host_init(void) { int ret; - stub_priv_cache = kmem_cache_create("stub_priv", - sizeof(struct stub_priv), 0, - SLAB_HWCACHE_ALIGN, NULL); + stub_priv_cache = KMEM_CACHE(stub_priv, SLAB_HWCACHE_ALIGN); if (!stub_priv_cache) { - pr_err("create stub_priv_cache error\n"); + pr_err("kmem_cache_create failed\n"); return -ENOMEM; } ret = usb_register(&stub_driver); - if (ret) { + if (ret < 0) { pr_err("usb_register failed %d\n", ret); - goto error_usb_register; + goto err_usb_register; } - pr_info(DRIVER_DESC " " USBIP_VERSION "\n"); - - init_busid_table(); - ret = driver_create_file(&stub_driver.drvwrap.driver, &driver_attr_match_busid); - - if (ret) { - pr_err("create driver sysfs\n"); - goto error_create_file; + if (ret < 0) { + pr_err("driver_create_file failed\n"); + goto err_create_file; } + init_busid_table(); + pr_info(DRIVER_DESC " v" USBIP_VERSION "\n"); return ret; -error_create_file: + +err_create_file: usb_deregister(&stub_driver); -error_usb_register: +err_usb_register: kmem_cache_destroy(stub_priv_cache); return ret; } -static void __exit usb_stub_exit(void) +static void __exit usbip_host_exit(void) { driver_remove_file(&stub_driver.drvwrap.driver, &driver_attr_match_busid); @@ -309,8 +290,8 @@ static void __exit usb_stub_exit(void) kmem_cache_destroy(stub_priv_cache); } -module_init(usb_stub_init); -module_exit(usb_stub_exit); +module_init(usbip_host_init); +module_exit(usbip_host_exit); MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_DESCRIPTION(DRIVER_DESC); diff --git a/drivers/staging/usbip/stub_rx.c b/drivers/staging/usbip/stub_rx.c index bc57844600b..538fb9ee341 100644 --- a/drivers/staging/usbip/stub_rx.c +++ b/drivers/staging/usbip/stub_rx.c @@ -306,18 +306,18 @@ static int stub_recv_cmd_unlink(struct stub_device *sdev, static int valid_request(struct stub_device *sdev, struct usbip_header *pdu) { struct usbip_device *ud = &sdev->ud; + int valid = 0; if (pdu->base.devid == sdev->devid) { spin_lock(&ud->lock); if (ud->status == SDEV_ST_USED) { /* A request is valid. */ - spin_unlock(&ud->lock); - return 1; + valid = 1; } spin_unlock(&ud->lock); } - return 0; + return valid; } static struct stub_priv *stub_priv_alloc(struct stub_device *sdev, diff --git a/drivers/staging/usbip/stub_tx.c b/drivers/staging/usbip/stub_tx.c index fda2bc95e85..023fda305be 100644 --- a/drivers/staging/usbip/stub_tx.c +++ b/drivers/staging/usbip/stub_tx.c @@ -97,13 +97,12 @@ void stub_complete(struct urb *urb) /* link a urb to the queue of tx. */ spin_lock_irqsave(&sdev->priv_lock, flags); - if (priv->unlinking) { stub_enqueue_ret_unlink(sdev, priv->seqnum, urb->status); stub_free_priv_and_urb(priv); - } else + } else { list_move_tail(&priv->list, &sdev->priv_tx); - + } spin_unlock_irqrestore(&sdev->priv_lock, flags); /* wake up tx_thread */ @@ -113,10 +112,10 @@ void stub_complete(struct urb *urb) static inline void setup_base_pdu(struct usbip_header_basic *base, __u32 command, __u32 seqnum) { - base->command = command; - base->seqnum = seqnum; - base->devid = 0; - base->ep = 0; + base->command = command; + base->seqnum = seqnum; + base->devid = 0; + base->ep = 0; base->direction = 0; } @@ -232,7 +231,7 @@ static int stub_send_ret_submit(struct stub_device *sdev) if (txsize != sizeof(pdu_header) + urb->actual_length) { dev_err(&sdev->interface->dev, "actual length of urb %d does not " - "match iso packet sizes %lu\n", + "match iso packet sizes %zu\n", urb->actual_length, txsize-sizeof(pdu_header)); kfree(iov); diff --git a/drivers/staging/usbip/usbip_common.c b/drivers/staging/usbip/usbip_common.c index 433a3b6207d..f4b53d103c5 100644 --- a/drivers/staging/usbip/usbip_common.c +++ b/drivers/staging/usbip/usbip_common.c @@ -63,9 +63,9 @@ static void usbip_dump_buffer(char *buff, int bufflen) static void usbip_dump_pipe(unsigned int p) { unsigned char type = usb_pipetype(p); - unsigned char ep = usb_pipeendpoint(p); - unsigned char dev = usb_pipedevice(p); - unsigned char dir = usb_pipein(p); + unsigned char ep = usb_pipeendpoint(p); + unsigned char dev = usb_pipedevice(p); + unsigned char dir = usb_pipein(p); pr_debug("dev(%d) ep(%d) [%s] ", dev, ep, dir ? "IN" : "OUT"); @@ -204,7 +204,7 @@ static void usbip_dump_usb_ctrlrequest(struct usb_ctrlrequest *cmd) pr_debug("CLEAR_FEAT\n"); break; case USB_REQ_SET_FEATURE: - pr_debug("SET_FEAT \n"); + pr_debug("SET_FEAT\n"); break; case USB_REQ_SET_ADDRESS: pr_debug("SET_ADDRRS\n"); @@ -231,14 +231,14 @@ static void usbip_dump_usb_ctrlrequest(struct usb_ctrlrequest *cmd) pr_debug("SYNC_FRAME\n"); break; default: - pr_debug("REQ(%02X) \n", cmd->bRequest); + pr_debug("REQ(%02X)\n", cmd->bRequest); break; } usbip_dump_request_type(cmd->bRequestType); } else if ((cmd->bRequestType & USB_TYPE_MASK) == USB_TYPE_CLASS) { - pr_debug("CLASS \n"); + pr_debug("CLASS\n"); } else if ((cmd->bRequestType & USB_TYPE_MASK) == USB_TYPE_VENDOR) { - pr_debug("VENDOR \n"); + pr_debug("VENDOR\n"); } else if ((cmd->bRequestType & USB_TYPE_MASK) == USB_TYPE_RESERVED) { pr_debug("RESERVED\n"); } @@ -334,8 +334,8 @@ void usbip_dump_header(struct usbip_header *pdu) EXPORT_SYMBOL_GPL(usbip_dump_header); /* Send/receive messages over TCP/IP. I refer drivers/block/nbd.c */ -int usbip_xmit(int send, struct socket *sock, char *buf, - int size, int msg_flags) +int usbip_xmit(int send, struct socket *sock, char *buf, int size, + int msg_flags) { int result; struct msghdr msg; @@ -627,9 +627,8 @@ void usbip_header_correct_endian(struct usbip_header *pdu, int send) } EXPORT_SYMBOL_GPL(usbip_header_correct_endian); -static void usbip_iso_pakcet_correct_endian( - struct usbip_iso_packet_descriptor *iso, - int send) +static void usbip_iso_packet_correct_endian( + struct usbip_iso_packet_descriptor *iso, int send) { /* does not need all members. but copy all simply. */ if (send) { @@ -678,7 +677,7 @@ void *usbip_alloc_iso_desc_pdu(struct urb *urb, ssize_t *bufflen) iso = buff + (i * sizeof(*iso)); usbip_pack_iso(iso, &urb->iso_frame_desc[i], 1); - usbip_iso_pakcet_correct_endian(iso, 1); + usbip_iso_packet_correct_endian(iso, 1); } *bufflen = size; @@ -729,7 +728,7 @@ int usbip_recv_iso(struct usbip_device *ud, struct urb *urb) for (i = 0; i < np; i++) { iso = buff + (i * sizeof(*iso)); - usbip_iso_pakcet_correct_endian(iso, 0); + usbip_iso_packet_correct_endian(iso, 0); usbip_pack_iso(iso, &urb->iso_frame_desc[i], 0); total_length += urb->iso_frame_desc[i].actual_length; } @@ -839,19 +838,19 @@ int usbip_recv_xbuff(struct usbip_device *ud, struct urb *urb) } EXPORT_SYMBOL_GPL(usbip_recv_xbuff); -static int __init usbip_common_init(void) +static int __init usbip_core_init(void) { pr_info(DRIVER_DESC " v" USBIP_VERSION "\n"); return 0; } -static void __exit usbip_common_exit(void) +static void __exit usbip_core_exit(void) { return; } -module_init(usbip_common_init); -module_exit(usbip_common_exit); +module_init(usbip_core_init); +module_exit(usbip_core_exit); MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_DESCRIPTION(DRIVER_DESC); diff --git a/drivers/staging/usbip/usbip_common.h b/drivers/staging/usbip/usbip_common.h index 4a641c552b7..074ac4267d3 100644 --- a/drivers/staging/usbip/usbip_common.h +++ b/drivers/staging/usbip/usbip_common.h @@ -65,7 +65,7 @@ enum { #define usbip_dbg_flag_vhci_tx (usbip_debug_flag & usbip_debug_vhci_tx) #define usbip_dbg_flag_stub_rx (usbip_debug_flag & usbip_debug_stub_rx) #define usbip_dbg_flag_stub_tx (usbip_debug_flag & usbip_debug_stub_tx) -#define usbip_dbg_flag_vhci_sysfs (usbip_debug_flag & usbip_debug_vhci_sysfs) +#define usbip_dbg_flag_vhci_sysfs (usbip_debug_flag & usbip_debug_vhci_sysfs) extern unsigned long usbip_debug_flag; extern struct device_attribute dev_attr_usbip_debug; @@ -104,111 +104,110 @@ extern struct device_attribute dev_attr_usbip_debug; usbip_dbg_with_flag(usbip_debug_stub_tx, fmt , ##args) /* - * USB/IP request headers. - * Currently, we define 4 request types: + * USB/IP request headers * - * - CMD_SUBMIT transfers a USB request, corresponding to usb_submit_urb(). - * (client to server) - * - RET_RETURN transfers the result of CMD_SUBMIT. - * (server to client) - * - CMD_UNLINK transfers an unlink request of a pending USB request. + * Each request is transferred across the network to its counterpart, which + * facilitates the normal USB communication. The values contained in the headers + * are basically the same as in a URB. Currently, four request types are + * defined: + * + * - USBIP_CMD_SUBMIT: a USB request block, corresponds to usb_submit_urb() * (client to server) - * - RET_UNLINK transfers the result of CMD_UNLINK. + * + * - USBIP_RET_SUBMIT: the result of USBIP_CMD_SUBMIT * (server to client) * - * Note: The below request formats are based on the USB subsystem of Linux. Its - * details will be defined when other implementations come. + * - USBIP_CMD_UNLINK: an unlink request of a pending USBIP_CMD_SUBMIT, + * corresponds to usb_unlink_urb() + * (client to server) * + * - USBIP_RET_UNLINK: the result of USBIP_CMD_UNLINK + * (server to client) * */ +#define USBIP_CMD_SUBMIT 0x0001 +#define USBIP_RET_SUBMIT 0x0002 +#define USBIP_CMD_UNLINK 0x0003 +#define USBIP_RET_UNLINK 0x0004 -/* - * A basic header followed by other additional headers. +#define USBIP_DIR_IN 0x00 +#define USBIP_DIR_OUT 0x01 + +/** + * struct usbip_header_basic - data pertinent to every request + * @command: the usbip request type + * @seqnum: sequential number that identifies requests; incremented per + * connection + * @devid: specifies a remote USB device uniquely instead of busnum and devnum; + * in the stub driver, this value is ((busnum << 16) | devnum) + * @direction: direction of the transfer + * @ep: endpoint number */ struct usbip_header_basic { -#define USBIP_CMD_SUBMIT 0x0001 -#define USBIP_CMD_UNLINK 0x0002 -#define USBIP_RET_SUBMIT 0x0003 -#define USBIP_RET_UNLINK 0x0004 __u32 command; - - /* sequential number which identifies requests. - * incremented per connections */ __u32 seqnum; - - /* devid is used to specify a remote USB device uniquely instead - * of busnum and devnum in Linux. In the case of Linux stub_driver, - * this value is ((busnum << 16) | devnum) */ __u32 devid; - -#define USBIP_DIR_OUT 0 -#define USBIP_DIR_IN 1 __u32 direction; - __u32 ep; /* endpoint number */ + __u32 ep; } __packed; -/* - * An additional header for a CMD_SUBMIT packet. +/** + * struct usbip_header_cmd_submit - USBIP_CMD_SUBMIT packet header + * @transfer_flags: URB flags + * @transfer_buffer_length: the data size for (in) or (out) transfer + * @start_frame: initial frame for isochronous or interrupt transfers + * @number_of_packets: number of isochronous packets + * @interval: maximum time for the request on the server-side host controller + * @setup: setup data for a control request */ struct usbip_header_cmd_submit { - /* these values are basically the same as in a URB. */ - - /* the same in a URB. */ __u32 transfer_flags; - - /* set the following data size (out), - * or expected reading data size (in) */ __s32 transfer_buffer_length; /* it is difficult for usbip to sync frames (reserved only?) */ __s32 start_frame; - - /* the number of iso descriptors that follows this header */ __s32 number_of_packets; - - /* the maximum time within which this request works in a host - * controller of a server side */ __s32 interval; - /* set setup packet data for a CTRL request */ unsigned char setup[8]; } __packed; -/* - * An additional header for a RET_SUBMIT packet. +/** + * struct usbip_header_ret_submit - USBIP_RET_SUBMIT packet header + * @status: return status of a non-iso request + * @actual_length: number of bytes transferred + * @start_frame: initial frame for isochronous or interrupt transfers + * @number_of_packets: number of isochronous packets + * @error_count: number of errors for isochronous transfers */ struct usbip_header_ret_submit { __s32 status; - __s32 actual_length; /* returned data length */ - __s32 start_frame; /* ISO and INT */ - __s32 number_of_packets; /* ISO only */ - __s32 error_count; /* ISO only */ + __s32 actual_length; + __s32 start_frame; + __s32 number_of_packets; + __s32 error_count; } __packed; -/* - * An additional header for a CMD_UNLINK packet. +/** + * struct usbip_header_cmd_unlink - USBIP_CMD_UNLINK packet header + * @seqnum: the URB seqnum to unlink */ struct usbip_header_cmd_unlink { - __u32 seqnum; /* URB's seqnum that will be unlinked */ + __u32 seqnum; } __packed; -/* - * An additional header for a RET_UNLINK packet. +/** + * struct usbip_header_ret_unlink - USBIP_RET_UNLINK packet header + * @status: return status of the request */ struct usbip_header_ret_unlink { __s32 status; } __packed; -/* the same as usb_iso_packet_descriptor but packed for pdu */ -struct usbip_iso_packet_descriptor { - __u32 offset; - __u32 length; /* expected length */ - __u32 actual_length; - __u32 status; -} __packed; - -/* - * All usbip packets use a common header to keep code simple. +/** + * struct usbip_header - common header for all usbip packets + * @base: the basic header + * @u: packet type dependent header */ struct usbip_header { struct usbip_header_basic base; @@ -221,40 +220,15 @@ struct usbip_header { } u; } __packed; -int usbip_xmit(int, struct socket *, char *, int, int); -int usbip_sendmsg(struct socket *, struct msghdr *, int); - -static inline int interface_to_busnum(struct usb_interface *interface) -{ - struct usb_device *udev = interface_to_usbdev(interface); - return udev->bus->busnum; -} - -static inline int interface_to_devnum(struct usb_interface *interface) -{ - struct usb_device *udev = interface_to_usbdev(interface); - return udev->devnum; -} - -static inline int interface_to_infnum(struct usb_interface *interface) -{ - return interface->cur_altsetting->desc.bInterfaceNumber; -} - -#if 0 -int setnodelay(struct socket *); -int setquickack(struct socket *); -int setkeepalive(struct socket *socket); -void setreuse(struct socket *); -#endif - -struct socket *sockfd_to_socket(unsigned int); -int set_sockaddr(struct socket *socket, struct sockaddr_storage *ss); - -void usbip_dump_urb(struct urb *purb); -void usbip_dump_header(struct usbip_header *pdu); - -struct usbip_device; +/* + * This is the same as usb_iso_packet_descriptor but packed for pdu. + */ +struct usbip_iso_packet_descriptor { + __u32 offset; + __u32 length; /* expected length */ + __u32 actual_length; + __u32 status; +} __packed; enum usbip_side { USBIP_VHCI, @@ -277,20 +251,7 @@ enum usbip_status { VDEV_ST_ERROR }; -/* a common structure for stub_device and vhci_device */ -struct usbip_device { - enum usbip_side side; - enum usbip_status status; - - /* lock for status */ - spinlock_t lock; - - struct socket *tcp_socket; - - struct task_struct *tcp_rx; - struct task_struct *tcp_tx; - - /* event handler */ +/* event handler */ #define USBIP_EH_SHUTDOWN (1 << 0) #define USBIP_EH_BYE (1 << 1) #define USBIP_EH_RESET (1 << 2) @@ -307,6 +268,19 @@ struct usbip_device { #define VDEV_EVENT_ERROR_TCP (USBIP_EH_SHUTDOWN | USBIP_EH_RESET) #define VDEV_EVENT_ERROR_MALLOC (USBIP_EH_SHUTDOWN | USBIP_EH_UNUSABLE) +/* a common structure for stub_device and vhci_device */ +struct usbip_device { + enum usbip_side side; + enum usbip_status status; + + /* lock for status */ + spinlock_t lock; + + struct socket *tcp_socket; + + struct task_struct *tcp_rx; + struct task_struct *tcp_tx; + unsigned long event; struct task_struct *eh; wait_queue_head_t eh_waitq; @@ -318,17 +292,32 @@ struct usbip_device { } eh_ops; }; +#if 0 +int usbip_sendmsg(struct socket *, struct msghdr *, int); +int set_sockaddr(struct socket *socket, struct sockaddr_storage *ss); +int setnodelay(struct socket *); +int setquickack(struct socket *); +int setkeepalive(struct socket *socket); +void setreuse(struct socket *); +#endif + +/* usbip_common.c */ +void usbip_dump_urb(struct urb *purb); +void usbip_dump_header(struct usbip_header *pdu); + +int usbip_xmit(int send, struct socket *sock, char *buf, int size, + int msg_flags); +struct socket *sockfd_to_socket(unsigned int sockfd); + void usbip_pack_pdu(struct usbip_header *pdu, struct urb *urb, int cmd, int pack); - void usbip_header_correct_endian(struct usbip_header *pdu, int send); -/* some members of urb must be substituted before. */ -int usbip_recv_xbuff(struct usbip_device *ud, struct urb *urb); + +void *usbip_alloc_iso_desc_pdu(struct urb *urb, ssize_t *bufflen); /* some members of urb must be substituted before. */ int usbip_recv_iso(struct usbip_device *ud, struct urb *urb); -/* some members of urb must be substituted before. */ int usbip_pad_iso(struct usbip_device *ud, struct urb *urb); -void *usbip_alloc_iso_desc_pdu(struct urb *urb, ssize_t *bufflen); +int usbip_recv_xbuff(struct usbip_device *ud, struct urb *urb); /* usbip_event.c */ int usbip_start_eh(struct usbip_device *ud); @@ -336,4 +325,21 @@ void usbip_stop_eh(struct usbip_device *ud); void usbip_event_add(struct usbip_device *ud, unsigned long event); int usbip_event_happened(struct usbip_device *ud); +static inline int interface_to_busnum(struct usb_interface *interface) +{ + struct usb_device *udev = interface_to_usbdev(interface); + return udev->bus->busnum; +} + +static inline int interface_to_devnum(struct usb_interface *interface) +{ + struct usb_device *udev = interface_to_usbdev(interface); + return udev->devnum; +} + +static inline int interface_to_infnum(struct usb_interface *interface) +{ + return interface->cur_altsetting->desc.bInterfaceNumber; +} + #endif /* __USBIP_COMMON_H */ diff --git a/drivers/staging/usbip/userspace/AUTHORS b/drivers/staging/usbip/userspace/AUTHORS index 2f73e65d509..a27ea8d03ae 100644 --- a/drivers/staging/usbip/userspace/AUTHORS +++ b/drivers/staging/usbip/userspace/AUTHORS @@ -1,2 +1,3 @@ Takahiro Hirofuchi Robert Leibl +matt mooney <mfm@muteddisk.com> diff --git a/drivers/staging/usbip/userspace/Makefile.am b/drivers/staging/usbip/userspace/Makefile.am index 83f51b8df89..9ab19499fe0 100644 --- a/drivers/staging/usbip/userspace/Makefile.am +++ b/drivers/staging/usbip/userspace/Makefile.am @@ -1,11 +1,6 @@ SUBDIRS := libsrc src -includedir := @includedir@/usbip +includedir = @includedir@/usbip include_HEADERS := $(addprefix libsrc/, \ - usbip.h usbip_common.h vhci_driver.h stub_driver.h) + usbip_common.h vhci_driver.h usbip_host_driver.h) dist_man_MANS := $(addprefix doc/, usbip.8 usbipd.8 usbip_bind_driver.8) - -if INSTALL_USBIDS -pkgdata_DATA := usb.ids -EXTRA_DIST := $(pkgdata_DATA) -endif diff --git a/drivers/staging/usbip/userspace/README b/drivers/staging/usbip/userspace/README index 2ee84b9e7e0..63cd1071905 100644 --- a/drivers/staging/usbip/userspace/README +++ b/drivers/staging/usbip/userspace/README @@ -1,19 +1,19 @@ -# vim:tw=78:ts=4:expandtab:ai:sw=4 # # README for usbip-utils # -# Copyright (C) 2005-2008 Takahiro Hirofuchi +# Copyright (C) 2011 matt mooney <mfm@muteddisk.com> +# 2005-2008 Takahiro Hirofuchi [Requirements] - USB/IP device drivers - Its source code is included under $(top)/drivers/. + Found in the staging directory of the Linux kernel. - sysfsutils >= 2.0.0 - sysfsutils library + sysfsutils library - libwrap0-dev - tcp wrapper library + tcp wrapper library - gcc >= 4.0 @@ -21,195 +21,181 @@ - libtool, automake >= 1.9, autoconf >= 2.5.0, pkg-config + [Install] - 0. Skip here if you see a configure script. - $ ./autogen.sh + 0. Generate configuration scripts. + $ ./autogen.sh + + 1. Compile & install the userspace utilities. + $ ./configure [--with-tcp-wrappers=no] [--with-usbids-dir=<dir>] + $ make install - 1. Compile & install. - $ ./configure - $ make install + 2. Compile & install USB/IP drivers. - 2. Compile & install USB/IP drivers if not yet. [Usage] - server:# (Attach your USB device physically.) + server:# (Physically attach your USB device.) server:# insmod usbip-core.ko server:# insmod usbip-host.ko - - It was formerly named as stub.ko. server:# usbipd -D - - Start usbip daemon. + - Start usbip daemon. - server:# usbip_bind_driver --list - - List driver assignments for usb devices. - - server:# usbip_bind_driver --usbip 1-2 - - Bind usbip-host.ko to the device of busid 1-2. - - A usb device 1-2 is now exportable to other hosts! - - Use 'usbip_bind_driver --other 1-2' when you want to shutdown exporting - and use the device locally. + server:# usbip list -l + - List driver assignments for USB devices. + server:# usbip bind --busid 1-2 + - Bind usbip-host.ko to the device with busid 1-2. + - The USB device 1-2 is now exportable to other hosts! + - Use `usbip unbind --busid 1-2' to stop exporting the device. client:# insmod usbip-core.ko client:# insmod vhci-hcd.ko - - It was formerly named as vhci.ko. - client:# usbip --list server - - List exportable usb devices on the server. - - client:# usbip --attach server 1-2 - - Connect the remote USB device. - - client:# usbip --port - - Show virtual port status. + client:# usbip list --remote <host> + - List exported USB devices on the <host>. + + client:# usbip attach --host <host> --busid 1-2 + - Connect the remote USB device. + + client:# usbip port + - Show virtual port status. + + client:# usbip detach --port <port> + - Detach the USB device. + + +[Example] +--------------------------- + SERVER SIDE +--------------------------- +Physically attach your USB devices to this host. - client:# usbip --detach 0 - - Detach the usb device. - - -[Output Example] --------------------------------------------------------------------------------------------------------- -- SERVER SIDE (physically attach your USB devices to this host) ---------------------------------------- --------------------------------------------------------------------------------------------------------- -trois:# insmod (somewhere)/usbip-core.ko -trois:# insmod (somewhere)/usbip-host.ko -trois:# usbipd -D + trois:# insmod path/to/usbip-core.ko + trois:# insmod path/to/usbip-host.ko + trois:# usbipd -D + +In another terminal, let's look up what USB devices are physically +attached to this host. --------------------------------------------------------------------------------------------------------- -In another terminal, let's look up what usb devices are physically attached to -this host. We can see a usb storage device of busid 3-3.2 is now bound to -usb-storage driver. To export this device, we first mark the device as -"exportable"; the device is bound to usbip driver. Please remember you can not -export a usb hub. - - trois:# usbip_bind_driver --list - List USB devices - - busid 3-3.2 (04bb:0206) - 3-3.2:1.0 -> usb-storage - - - busid 3-3.1 (08bb:2702) - 3-3.1:1.0 -> snd-usb-audio - 3-3.1:1.1 -> snd-usb-audio - - - busid 3-3 (0409:0058) - 3-3:1.0 -> hub - - - busid 3-2 (0711:0902) - 3-2:1.0 -> none + trois:# usbip list -l + Local USB devices + ================= + - busid 1-1 (05a9:a511) + 1-1:1.0 -> ov511 - - busid 1-1 (05a9:a511) - 1-1:1.0 -> ov511 + - busid 3-2 (0711:0902) + 3-2:1.0 -> none - - busid 4-1 (046d:08b2) - 4-1:1.0 -> none - 4-1:1.1 -> none - 4-1:1.2 -> none + - busid 3-3.1 (08bb:2702) + 3-3.1:1.0 -> snd-usb-audio + 3-3.1:1.1 -> snd-usb-audio - - busid 5-2 (058f:9254) - 5-2:1.0 -> hub + - busid 3-3.2 (04bb:0206) + 3-3.2:1.0 -> usb-storage --------------------------------------------------------------------------------------------------------- -Mark the device of busid 3-3.2 as exportable. + - busid 3-3 (0409:0058) + 3-3:1.0 -> hub - trois:# usbip_bind_driver --usbip 3-3.2 - ** (process:24621): DEBUG: 3-3.2:1.0 -> none - ** (process:24621): DEBUG: write "add 3-3.2" to /sys/bus/usb/drivers/usbip/match_busid - ** Message: bind 3-3.2 to usbip, complete! + - busid 4-1 (046d:08b2) + 4-1:1.0 -> none + 4-1:1.1 -> none + 4-1:1.2 -> none - trois:# usbip_bind_driver --list - List USB devices - - busid 3-3.2 (04bb:0206) - 3-3.2:1.0 -> usbip - (snip) + - busid 5-2 (058f:9254) + 5-2:1.0 -> hub -Iterate the above operation for other devices if you like. +A USB storage device of busid 3-3.2 is now bound to the usb-storage +driver. To export this device, we first mark the device as +"exportable"; the device is bound to the usbip-host driver. Please +remember you can not export a USB hub. +Mark the device of busid 3-3.2 as exportable: --------------------------------------------------------------------------------------------------------- -- CLIENT SIDE ------------------------------------------------------------------------------------------ --------------------------------------------------------------------------------------------------------- -First, let's list available remote devices which are marked as exportable in -the server host. + trois:# usbip --debug bind --busid 3-3.2 + ... + usbip debug: usbip_bind.c:162:[unbind_other] 3-3.2:1.0 -> usb-storage + ... + bind device on busid 3-3.2: complete - deux:# insmod (somewhere)/usbip-core.ko - deux:# insmod (somewhere)/vhci_hcd.ko + trois:# usbip list -l + Local USB devices + ================= + ... - deux:# usbip --list 10.0.0.3 - - 10.0.0.3 - 1-1: Prolific Technology, Inc. : unknown product (067b:3507) - : /sys/devices/pci0000:00/0000:00:1f.2/usb1/1-1 - : (Defined at Interface level) / unknown subclass / unknown protocol (00/00/00) - : 0 - Mass Storage / SCSI / Bulk (Zip) (08/06/50) + - busid 3-3.2 (04bb:0206) + 3-3.2:1.0 -> usbip-host + ... - 1-2.2.1: Apple Computer, Inc. : unknown product (05ac:0203) - : /sys/devices/pci0000:00/0000:00:1f.2/usb1/1-2/1-2.2/1-2.2.1 - : (Defined at Interface level) / unknown subclass / unknown protocol (00/00/00) - : 0 - Human Interface Devices / Boot Interface Subclass / Keyboard (03/01/01) +--------------------------- + CLIENT SIDE +--------------------------- +First, let's list available remote devices that are marked as +exportable on the host. - 1-2.2.3: OmniVision Technologies, Inc. : OV511+ WebCam (05a9:a511) - : /sys/devices/pci0000:00/0000:00:1f.2/usb1/1-2/1-2.2/1-2.2.3 - : (Defined at Interface level) / unknown subclass / unknown protocol (00/00/00) - : 0 - Vendor Specific Class / unknown subclass / unknown protocol (ff/00/00) + deux:# insmod path/to/usbip-core.ko + deux:# insmod path/to/vhci-hcd.ko - 3-1: Logitech, Inc. : QuickCam Pro 4000 (046d:08b2) - : /sys/devices/pci0000:00/0000:00:1e.0/0000:02:0a.0/usb3/3-1 - : (Defined at Interface level) / unknown subclass / unknown protocol (00/00/00) - : 0 - Data / unknown subclass / unknown protocol (0a/ff/00) - : 1 - Audio / Control Device / unknown protocol (01/01/00) - : 2 - Audio / Streaming / unknown protocol (01/02/00) - - 4-1: Logitech, Inc. : QuickCam Express (046d:0870) - : /sys/devices/pci0000:00/0000:00:1e.0/0000:02:0a.1/usb4/4-1 - : Vendor Specific Class / Vendor Specific Subclass / Vendor Specific Protocol (ff/ff/ff) - : 0 - Vendor Specific Class / Vendor Specific Subclass / Vendor Specific Protocol (ff/ff/ff) - - 4-2: Texas Instruments Japan : unknown product (08bb:2702) - : /sys/devices/pci0000:00/0000:00:1e.0/0000:02:0a.1/usb4/4-2 - : (Defined at Interface level) / unknown subclass / unknown protocol (00/00/00) - : 0 - Audio / Control Device / unknown protocol (01/01/00) - : 1 - Audio / Streaming / unknown protocol (01/02/00) - --------------------------------------------------------------------------------------------------------- -Attach a remote usb device! - - deux:# usbip --attach 10.0.0.3 1-1 - port 0 attached - --------------------------------------------------------------------------------------------------------- -Show what devices are attached to this client. - - deux:# usbip --port - Port 00: <Port in Use> at Full Speed(12Mbps) - Prolific Technology, Inc. : unknown product (067b:3507) - 6-1 -> usbip://10.0.0.3:3240/1-1 (remote bus/dev 001/004) - 6-1:1.0 used by usb-storage - /sys/class/scsi_device/0:0:0:0/device - /sys/class/scsi_host/host0/device - /sys/block/sda/device + deux:# usbip list --remote 10.0.0.3 + Exportable USB devices + ====================== + - 10.0.0.3 + 1-1: Prolific Technology, Inc. : unknown product (067b:3507) + : /sys/devices/pci0000:00/0000:00:1f.2/usb1/1-1 + : (Defined at Interface level) / unknown subclass / unknown protocol (00/00/00) + : 0 - Mass Storage / SCSI / Bulk (Zip) (08/06/50) --------------------------------------------------------------------------------------------------------- -Detach the imported device. + 1-2.2.1: Apple Computer, Inc. : unknown product (05ac:0203) + : /sys/devices/pci0000:00/0000:00:1f.2/usb1/1-2/1-2.2/1-2.2.1 + : (Defined at Interface level) / unknown subclass / unknown protocol (00/00/00) + : 0 - Human Interface Devices / Boot Interface Subclass / Keyboard (03/01/01) - deux:# usbip --detach 0 - port 0 detached + 1-2.2.3: OmniVision Technologies, Inc. : OV511+ WebCam (05a9:a511) + : /sys/devices/pci0000:00/0000:00:1f.2/usb1/1-2/1-2.2/1-2.2.3 + : (Defined at Interface level) / unknown subclass / unknown protocol (00/00/00) + : 0 - Vendor Specific Class / unknown subclass / unknown protocol (ff/00/00) --------------------------------------------------------------------------------------------------------- - - -[Check List] - - See Debug Tips in the project wiki. - - http://usbip.wiki.sourceforge.net/how-to-debug-usbip + 3-1: Logitech, Inc. : QuickCam Pro 4000 (046d:08b2) + : /sys/devices/pci0000:00/0000:00:1e.0/0000:02:0a.0/usb3/3-1 + : (Defined at Interface level) / unknown subclass / unknown protocol (00/00/00) + : 0 - Data / unknown subclass / unknown protocol (0a/ff/00) + : 1 - Audio / Control Device / unknown protocol (01/01/00) + : 2 - Audio / Streaming / unknown protocol (01/02/00) + +Attach a remote USB device: + + deux:# usbip attach --host 10.0.0.3 --busid 1-1 + port 0 attached + +Show the devices attached to this client: + + deux:# usbip port + Port 00: <Port in Use> at Full Speed(12Mbps) + Prolific Technology, Inc. : unknown product (067b:3507) + 6-1 -> usbip://10.0.0.3:3240/1-1 (remote bus/dev 001/004) + 6-1:1.0 used by usb-storage + /sys/class/scsi_device/0:0:0:0/device + /sys/class/scsi_host/host0/device + /sys/block/sda/device + +Detach the imported device: + + deux:# usbip detach --port 0 + port 0 detached + + +[Checklist] + - See 'Debug Tips' on the project wiki. + - http://usbip.wiki.sourceforge.net/how-to-debug-usbip - usbip-host.ko must be bound to the target device. - - See /proc/bus/usb/devices and find "Driver=..." lines of the device. + - See /proc/bus/usb/devices and find "Driver=..." lines of the device. - Shutdown firewall. - - usbip now uses TCP port 3240. + - usbip now uses TCP port 3240. - Disable SELinux. - - If possible, compile your kernel with CONFIG_USB_DEBUG flag and try - again. - - Check your kernel and daemon messages. - ex. /var/log/{messages, kern.log, daemon.log, syslog} + - If possible, compile your kernel with CONFIG_USB_DEBUG flag and try again. + - Check the kernel and daemon messages. [Contact] - Mailing List: usbip-devel _at_ lists.sourceforge.net + Mailing List: linux-usb@vger.kernel.org diff --git a/drivers/staging/usbip/userspace/cleanup.sh b/drivers/staging/usbip/userspace/cleanup.sh index da2f89bd17c..955c3ccb729 100755 --- a/drivers/staging/usbip/userspace/cleanup.sh +++ b/drivers/staging/usbip/userspace/cleanup.sh @@ -1,10 +1,12 @@ -#!/bin/sh -x - +#!/bin/sh if [ -r Makefile ]; then make distclean fi -FILES="configure cscope.out Makefile.in depcomp compile config.guess config.sub config.h.in~ config.log config.status ltmain.sh libtool config.h.in autom4te.cache missing aclocal.m4 install-sh cmd/Makefile.in lib/Makefile.in Makefile lib/Makefile cmd/Makefile" +FILES="aclocal.m4 autom4te.cache compile config.guess config.h.in config.log \ + config.status config.sub configure cscope.out depcomp install-sh \ + libsrc/Makefile libsrc/Makefile.in libtool ltmain.sh Makefile \ + Makefile.in missing src/Makefile src/Makefile.in" -rm -Rf $FILES +rm -vRf $FILES diff --git a/drivers/staging/usbip/userspace/configure.ac b/drivers/staging/usbip/userspace/configure.ac index e3afa159116..bf5cf49cb55 100644 --- a/drivers/staging/usbip/userspace/configure.ac +++ b/drivers/staging/usbip/userspace/configure.ac @@ -1,8 +1,8 @@ dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) -AC_INIT([usbip], [0.1.8], [usbip-devel@lists.sourceforge.net]) -AC_DEFINE([USBIP_VERSION], [0x000106], [numeric version number]) +AC_INIT([usbip-utils], [1.1.1], [linux-usb@vger.kernel.org]) +AC_DEFINE([USBIP_VERSION], [0x00000111], [binary-coded decimal version number]) CURRENT=0 REVISION=1 @@ -29,7 +29,7 @@ AC_PROG_MAKE_SET AC_HEADER_DIRENT AC_HEADER_STDC AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h netinet/in.h stdint.h stdlib.h dnl - string.h strings.h sys/socket.h syslog.h unistd.h]) + string.h sys/socket.h syslog.h unistd.h]) # Checks for typedefs, structures, and compiler characteristics. AC_TYPE_INT32_T @@ -41,7 +41,7 @@ AC_TYPE_UINT8_T # Checks for library functions. AC_FUNC_REALLOC -AC_CHECK_FUNCS([bzero memset mkdir regcomp socket strchr strerror strstr dnl +AC_CHECK_FUNCS([memset mkdir regcomp socket strchr strerror strstr dnl strtoul]) AC_CHECK_HEADER([sysfs/libsysfs.h], @@ -85,26 +85,12 @@ AC_ARG_WITH([tcp-wrappers], [AC_MSG_RESULT([no]); LIBS="$saved_LIBS"])]) # Sets directory containing usb.ids. -USBIDS_DIR='${datadir}/usbip' AC_ARG_WITH([usbids-dir], [AS_HELP_STRING([--with-usbids-dir=DIR], - [where usb.ids is found (default ${datadir}/usbip)])], - [USBIDS_DIR=$withval]) + [where usb.ids is found (default /usr/share/hwdata/)])], + [USBIDS_DIR=$withval], [USBIDS_DIR="/usr/share/hwdata/"]) AC_SUBST([USBIDS_DIR]) -dnl FIXME: when disabled, empty directry is created -usbids=install -AC_ARG_ENABLE([usbids-install], - [AS_HELP_STRING([--enable-usbids-install], - [install usb.ids (default)])], - [AS_CASE([$enableval], - [yes], [usbids=install], - [no], [usbids=notinstall], - [AC_MSG_ERROR( - [bad value ${enableval} for --enable-usbids-install])] - )]) -AM_CONDITIONAL([INSTALL_USBIDS], [test x$usbids = xinstall]) - GLIB2_REQUIRED=2.6.0 PKG_CHECK_MODULES([PACKAGE], [glib-2.0 >= $GLIB2_REQUIRED]) AC_SUBST([PACKAGE_CFLAGS]) diff --git a/drivers/staging/usbip/userspace/libsrc/Makefile.am b/drivers/staging/usbip/userspace/libsrc/Makefile.am index 77ecf6b844b..4921189e026 100644 --- a/drivers/staging/usbip/userspace/libsrc/Makefile.am +++ b/drivers/staging/usbip/userspace/libsrc/Makefile.am @@ -1,7 +1,7 @@ -libusbip_la_CPPFLAGS := -DUSBIDS_FILE='"@USBIDS_DIR@/usb.ids"' -libusbip_la_CFLAGS := @EXTRA_CFLAGS@ -libusbip_la_LDFLAGS := -version-info @LIBUSBIP_VERSION@ +libusbip_la_CPPFLAGS = -DUSBIDS_FILE='"@USBIDS_DIR@/usb.ids"' +libusbip_la_CFLAGS = @EXTRA_CFLAGS@ +libusbip_la_LDFLAGS = -version-info @LIBUSBIP_VERSION@ lib_LTLIBRARIES := libusbip.la -libusbip_la_SOURCES := names.c names.h stub_driver.c stub_driver.h usbip.h \ +libusbip_la_SOURCES := names.c names.h usbip_host_driver.c usbip_host_driver.h \ usbip_common.c usbip_common.h vhci_driver.c vhci_driver.h diff --git a/drivers/staging/usbip/userspace/libsrc/stub_driver.c b/drivers/staging/usbip/userspace/libsrc/stub_driver.c deleted file mode 100644 index cc3364345f5..00000000000 --- a/drivers/staging/usbip/userspace/libsrc/stub_driver.c +++ /dev/null @@ -1,391 +0,0 @@ -/* - * Copyright (C) 2005-2007 Takahiro Hirofuchi - */ - -#include <sys/types.h> -#include <sys/stat.h> -#include <unistd.h> - -#include "usbip.h" - -/* kernel module name */ -static const char *usbip_stub_driver_name = "usbip-host"; - - -struct usbip_stub_driver *stub_driver; - -static struct sysfs_driver *open_sysfs_stub_driver(void) -{ - int ret; - - char sysfs_mntpath[SYSFS_PATH_MAX]; - char stub_driver_path[SYSFS_PATH_MAX]; - struct sysfs_driver *stub_driver; - - - ret = sysfs_get_mnt_path(sysfs_mntpath, SYSFS_PATH_MAX); - if (ret < 0) { - err("sysfs must be mounted"); - return NULL; - } - - snprintf(stub_driver_path, SYSFS_PATH_MAX, "%s/%s/usb/%s/%s", - sysfs_mntpath, SYSFS_BUS_NAME, SYSFS_DRIVERS_NAME, - usbip_stub_driver_name); - - stub_driver = sysfs_open_driver_path(stub_driver_path); - if (!stub_driver) { - err("usbip-core.ko and usbip-host.ko must be loaded"); - return NULL; - } - - return stub_driver; -} - - -#define SYSFS_OPEN_RETRIES 100 - -/* only the first interface value is true! */ -static int32_t read_attr_usbip_status(struct usb_device *udev) -{ - char attrpath[SYSFS_PATH_MAX]; - struct sysfs_attribute *attr; - int value = 0; - int ret; - struct stat s; - int retries = SYSFS_OPEN_RETRIES; - - /* This access is racy! - * - * Just after detach, our driver removes the sysfs - * files and recreates them. - * - * We may try and fail to open the usbip_status of - * an exported device in the (short) window where - * it has been removed and not yet recreated. - * - * This is a bug in the interface. Nothing we can do - * except work around it here by polling for the sysfs - * usbip_status to reappear. - */ - - snprintf(attrpath, SYSFS_PATH_MAX, "%s/%s:%d.%d/usbip_status", - udev->path, udev->busid, - udev->bConfigurationValue, - 0); - - while (retries > 0) { - if (stat(attrpath, &s) == 0) - break; - - if (errno != ENOENT) { - err("error stat'ing %s", attrpath); - return -1; - } - - usleep(10000); /* 10ms */ - retries--; - } - - if (retries == 0) - err("usbip_status not ready after %d retries", - SYSFS_OPEN_RETRIES); - else if (retries < SYSFS_OPEN_RETRIES) - info("warning: usbip_status ready after %d retries", - SYSFS_OPEN_RETRIES - retries); - - attr = sysfs_open_attribute(attrpath); - if (!attr) { - err("open %s", attrpath); - return -1; - } - - ret = sysfs_read_attribute(attr); - if (ret) { - err("read %s", attrpath); - sysfs_close_attribute(attr); - return -1; - } - - value = atoi(attr->value); - - sysfs_close_attribute(attr); - - return value; -} - - -static void usbip_exported_device_delete(void *dev) -{ - struct usbip_exported_device *edev = - (struct usbip_exported_device *) dev; - - sysfs_close_device(edev->sudev); - free(dev); -} - - -static struct usbip_exported_device *usbip_exported_device_new(char *sdevpath) -{ - struct usbip_exported_device *edev = NULL; - - edev = (struct usbip_exported_device *) calloc(1, sizeof(*edev)); - if (!edev) { - err("alloc device"); - return NULL; - } - - edev->sudev = sysfs_open_device_path(sdevpath); - if (!edev->sudev) { - err("open %s", sdevpath); - goto err; - } - - read_usb_device(edev->sudev, &edev->udev); - - edev->status = read_attr_usbip_status(&edev->udev); - if (edev->status < 0) - goto err; - - /* reallocate buffer to include usb interface data */ - size_t size = sizeof(*edev) + edev->udev.bNumInterfaces * sizeof(struct usb_interface); - edev = (struct usbip_exported_device *) realloc(edev, size); - if (!edev) { - err("alloc device"); - goto err; - } - - for (int i=0; i < edev->udev.bNumInterfaces; i++) - read_usb_interface(&edev->udev, i, &edev->uinf[i]); - - return edev; - -err: - if (edev && edev->sudev) - sysfs_close_device(edev->sudev); - if (edev) - free(edev); - return NULL; -} - - -static int check_new(struct dlist *dlist, struct sysfs_device *target) -{ - struct sysfs_device *dev; - - dlist_for_each_data(dlist, dev, struct sysfs_device) { - if (!strncmp(dev->bus_id, target->bus_id, SYSFS_BUS_ID_SIZE)) - /* found. not new */ - return 0; - } - - return 1; -} - -static void delete_nothing(void *dev __attribute__((unused))) -{ - /* do not delete anything. but, its container will be deleted. */ -} - -static int refresh_exported_devices(void) -{ - struct sysfs_device *suinf; /* sysfs_device of usb_interface */ - struct dlist *suinf_list; - - struct sysfs_device *sudev; /* sysfs_device of usb_device */ - struct dlist *sudev_list; - - - sudev_list = dlist_new_with_delete(sizeof(struct sysfs_device), delete_nothing); - - suinf_list = sysfs_get_driver_devices(stub_driver->sysfs_driver); - if (!suinf_list) { - printf("Bind usbip-host.ko to a usb device to be exportable!\n"); - goto bye; - } - - /* collect unique USB devices (not interfaces) */ - dlist_for_each_data(suinf_list, suinf, struct sysfs_device) { - - /* get usb device of this usb interface */ - sudev = sysfs_get_device_parent(suinf); - if (!sudev) { - err("get parent dev of %s", suinf->name); - continue; - } - - if (check_new(sudev_list, sudev)) { - dlist_unshift(sudev_list, sudev); - } - } - - dlist_for_each_data(sudev_list, sudev, struct sysfs_device) { - struct usbip_exported_device *edev; - - edev = usbip_exported_device_new(sudev->path); - if (!edev) { - err("usbip_exported_device new"); - continue; - } - - dlist_unshift(stub_driver->edev_list, (void *) edev); - stub_driver->ndevs++; - } - - - dlist_destroy(sudev_list); - -bye: - - return 0; -} - -int usbip_stub_refresh_device_list(void) -{ - int ret; - - if (stub_driver->edev_list) - dlist_destroy(stub_driver->edev_list); - - stub_driver->ndevs = 0; - - stub_driver->edev_list = dlist_new_with_delete(sizeof(struct usbip_exported_device), - usbip_exported_device_delete); - if (!stub_driver->edev_list) { - err("alloc dlist"); - return -1; - } - - ret = refresh_exported_devices(); - if (ret < 0) - return ret; - - return 0; -} - -int usbip_stub_driver_open(void) -{ - int ret; - - - stub_driver = (struct usbip_stub_driver *) calloc(1, sizeof(*stub_driver)); - if (!stub_driver) { - err("alloc stub_driver"); - return -1; - } - - stub_driver->ndevs = 0; - - stub_driver->edev_list = dlist_new_with_delete(sizeof(struct usbip_exported_device), - usbip_exported_device_delete); - if (!stub_driver->edev_list) { - err("alloc dlist"); - goto err; - } - - stub_driver->sysfs_driver = open_sysfs_stub_driver(); - if (!stub_driver->sysfs_driver) - goto err; - - ret = refresh_exported_devices(); - if (ret < 0) - goto err; - - return 0; - - -err: - if (stub_driver->sysfs_driver) - sysfs_close_driver(stub_driver->sysfs_driver); - if (stub_driver->edev_list) - dlist_destroy(stub_driver->edev_list); - free(stub_driver); - - stub_driver = NULL; - return -1; -} - - -void usbip_stub_driver_close(void) -{ - if (!stub_driver) - return; - - if (stub_driver->edev_list) - dlist_destroy(stub_driver->edev_list); - if (stub_driver->sysfs_driver) - sysfs_close_driver(stub_driver->sysfs_driver); - free(stub_driver); - - stub_driver = NULL; -} - -int usbip_stub_export_device(struct usbip_exported_device *edev, int sockfd) -{ - char attrpath[SYSFS_PATH_MAX]; - struct sysfs_attribute *attr; - char sockfd_buff[30]; - int ret; - - - if (edev->status != SDEV_ST_AVAILABLE) { - info("device not available, %s", edev->udev.busid); - switch( edev->status ) { - case SDEV_ST_ERROR: - info(" status SDEV_ST_ERROR"); - break; - case SDEV_ST_USED: - info(" status SDEV_ST_USED"); - break; - default: - info(" status unknown: 0x%x", edev->status); - } - return -1; - } - - /* only the first interface is true */ - snprintf(attrpath, sizeof(attrpath), "%s/%s:%d.%d/%s", - edev->udev.path, - edev->udev.busid, - edev->udev.bConfigurationValue, 0, - "usbip_sockfd"); - - attr = sysfs_open_attribute(attrpath); - if (!attr) { - err("open %s", attrpath); - return -1; - } - - snprintf(sockfd_buff, sizeof(sockfd_buff), "%d\n", sockfd); - - dbg("write: %s", sockfd_buff); - - ret = sysfs_write_attribute(attr, sockfd_buff, strlen(sockfd_buff)); - if (ret < 0) { - err("write sockfd %s to %s", sockfd_buff, attrpath); - goto err_write_sockfd; - } - - info("connect %s", edev->udev.busid); - -err_write_sockfd: - sysfs_close_attribute(attr); - - return ret; -} - -struct usbip_exported_device *usbip_stub_get_device(int num) -{ - struct usbip_exported_device *edev; - struct dlist *dlist = stub_driver->edev_list; - int count = 0; - - dlist_for_each_data(dlist, edev, struct usbip_exported_device) { - if (num == count) - return edev; - else - count++ ; - } - - return NULL; -} diff --git a/drivers/staging/usbip/userspace/libsrc/stub_driver.h b/drivers/staging/usbip/userspace/libsrc/stub_driver.h deleted file mode 100644 index 3107d18de65..00000000000 --- a/drivers/staging/usbip/userspace/libsrc/stub_driver.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2005-2007 Takahiro Hirofuchi - */ - -#ifndef _USBIP_STUB_DRIVER_H -#define _USBIP_STUB_DRIVER_H - -#include "usbip.h" - - -struct usbip_stub_driver { - int ndevs; - struct sysfs_driver *sysfs_driver; - - struct dlist *edev_list; /* list of exported device */ -}; - -struct usbip_exported_device { - struct sysfs_device *sudev; - - int32_t status; - struct usb_device udev; - struct usb_interface uinf[]; -}; - - -extern struct usbip_stub_driver *stub_driver; - -int usbip_stub_driver_open(void); -void usbip_stub_driver_close(void); - -int usbip_stub_refresh_device_list(void); -int usbip_stub_export_device(struct usbip_exported_device *edev, int sockfd); - -struct usbip_exported_device *usbip_stub_get_device(int num); -#endif diff --git a/drivers/staging/usbip/userspace/libsrc/usbip.h b/drivers/staging/usbip/userspace/libsrc/usbip.h deleted file mode 100644 index 7cb8e6fef35..00000000000 --- a/drivers/staging/usbip/userspace/libsrc/usbip.h +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (C) 2005-2007 Takahiro Hirofuchi - */ - -#ifndef _USBIP_H -#define _USBIP_H - -#ifdef HAVE_CONFIG_H -#include "../config.h" -#endif - -#include "usbip_common.h" -#include "stub_driver.h" -#include "vhci_driver.h" -#ifdef DMALLOC -#include <dmalloc.h> -#endif - -#endif diff --git a/drivers/staging/usbip/userspace/libsrc/usbip_common.c b/drivers/staging/usbip/userspace/libsrc/usbip_common.c index a128a924b27..154b4b1103e 100644 --- a/drivers/staging/usbip/userspace/libsrc/usbip_common.c +++ b/drivers/staging/usbip/userspace/libsrc/usbip_common.c @@ -2,9 +2,12 @@ * Copyright (C) 2005-2007 Takahiro Hirofuchi */ -#include "usbip.h" +#include "usbip_common.h" #include "names.h" +#undef PROGNAME +#define PROGNAME "libusbip" + int usbip_use_syslog = 0; int usbip_use_stderr = 0; int usbip_use_debug = 0; @@ -64,7 +67,7 @@ const char *usbip_speed_string(int num) #define DBG_UINF_INTEGER(name)\ dbg("%-20s = %x", to_string(name), (int) uinf->name) -void dump_usb_interface(struct usb_interface *uinf) +void dump_usb_interface(struct usbip_usb_interface *uinf) { char buff[100]; usbip_names_get_class(buff, sizeof(buff), @@ -74,7 +77,7 @@ void dump_usb_interface(struct usb_interface *uinf) dbg("%-20s = %s", "Interface(C/SC/P)", buff); } -void dump_usb_device(struct usb_device *udev) +void dump_usb_device(struct usbip_usb_device *udev) { char buff[100]; @@ -117,19 +120,19 @@ int read_attr_value(struct sysfs_device *dev, const char *name, const char *form attr = sysfs_open_attribute(attrpath); if (!attr) { - err("open attr %s", attrpath); + dbg("sysfs_open_attribute failed: %s", attrpath); return 0; } ret = sysfs_read_attribute(attr); if (ret < 0) { - err("read attr"); + dbg("sysfs_read_attribute failed"); goto err; } ret = sscanf(attr->value, format, &num); if (ret < 1) { - err("sscanf"); + dbg("sscanf failed"); goto err; } @@ -151,19 +154,19 @@ int read_attr_speed(struct sysfs_device *dev) attr = sysfs_open_attribute(attrpath); if (!attr) { - err("open attr"); + dbg("sysfs_open_attribute failed: %s", attrpath); return 0; } ret = sysfs_read_attribute(attr); if (ret < 0) { - err("read attr"); + dbg("sysfs_read_attribute failed"); goto err; } ret = sscanf(attr->value, "%s\n", speed); if (ret < 1) { - err("sscanf"); + dbg("sscanf failed"); goto err; } err: @@ -181,7 +184,7 @@ err: do { (object)->name = (type) read_attr_value(dev, to_string(name), format); } while (0) -int read_usb_device(struct sysfs_device *sdev, struct usb_device *udev) +int read_usb_device(struct sysfs_device *sdev, struct usbip_usb_device *udev) { uint32_t busnum, devnum; @@ -209,7 +212,8 @@ int read_usb_device(struct sysfs_device *sdev, struct usb_device *udev) return 0; } -int read_usb_interface(struct usb_device *udev, int i, struct usb_interface *uinf) +int read_usb_interface(struct usbip_usb_device *udev, int i, + struct usbip_usb_interface *uinf) { char busid[SYSFS_BUS_ID_SIZE]; struct sysfs_device *sif; @@ -218,7 +222,7 @@ int read_usb_interface(struct usb_device *udev, int i, struct usb_interface *uin sif = sysfs_open_device("usb", busid); if (!sif) { - err("open sif of %s", busid); + dbg("sysfs_open_device(\"usb\", \"%s\") failed", busid); return -1; } diff --git a/drivers/staging/usbip/userspace/libsrc/usbip_common.h b/drivers/staging/usbip/userspace/libsrc/usbip_common.h index c254b5481f7..eedefbd12ea 100644 --- a/drivers/staging/usbip/userspace/libsrc/usbip_common.h +++ b/drivers/staging/usbip/userspace/libsrc/usbip_common.h @@ -2,21 +2,18 @@ * Copyright (C) 2005-2007 Takahiro Hirofuchi */ -#ifndef _USBIP_COMMON_H -#define _USBIP_COMMON_H +#ifndef __USBIP_COMMON_H +#define __USBIP_COMMON_H + +#include <sysfs/libsysfs.h> -#include <unistd.h> #include <stdint.h> -#include <syslog.h> -#include <errno.h> #include <stdio.h> -#include <string.h> #include <stdlib.h> -#include <strings.h> +#include <string.h> -#include <sysfs/libsysfs.h> -#include <netdb.h> -#include <sys/socket.h> +#include <syslog.h> +#include <unistd.h> #ifndef USBIDS_FILE #define USBIDS_FILE "/usr/share/hwdata/usb.ids" @@ -26,7 +23,59 @@ #define VHCI_STATE_PATH "/var/run/vhci_hcd" #endif -//#include <linux/usb_ch9.h> +/* kernel module names */ +#define USBIP_CORE_MOD_NAME "usbip-core" +#define USBIP_HOST_DRV_NAME "usbip-host" +#define USBIP_VHCI_DRV_NAME "vhci_hcd" + +extern int usbip_use_syslog; +extern int usbip_use_stderr; +extern int usbip_use_debug ; + +#define PROGNAME "usbip" + +#define pr_fmt(fmt) "%s: %s: " fmt "\n", PROGNAME +#define dbg_fmt(fmt) pr_fmt("%s:%d:[%s] " fmt), "debug", \ + __FILE__, __LINE__, __FUNCTION__ + +#define err(fmt, args...) \ + do { \ + if (usbip_use_syslog) { \ + syslog(LOG_ERR, pr_fmt(fmt), "error", ##args); \ + } \ + if (usbip_use_stderr) { \ + fprintf(stderr, pr_fmt(fmt), "error", ##args); \ + } \ + } while (0) + +#define info(fmt, args...) \ + do { \ + if (usbip_use_syslog) { \ + syslog(LOG_INFO, pr_fmt(fmt), "info", ##args); \ + } \ + if (usbip_use_stderr) { \ + fprintf(stderr, pr_fmt(fmt), "info", ##args); \ + } \ + } while (0) + +#define dbg(fmt, args...) \ + do { \ + if (usbip_use_debug) { \ + if (usbip_use_syslog) { \ + syslog(LOG_DEBUG, dbg_fmt(fmt), ##args); \ + } \ + if (usbip_use_stderr) { \ + fprintf(stderr, dbg_fmt(fmt), ##args); \ + } \ + } \ + } while (0) + +#define BUG() \ + do { \ + err("sorry, it's a bug!"); \ + abort(); \ + } while (0) + enum usb_device_speed { USB_SPEED_UNKNOWN = 0, /* enumerating */ USB_SPEED_LOW, USB_SPEED_FULL, /* usb 1.1 */ @@ -51,66 +100,14 @@ enum usbip_device_status{ VDEV_ST_ERROR }; -extern int usbip_use_syslog; -extern int usbip_use_stderr; -extern int usbip_use_debug ; - -#define err(fmt, args...) do { \ - if (usbip_use_syslog) { \ - syslog(LOG_ERR, "usbip err: %13s:%4d (%-12s) " fmt "\n", \ - __FILE__, __LINE__, __FUNCTION__, ##args); \ - } \ - if (usbip_use_stderr) { \ - fprintf(stderr, "usbip err: %13s:%4d (%-12s) " fmt "\n", \ - __FILE__, __LINE__, __FUNCTION__, ##args); \ - } \ -} while (0) - -#define notice(fmt, args...) do { \ - if (usbip_use_syslog) { \ - syslog(LOG_DEBUG, "usbip: " fmt, ##args); \ - } \ - if (usbip_use_stderr) { \ - fprintf(stderr, "usbip: " fmt "\n", ##args); \ - } \ -} while (0) - -#define info(fmt, args...) do { \ - if (usbip_use_syslog) { \ - syslog(LOG_DEBUG, fmt, ##args); \ - } \ - if (usbip_use_stderr) { \ - fprintf(stderr, fmt "\n", ##args); \ - } \ -} while (0) - -#define dbg(fmt, args...) do { \ - if (usbip_use_debug) { \ - if (usbip_use_syslog) { \ - syslog(LOG_DEBUG, "usbip dbg: %13s:%4d (%-12s) " fmt, \ - __FILE__, __LINE__, __FUNCTION__, ##args); \ - } \ - if (usbip_use_stderr) { \ - fprintf(stderr, "usbip dbg: %13s:%4d (%-12s) " fmt "\n", \ - __FILE__, __LINE__, __FUNCTION__, ##args); \ - } \ - } \ -} while (0) - - -#define BUG() do { err("sorry, it's a bug"); abort(); } while (0) - - -struct usb_interface { +struct usbip_usb_interface { uint8_t bInterfaceClass; uint8_t bInterfaceSubClass; uint8_t bInterfaceProtocol; uint8_t padding; /* alignment */ } __attribute__((packed)); - - -struct usb_device { +struct usbip_usb_device { char path[SYSFS_PATH_MAX]; char busid[SYSFS_BUS_ID_SIZE]; @@ -132,11 +129,12 @@ struct usb_device { #define to_string(s) #s -void dump_usb_interface(struct usb_interface *); -void dump_usb_device(struct usb_device *); -int read_usb_device(struct sysfs_device *sdev, struct usb_device *udev); +void dump_usb_interface(struct usbip_usb_interface *); +void dump_usb_device(struct usbip_usb_device *); +int read_usb_device(struct sysfs_device *sdev, struct usbip_usb_device *udev); int read_attr_value(struct sysfs_device *dev, const char *name, const char *format); -int read_usb_interface(struct usb_device *udev, int i, struct usb_interface *uinf); +int read_usb_interface(struct usbip_usb_device *udev, int i, + struct usbip_usb_interface *uinf); const char *usbip_speed_string(int num); const char *usbip_status_string(int32_t status); @@ -146,4 +144,4 @@ void usbip_names_free(void); void usbip_names_get_product(char *buff, size_t size, uint16_t vendor, uint16_t product); void usbip_names_get_class(char *buff, size_t size, uint8_t class, uint8_t subclass, uint8_t protocol); -#endif +#endif /* __USBIP_COMMON_H */ diff --git a/drivers/staging/usbip/userspace/libsrc/usbip_host_driver.c b/drivers/staging/usbip/userspace/libsrc/usbip_host_driver.c new file mode 100644 index 00000000000..71a449cf50d --- /dev/null +++ b/drivers/staging/usbip/userspace/libsrc/usbip_host_driver.c @@ -0,0 +1,401 @@ +/* + * Copyright (C) 2011 matt mooney <mfm@muteddisk.com> + * 2005-2007 Takahiro Hirofuchi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <sys/types.h> +#include <sys/stat.h> + +#include <errno.h> +#include <unistd.h> + +#include "usbip_common.h" +#include "usbip_host_driver.h" + +#undef PROGNAME +#define PROGNAME "libusbip" + +struct usbip_host_driver *host_driver; + +#define SYSFS_OPEN_RETRIES 100 + +/* only the first interface value is true! */ +static int32_t read_attr_usbip_status(struct usbip_usb_device *udev) +{ + char attrpath[SYSFS_PATH_MAX]; + struct sysfs_attribute *attr; + int value = 0; + int rc; + struct stat s; + int retries = SYSFS_OPEN_RETRIES; + + /* This access is racy! + * + * Just after detach, our driver removes the sysfs + * files and recreates them. + * + * We may try and fail to open the usbip_status of + * an exported device in the (short) window where + * it has been removed and not yet recreated. + * + * This is a bug in the interface. Nothing we can do + * except work around it here by polling for the sysfs + * usbip_status to reappear. + */ + + snprintf(attrpath, SYSFS_PATH_MAX, "%s/%s:%d.%d/usbip_status", + udev->path, udev->busid, udev->bConfigurationValue, 0); + + while (retries > 0) { + if (stat(attrpath, &s) == 0) + break; + + if (errno != ENOENT) { + dbg("stat failed: %s", attrpath); + return -1; + } + + usleep(10000); /* 10ms */ + retries--; + } + + if (retries == 0) + dbg("usbip_status not ready after %d retries", + SYSFS_OPEN_RETRIES); + else if (retries < SYSFS_OPEN_RETRIES) + dbg("warning: usbip_status ready after %d retries", + SYSFS_OPEN_RETRIES - retries); + + attr = sysfs_open_attribute(attrpath); + if (!attr) { + dbg("sysfs_open_attribute failed: %s", attrpath); + return -1; + } + + rc = sysfs_read_attribute(attr); + if (rc) { + dbg("sysfs_read_attribute failed: %s", attrpath); + sysfs_close_attribute(attr); + return -1; + } + + value = atoi(attr->value); + + sysfs_close_attribute(attr); + + return value; +} + +static struct usbip_exported_device *usbip_exported_device_new(char *sdevpath) +{ + struct usbip_exported_device *edev = NULL; + size_t size; + int i; + + edev = calloc(1, sizeof(*edev)); + if (!edev) { + dbg("calloc failed"); + return NULL; + } + + edev->sudev = sysfs_open_device_path(sdevpath); + if (!edev->sudev) { + dbg("sysfs_open_device_path failed: %s", sdevpath); + goto err; + } + + read_usb_device(edev->sudev, &edev->udev); + + edev->status = read_attr_usbip_status(&edev->udev); + if (edev->status < 0) + goto err; + + /* reallocate buffer to include usb interface data */ + size = sizeof(*edev) + edev->udev.bNumInterfaces * + sizeof(struct usbip_usb_interface); + + edev = realloc(edev, size); + if (!edev) { + dbg("realloc failed"); + goto err; + } + + for (i = 0; i < edev->udev.bNumInterfaces; i++) + read_usb_interface(&edev->udev, i, &edev->uinf[i]); + + return edev; +err: + if (edev && edev->sudev) + sysfs_close_device(edev->sudev); + if (edev) + free(edev); + + return NULL; +} + +static int check_new(struct dlist *dlist, struct sysfs_device *target) +{ + struct sysfs_device *dev; + + dlist_for_each_data(dlist, dev, struct sysfs_device) { + if (!strncmp(dev->bus_id, target->bus_id, SYSFS_BUS_ID_SIZE)) + /* device found and is not new */ + return 0; + } + return 1; +} + +static void delete_nothing(void *unused_data) +{ + /* + * NOTE: Do not delete anything, but the container will be deleted. + */ + (void) unused_data; +} + +static int refresh_exported_devices(void) +{ + /* sysfs_device of usb_interface */ + struct sysfs_device *suintf; + struct dlist *suintf_list; + /* sysfs_device of usb_device */ + struct sysfs_device *sudev; + struct dlist *sudev_list; + struct usbip_exported_device *edev; + + sudev_list = dlist_new_with_delete(sizeof(struct sysfs_device), + delete_nothing); + + suintf_list = sysfs_get_driver_devices(host_driver->sysfs_driver); + if (!suintf_list) { + /* + * Not an error condition. There are simply no devices bound to + * the driver yet. + */ + dbg("bind " USBIP_HOST_DRV_NAME ".ko to a usb device to be " + "exportable!"); + return 0; + } + + /* collect unique USB devices (not interfaces) */ + dlist_for_each_data(suintf_list, suintf, struct sysfs_device) { + /* get usb device of this usb interface */ + sudev = sysfs_get_device_parent(suintf); + if (!sudev) { + dbg("sysfs_get_device_parent failed: %s", suintf->name); + continue; + } + + if (check_new(sudev_list, sudev)) { + /* insert item at head of list */ + dlist_unshift(sudev_list, sudev); + } + } + + dlist_for_each_data(sudev_list, sudev, struct sysfs_device) { + edev = usbip_exported_device_new(sudev->path); + if (!edev) { + dbg("usbip_exported_device_new failed"); + continue; + } + + dlist_unshift(host_driver->edev_list, edev); + host_driver->ndevs++; + } + + dlist_destroy(sudev_list); + + return 0; +} + +static struct sysfs_driver *open_sysfs_host_driver(void) +{ + char bus_type[] = "usb"; + char sysfs_mntpath[SYSFS_PATH_MAX]; + char host_drv_path[SYSFS_PATH_MAX]; + struct sysfs_driver *host_drv; + int rc; + + rc = sysfs_get_mnt_path(sysfs_mntpath, SYSFS_PATH_MAX); + if (rc < 0) { + dbg("sysfs_get_mnt_path failed"); + return NULL; + } + + snprintf(host_drv_path, SYSFS_PATH_MAX, "%s/%s/%s/%s/%s", + sysfs_mntpath, SYSFS_BUS_NAME, bus_type, SYSFS_DRIVERS_NAME, + USBIP_HOST_DRV_NAME); + + host_drv = sysfs_open_driver_path(host_drv_path); + if (!host_drv) { + dbg("sysfs_open_driver_path failed"); + return NULL; + } + + return host_drv; +} + +static void usbip_exported_device_delete(void *dev) +{ + struct usbip_exported_device *edev = dev; + sysfs_close_device(edev->sudev); + free(dev); +} + +int usbip_host_driver_open(void) +{ + int rc; + + host_driver = calloc(1, sizeof(*host_driver)); + if (!host_driver) { + dbg("calloc failed"); + return -1; + } + + host_driver->ndevs = 0; + host_driver->edev_list = + dlist_new_with_delete(sizeof(struct usbip_exported_device), + usbip_exported_device_delete); + if (!host_driver->edev_list) { + dbg("dlist_new_with_delete failed"); + goto err_free_host_driver; + } + + host_driver->sysfs_driver = open_sysfs_host_driver(); + if (!host_driver->sysfs_driver) + goto err_destroy_edev_list; + + rc = refresh_exported_devices(); + if (rc < 0) + goto err_close_sysfs_driver; + + return 0; + +err_close_sysfs_driver: + sysfs_close_driver(host_driver->sysfs_driver); +err_destroy_edev_list: + dlist_destroy(host_driver->edev_list); +err_free_host_driver: + free(host_driver); + host_driver = NULL; + + return -1; +} + +void usbip_host_driver_close(void) +{ + if (!host_driver) + return; + + if (host_driver->edev_list) + dlist_destroy(host_driver->edev_list); + if (host_driver->sysfs_driver) + sysfs_close_driver(host_driver->sysfs_driver); + + free(host_driver); + host_driver = NULL; +} + +int usbip_host_refresh_device_list(void) +{ + int rc; + + if (host_driver->edev_list) + dlist_destroy(host_driver->edev_list); + + host_driver->ndevs = 0; + host_driver->edev_list = + dlist_new_with_delete(sizeof(struct usbip_exported_device), + usbip_exported_device_delete); + if (!host_driver->edev_list) { + dbg("dlist_new_with_delete failed"); + return -1; + } + + rc = refresh_exported_devices(); + if (rc < 0) + return -1; + + return 0; +} + +int usbip_host_export_device(struct usbip_exported_device *edev, int sockfd) +{ + char attr_name[] = "usbip_sockfd"; + char attr_path[SYSFS_PATH_MAX]; + struct sysfs_attribute *attr; + char sockfd_buff[30]; + int ret; + + if (edev->status != SDEV_ST_AVAILABLE) { + dbg("device not available: %s", edev->udev.busid); + switch (edev->status) { + case SDEV_ST_ERROR: + dbg("status SDEV_ST_ERROR"); + break; + case SDEV_ST_USED: + dbg("status SDEV_ST_USED"); + break; + default: + dbg("status unknown: 0x%x", edev->status); + } + return -1; + } + + /* only the first interface is true */ + snprintf(attr_path, sizeof(attr_path), "%s/%s:%d.%d/%s", + edev->udev.path, edev->udev.busid, + edev->udev.bConfigurationValue, 0, attr_name); + + attr = sysfs_open_attribute(attr_path); + if (!attr) { + dbg("sysfs_open_attribute failed: %s", attr_path); + return -1; + } + + snprintf(sockfd_buff, sizeof(sockfd_buff), "%d\n", sockfd); + dbg("write: %s", sockfd_buff); + + ret = sysfs_write_attribute(attr, sockfd_buff, strlen(sockfd_buff)); + if (ret < 0) { + dbg("sysfs_write_attribute failed: sockfd %s to %s", + sockfd_buff, attr_path); + goto err_write_sockfd; + } + + dbg("connect: %s", edev->udev.busid); + +err_write_sockfd: + sysfs_close_attribute(attr); + + return ret; +} + +struct usbip_exported_device *usbip_host_get_device(int num) +{ + struct usbip_exported_device *edev; + struct dlist *dlist = host_driver->edev_list; + int cnt = 0; + + dlist_for_each_data(dlist, edev, struct usbip_exported_device) { + if (num == cnt) + return edev; + else + cnt++; + } + + return NULL; +} diff --git a/drivers/staging/usbip/userspace/libsrc/usbip_host_driver.h b/drivers/staging/usbip/userspace/libsrc/usbip_host_driver.h new file mode 100644 index 00000000000..34fd14cbfc4 --- /dev/null +++ b/drivers/staging/usbip/userspace/libsrc/usbip_host_driver.h @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2011 matt mooney <mfm@muteddisk.com> + * 2005-2007 Takahiro Hirofuchi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef __USBIP_HOST_DRIVER_H +#define __USBIP_HOST_DRIVER_H + +#include <stdint.h> +#include "usbip_common.h" + +struct usbip_host_driver { + int ndevs; + struct sysfs_driver *sysfs_driver; + /* list of exported device */ + struct dlist *edev_list; +}; + +struct usbip_exported_device { + struct sysfs_device *sudev; + int32_t status; + struct usbip_usb_device udev; + struct usbip_usb_interface uinf[]; +}; + +extern struct usbip_host_driver *host_driver; + +int usbip_host_driver_open(void); +void usbip_host_driver_close(void); + +int usbip_host_refresh_device_list(void); +int usbip_host_export_device(struct usbip_exported_device *edev, int sockfd); +struct usbip_exported_device *usbip_host_get_device(int num); + +#endif /* __USBIP_HOST_DRIVER_H */ diff --git a/drivers/staging/usbip/userspace/libsrc/vhci_driver.c b/drivers/staging/usbip/userspace/libsrc/vhci_driver.c index db43f8d2eb8..abbc285f433 100644 --- a/drivers/staging/usbip/userspace/libsrc/vhci_driver.c +++ b/drivers/staging/usbip/userspace/libsrc/vhci_driver.c @@ -2,11 +2,11 @@ * Copyright (C) 2005-2007 Takahiro Hirofuchi */ +#include "usbip_common.h" +#include "vhci_driver.h" -#include "usbip.h" - - -static const char vhci_driver_name[] = "vhci_hcd"; +#undef PROGNAME +#define PROGNAME "libusbip" struct usbip_vhci_driver *vhci_driver; @@ -16,17 +16,19 @@ static struct usbip_imported_device *imported_device_init(struct usbip_imported_ sudev = sysfs_open_device("usb", busid); if (!sudev) { - err("sysfs_open_device %s", busid); + dbg("sysfs_open_device failed: %s", busid); goto err; } read_usb_device(sudev, &idev->udev); sysfs_close_device(sudev); /* add class devices of this imported device */ - struct class_device *cdev; - dlist_for_each_data(vhci_driver->cdev_list, cdev, struct class_device) { - if (!strncmp(cdev->devpath, idev->udev.path, strlen(idev->udev.path))) { - struct class_device *new_cdev; + struct usbip_class_device *cdev; + dlist_for_each_data(vhci_driver->cdev_list, cdev, + struct usbip_class_device) { + if (!strncmp(cdev->dev_path, idev->udev.path, + strlen(idev->udev.path))) { + struct usbip_class_device *new_cdev; /* alloc and copy because dlist is linked from only one list */ new_cdev = calloc(1, sizeof(*new_cdev)); @@ -53,7 +55,7 @@ static int parse_status(char *value) for (int i = 0; i < vhci_driver->nports; i++) - bzero(&vhci_driver->idev[i], sizeof(struct usbip_imported_device)); + memset(&vhci_driver->idev[i], 0, sizeof(vhci_driver->idev[i])); /* skip a header line */ @@ -69,7 +71,7 @@ static int parse_status(char *value) &devid, &socket, lbusid); if (ret < 5) { - err("scanf %d", ret); + dbg("sscanf failed: %d", ret); BUG(); } @@ -90,16 +92,16 @@ static int parse_status(char *value) idev->busnum = (devid >> 16); idev->devnum = (devid & 0x0000ffff); - idev->cdev_list = dlist_new(sizeof(struct class_device)); + idev->cdev_list = dlist_new(sizeof(struct usbip_class_device)); if (!idev->cdev_list) { - err("init new device"); + dbg("dlist_new failed"); return -1; } if (idev->status != VDEV_ST_NULL && idev->status != VDEV_ST_NOTASSIGNED) { idev = imported_device_init(idev, lbusid); if (!idev) { - err("init new device"); + dbg("imported_device_init failed"); return -1; } } @@ -118,29 +120,29 @@ static int parse_status(char *value) static int check_usbip_device(struct sysfs_class_device *cdev) { - char clspath[SYSFS_PATH_MAX]; /* /sys/class/video4linux/video0/device */ - char devpath[SYSFS_PATH_MAX]; /* /sys/devices/platform/vhci_hcd/usb6/6-1:1.1 */ - + char class_path[SYSFS_PATH_MAX]; /* /sys/class/video4linux/video0/device */ + char dev_path[SYSFS_PATH_MAX]; /* /sys/devices/platform/vhci_hcd/usb6/6-1:1.1 */ int ret; + struct usbip_class_device *usbip_cdev; - snprintf(clspath, sizeof(clspath), "%s/device", cdev->path); + snprintf(class_path, sizeof(class_path), "%s/device", cdev->path); - ret = sysfs_get_link(clspath, devpath, SYSFS_PATH_MAX); - if (!ret) { - if (!strncmp(devpath, vhci_driver->hc_device->path, - strlen(vhci_driver->hc_device->path))) { + ret = sysfs_get_link(class_path, dev_path, sizeof(dev_path)); + if (ret == 0) { + if (!strncmp(dev_path, vhci_driver->hc_device->path, + strlen(vhci_driver->hc_device->path))) { /* found usbip device */ - struct class_device *cdev; - - cdev = calloc(1, sizeof(*cdev)); + usbip_cdev = calloc(1, sizeof(*usbip_cdev)); if (!cdev) { - err("calloc cdev"); + dbg("calloc failed"); return -1; } - dlist_unshift(vhci_driver->cdev_list, (void*) cdev); - strncpy(cdev->clspath, clspath, sizeof(cdev->clspath)); - strncpy(cdev->devpath, devpath, sizeof(cdev->clspath)); - dbg(" found %s %s", clspath, devpath); + dlist_unshift(vhci_driver->cdev_list, usbip_cdev); + strncpy(usbip_cdev->class_path, class_path, + sizeof(usbip_cdev->class_path)); + strncpy(usbip_cdev->dev_path, dev_path, + sizeof(usbip_cdev->dev_path)); + dbg("found: %s %s", class_path, dev_path); } } @@ -157,11 +159,11 @@ static int search_class_for_usbip_device(char *cname) class = sysfs_open_class(cname); if (!class) { - err("open class"); + dbg("sysfs_open_class failed"); return -1; } - dbg("class %s", class->name); + dbg("class: %s", class->name); cdev_list = sysfs_get_class_devices(class); if (!cdev_list) @@ -169,7 +171,7 @@ static int search_class_for_usbip_device(char *cname) goto out; dlist_for_each_data(cdev_list, cdev, struct sysfs_class_device) { - dbg(" cdev %s", cdev->name); + dbg("cdev: %s", cdev->name); ret = check_usbip_device(cdev); if (ret < 0) goto out; @@ -187,11 +189,22 @@ static int refresh_class_device_list(void) int ret; struct dlist *cname_list; char *cname; + char sysfs_mntpath[SYSFS_PATH_MAX]; + char class_path[SYSFS_PATH_MAX]; + + ret = sysfs_get_mnt_path(sysfs_mntpath, SYSFS_PATH_MAX); + if (ret < 0) { + dbg("sysfs_get_mnt_path failed"); + return -1; + } + + snprintf(class_path, sizeof(class_path), "%s/%s", sysfs_mntpath, + SYSFS_CLASS_NAME); /* search under /sys/class */ - cname_list = sysfs_open_directory_list("/sys/class"); + cname_list = sysfs_open_directory_list(class_path); if (!cname_list) { - err("open class directory"); + dbg("sysfs_open_directory failed"); return -1; } @@ -221,45 +234,42 @@ static int refresh_imported_device_list(void) attr_status = sysfs_get_device_attr(vhci_driver->hc_device, "status"); if (!attr_status) { - err("get attr %s of %s", "status", vhci_driver->hc_device->name); + dbg("sysfs_get_device_attr(\"status\") failed: %s", + vhci_driver->hc_device->name); return -1; } - dbg("name %s, path %s, len %d, method %d\n", attr_status->name, - attr_status->path, attr_status->len, attr_status->method); - - dbg("%s", attr_status->value); + dbg("name: %s path: %s len: %d method: %d value: %s", + attr_status->name, attr_status->path, attr_status->len, + attr_status->method, attr_status->value); return parse_status(attr_status->value); } static int get_nports(void) { + char *c; int nports = 0; struct sysfs_attribute *attr_status; attr_status = sysfs_get_device_attr(vhci_driver->hc_device, "status"); if (!attr_status) { - err("get attr %s of %s", "status", vhci_driver->hc_device->name); + dbg("sysfs_get_device_attr(\"status\") failed: %s", + vhci_driver->hc_device->name); return -1; } - dbg("name %s, path %s, len %d, method %d\n", attr_status->name, - attr_status->path, attr_status->len, attr_status->method); - - dbg("%s", attr_status->value); + dbg("name: %s path: %s len: %d method: %d value: %s", + attr_status->name, attr_status->path, attr_status->len, + attr_status->method, attr_status->value); - { - char *c; - - /* skip a header line */ - c = strchr(attr_status->value, '\n') + 1; + /* skip a header line */ + c = strchr(attr_status->value, '\n') + 1; - while (*c != '\0') { - /* go to the next line */ - c = strchr(c, '\n') + 1; - nports += 1; - } + while (*c != '\0') { + /* go to the next line */ + c = strchr(c, '\n') + 1; + nports += 1; } return nports; @@ -275,20 +285,21 @@ static int get_hc_busid(char *sysfs_mntpath, char *hc_busid) int found = 0; - snprintf(sdriver_path, SYSFS_PATH_MAX, "%s/%s/platform/%s/%s", - sysfs_mntpath, SYSFS_BUS_NAME, SYSFS_DRIVERS_NAME, - vhci_driver_name); + snprintf(sdriver_path, SYSFS_PATH_MAX, "%s/%s/%s/%s/%s", sysfs_mntpath, + SYSFS_BUS_NAME, USBIP_VHCI_BUS_TYPE, SYSFS_DRIVERS_NAME, + USBIP_VHCI_DRV_NAME); sdriver = sysfs_open_driver_path(sdriver_path); if (!sdriver) { - info("%s is not found", sdriver_path); - info("load usbip-core.ko and vhci-hcd.ko !"); + dbg("sysfs_open_driver_path failed: %s", sdriver_path); + dbg("make sure " USBIP_CORE_MOD_NAME ".ko and " + USBIP_VHCI_DRV_NAME ".ko are loaded!"); return -1; } hc_devs = sysfs_get_driver_devices(sdriver); if (!hc_devs) { - err("get hc list"); + dbg("sysfs_get_driver failed"); goto err; } @@ -304,7 +315,7 @@ err: if (found) return 0; - err("not found usbip hc"); + dbg("%s not found", hc_busid); return -1; } @@ -318,13 +329,13 @@ int usbip_vhci_driver_open(void) vhci_driver = (struct usbip_vhci_driver *) calloc(1, sizeof(*vhci_driver)); if (!vhci_driver) { - err("alloc vhci_driver"); + dbg("calloc failed"); return -1; } ret = sysfs_get_mnt_path(vhci_driver->sysfs_mntpath, SYSFS_PATH_MAX); if (ret < 0) { - err("sysfs must be mounted"); + dbg("sysfs_get_mnt_path failed"); goto err; } @@ -333,17 +344,18 @@ int usbip_vhci_driver_open(void) goto err; /* will be freed in usbip_driver_close() */ - vhci_driver->hc_device = sysfs_open_device("platform", hc_busid); + vhci_driver->hc_device = sysfs_open_device(USBIP_VHCI_BUS_TYPE, + hc_busid); if (!vhci_driver->hc_device) { - err("get sysfs vhci_driver"); + dbg("sysfs_open_device failed"); goto err; } vhci_driver->nports = get_nports(); - info("%d ports available\n", vhci_driver->nports); + dbg("available ports: %d", vhci_driver->nports); - vhci_driver->cdev_list = dlist_new(sizeof(struct class_device)); + vhci_driver->cdev_list = dlist_new(sizeof(struct usbip_class_device)); if (!vhci_driver->cdev_list) goto err; @@ -402,7 +414,7 @@ int usbip_vhci_refresh_device_list(void) dlist_destroy(vhci_driver->idev[i].cdev_list); } - vhci_driver->cdev_list = dlist_new(sizeof(struct class_device)); + vhci_driver->cdev_list = dlist_new(sizeof(struct usbip_class_device)); if (!vhci_driver->cdev_list) goto err; @@ -422,7 +434,7 @@ err: dlist_destroy(vhci_driver->idev[i].cdev_list); } - err("refresh device list"); + dbg("failed to refresh device list"); return -1; } @@ -445,7 +457,8 @@ int usbip_vhci_attach_device2(uint8_t port, int sockfd, uint32_t devid, attr_attach = sysfs_get_device_attr(vhci_driver->hc_device, "attach"); if (!attr_attach) { - err("get attach"); + dbg("sysfs_get_device_attr(\"attach\") failed: %s", + vhci_driver->hc_device->name); return -1; } @@ -455,11 +468,11 @@ int usbip_vhci_attach_device2(uint8_t port, int sockfd, uint32_t devid, ret = sysfs_write_attribute(attr_attach, buff, strlen(buff)); if (ret < 0) { - err("write to attach failed"); + dbg("sysfs_write_attribute failed"); return -1; } - info("port %d attached", port); + dbg("attached port: %d", port); return 0; } @@ -486,21 +499,21 @@ int usbip_vhci_detach_device(uint8_t port) attr_detach = sysfs_get_device_attr(vhci_driver->hc_device, "detach"); if (!attr_detach) { - err("get detach"); + dbg("sysfs_get_device_attr(\"detach\") failed: %s", + vhci_driver->hc_device->name); return -1; } snprintf(buff, sizeof(buff), "%u", port); - dbg("writing to detach"); dbg("writing: %s", buff); ret = sysfs_write_attribute(attr_detach, buff, strlen(buff)); if (ret < 0) { - err("write to detach failed"); + dbg("sysfs_write_attribute failed"); return -1; } - info("port %d detached", port); + dbg("detached port: %d", port); return 0; } diff --git a/drivers/staging/usbip/userspace/libsrc/vhci_driver.h b/drivers/staging/usbip/userspace/libsrc/vhci_driver.h index cad8ad7586d..89949aa7c31 100644 --- a/drivers/staging/usbip/userspace/libsrc/vhci_driver.h +++ b/drivers/staging/usbip/userspace/libsrc/vhci_driver.h @@ -2,18 +2,20 @@ * Copyright (C) 2005-2007 Takahiro Hirofuchi */ -#ifndef _VHCI_DRIVER_H -#define _VHCI_DRIVER_H - -#include "usbip.h" +#ifndef __VHCI_DRIVER_H +#define __VHCI_DRIVER_H +#include <sysfs/libsysfs.h> +#include <stdint.h> +#include "usbip_common.h" +#define USBIP_VHCI_BUS_TYPE "platform" #define MAXNPORT 128 -struct class_device { - char clspath[SYSFS_PATH_MAX]; - char devpath[SYSFS_PATH_MAX]; +struct usbip_class_device { + char class_path[SYSFS_PATH_MAX]; + char dev_path[SYSFS_PATH_MAX]; }; struct usbip_imported_device { @@ -25,16 +27,19 @@ struct usbip_imported_device { uint8_t busnum; uint8_t devnum; - - struct dlist *cdev_list; /* list of class device */ - struct usb_device udev; + /* usbip_class_device list */ + struct dlist *cdev_list; + struct usbip_usb_device udev; }; struct usbip_vhci_driver { char sysfs_mntpath[SYSFS_PATH_MAX]; - struct sysfs_device *hc_device; /* /sys/devices/platform/vhci_hcd */ - struct dlist *cdev_list; /* list of class device */ + /* /sys/devices/platform/vhci_hcd */ + struct sysfs_device *hc_device; + + /* usbip_class_device list */ + struct dlist *cdev_list; int nports; struct usbip_imported_device idev[MAXNPORT]; @@ -58,4 +63,5 @@ int usbip_vhci_attach_device(uint8_t port, int sockfd, uint8_t busnum, uint8_t devnum, uint32_t speed); int usbip_vhci_detach_device(uint8_t port); -#endif + +#endif /* __VHCI_DRIVER_H */ diff --git a/drivers/staging/usbip/userspace/src/Makefile.am b/drivers/staging/usbip/userspace/src/Makefile.am index 05a7aa50d42..3f09f6ad39f 100644 --- a/drivers/staging/usbip/userspace/src/Makefile.am +++ b/drivers/staging/usbip/userspace/src/Makefile.am @@ -1,10 +1,11 @@ -AM_CPPFLAGS := -I$(top_srcdir)/libsrc -DUSBIDS_FILE='"@USBIDS_DIR@/usb.ids"' -AM_CFLAGS := @EXTRA_CFLAGS@ @PACKAGE_CFLAGS@ -LDADD := $(top_srcdir)/libsrc/libusbip.la @PACKAGE_LIBS@ +AM_CPPFLAGS = -I$(top_srcdir)/libsrc -DUSBIDS_FILE='"@USBIDS_DIR@/usb.ids"' +AM_CFLAGS = @EXTRA_CFLAGS@ @PACKAGE_CFLAGS@ +LDADD = $(top_builddir)/libsrc/libusbip.la @PACKAGE_LIBS@ -sbin_PROGRAMS := usbip usbipd usbip_bind_driver +sbin_PROGRAMS := usbip usbipd -usbip_SOURCES := usbip.c usbip_network.c usbip_network.h -usbipd_SOURCES := usbipd.c usbip_network.c usbip_network.h -usbip_bind_driver_SOURCES := bind-driver.c utils.c utils.h \ - usbip_network.h usbip_network.c +usbip_SOURCES := usbip.c utils.c usbip_network.c \ + usbip_attach.c usbip_detach.c usbip_list.c \ + usbip_bind.c usbip_unbind.c + +usbipd_SOURCES := usbipd.c usbip_network.c diff --git a/drivers/staging/usbip/userspace/src/bind-driver.c b/drivers/staging/usbip/userspace/src/bind-driver.c deleted file mode 100644 index 201ffbbee54..00000000000 --- a/drivers/staging/usbip/userspace/src/bind-driver.c +++ /dev/null @@ -1,643 +0,0 @@ -/* - * - * Copyright (C) 2005-2007 Takahiro Hirofuchi - */ - -#include "utils.h" - -#define _GNU_SOURCE -#include <getopt.h> -#include <glib.h> - - - -static const struct option longopts[] = { - {"usbip", required_argument, NULL, 'u'}, - {"other", required_argument, NULL, 'o'}, - {"list", no_argument, NULL, 'l'}, - {"list2", no_argument, NULL, 'L'}, - {"help", no_argument, NULL, 'h'}, -#if 0 - {"allusbip", no_argument, NULL, 'a'}, - {"export-to", required_argument, NULL, 'e'}, - {"unexport", required_argument, NULL, 'x'}, - {"busid", required_argument, NULL, 'b'}, -#endif - - {NULL, 0, NULL, 0} -}; - -static const char match_busid_path[] = "/sys/bus/usb/drivers/usbip/match_busid"; - - -static void show_help(void) -{ - printf("Usage: usbip_bind_driver [OPTION]\n"); - printf("Change driver binding for USB/IP.\n"); - printf(" --usbip busid make a device exportable\n"); - printf(" --other busid use a device by a local driver\n"); - printf(" --list print usb devices and their drivers\n"); - printf(" --list2 print usb devices and their drivers in parseable mode\n"); -#if 0 - printf(" --allusbip make all devices exportable\n"); - printf(" --export-to host export the device to 'host'\n"); - printf(" --unexport host unexport a device previously exported to 'host'\n"); - printf(" --busid busid the busid used for --export-to\n"); -#endif -} - -static int modify_match_busid(char *busid, int add) -{ - int fd; - int ret; - char buff[BUS_ID_SIZE + 4]; - - /* BUS_IS_SIZE includes NULL termination? */ - if (strnlen(busid, BUS_ID_SIZE) > BUS_ID_SIZE - 1) { - g_warning("too long busid"); - return -1; - } - - fd = open(match_busid_path, O_WRONLY); - if (fd < 0) - return -1; - - if (add) - snprintf(buff, BUS_ID_SIZE + 4, "add %s", busid); - else - snprintf(buff, BUS_ID_SIZE + 4, "del %s", busid); - - g_debug("write \"%s\" to %s", buff, match_busid_path); - - ret = write(fd, buff, sizeof(buff)); - if (ret < 0) { - close(fd); - return -1; - } - - close(fd); - - return 0; -} - -static const char unbind_path_format[] = "/sys/bus/usb/devices/%s/driver/unbind"; - -/* buggy driver may cause dead lock */ -static int unbind_interface_busid(char *busid) -{ - char unbind_path[PATH_MAX]; - int fd; - int ret; - - snprintf(unbind_path, sizeof(unbind_path), unbind_path_format, busid); - - fd = open(unbind_path, O_WRONLY); - if (fd < 0) { - g_warning("opening unbind_path failed: %d", fd); - return -1; - } - - ret = write(fd, busid, strnlen(busid, BUS_ID_SIZE)); - if (ret < 0) { - g_warning("write to unbind_path failed: %d", ret); - close(fd); - return -1; - } - - close(fd); - - return 0; -} - -static int unbind_interface(char *busid, int configvalue, int interface) -{ - char inf_busid[BUS_ID_SIZE]; - g_debug("unbinding interface"); - - snprintf(inf_busid, BUS_ID_SIZE, "%s:%d.%d", busid, configvalue, interface); - - return unbind_interface_busid(inf_busid); -} - - -static const char bind_path_format[] = "/sys/bus/usb/drivers/%s/bind"; - -static int bind_interface_busid(char *busid, char *driver) -{ - char bind_path[PATH_MAX]; - int fd; - int ret; - - snprintf(bind_path, sizeof(bind_path), bind_path_format, driver); - - fd = open(bind_path, O_WRONLY); - if (fd < 0) - return -1; - - ret = write(fd, busid, strnlen(busid, BUS_ID_SIZE)); - if (ret < 0) { - close(fd); - return -1; - } - - close(fd); - - return 0; -} - -static int bind_interface(char *busid, int configvalue, int interface, char *driver) -{ - char inf_busid[BUS_ID_SIZE]; - - snprintf(inf_busid, BUS_ID_SIZE, "%s:%d.%d", busid, configvalue, interface); - - return bind_interface_busid(inf_busid, driver); -} - -static int unbind(char *busid) -{ - int configvalue = 0; - int ninterface = 0; - int devclass = 0; - int i; - int failed = 0; - - configvalue = read_bConfigurationValue(busid); - ninterface = read_bNumInterfaces(busid); - devclass = read_bDeviceClass(busid); - - if (configvalue < 0 || ninterface < 0 || devclass < 0) { - g_warning("read config and ninf value, removed?"); - return -1; - } - - if (devclass == 0x09) { - g_message("skip unbinding of hub"); - return -1; - } - - for (i = 0; i < ninterface; i++) { - char driver[PATH_MAX]; - int ret; - - bzero(&driver, sizeof(driver)); - - getdriver(busid, configvalue, i, driver, PATH_MAX-1); - - g_debug(" %s:%d.%d -> %s ", busid, configvalue, i, driver); - - if (!strncmp("none", driver, PATH_MAX)) - continue; /* unbound interface */ - -#if 0 - if (!strncmp("usbip", driver, PATH_MAX)) - continue; /* already bound to usbip */ -#endif - - /* unbinding */ - ret = unbind_interface(busid, configvalue, i); - if (ret < 0) { - g_warning("unbind driver at %s:%d.%d failed", - busid, configvalue, i); - failed = 1; - } - } - - if (failed) - return -1; - else - return 0; -} - -/* call at unbound state */ -static int bind_to_usbip(char *busid) -{ - int configvalue = 0; - int ninterface = 0; - int i; - int failed = 0; - - configvalue = read_bConfigurationValue(busid); - ninterface = read_bNumInterfaces(busid); - - if (configvalue < 0 || ninterface < 0) { - g_warning("read config and ninf value, removed?"); - return -1; - } - - for (i = 0; i < ninterface; i++) { - int ret; - - ret = bind_interface(busid, configvalue, i, "usbip"); - if (ret < 0) { - g_warning("bind usbip at %s:%d.%d, failed", - busid, configvalue, i); - failed = 1; - /* need to contine binding at other interfaces */ - } - } - - if (failed) - return -1; - else - return 0; -} - - -static int use_device_by_usbip(char *busid) -{ - int ret; - - ret = unbind(busid); - if (ret < 0) { - g_warning("unbind drivers of %s, failed", busid); - return -1; - } - - ret = modify_match_busid(busid, 1); - if (ret < 0) { - g_warning("add %s to match_busid, failed", busid); - return -1; - } - - ret = bind_to_usbip(busid); - if (ret < 0) { - g_warning("bind usbip to %s, failed", busid); - modify_match_busid(busid, 0); - return -1; - } - - g_message("bind %s to usbip, complete!", busid); - - return 0; -} - - - -static int use_device_by_other(char *busid) -{ - int ret; - int config; - - /* read and write the same config value to kick probing */ - config = read_bConfigurationValue(busid); - if (config < 0) { - g_warning("read bConfigurationValue of %s, failed", busid); - return -1; - } - - ret = modify_match_busid(busid, 0); - if (ret < 0) { - g_warning("del %s to match_busid, failed", busid); - return -1; - } - - ret = write_bConfigurationValue(busid, config); - if (ret < 0) { - g_warning("read bConfigurationValue of %s, failed", busid); - return -1; - } - - g_message("bind %s to other drivers than usbip, complete!", busid); - - return 0; -} - - -#include <sys/types.h> -#include <regex.h> - -#include <errno.h> -#include <string.h> -#include <stdio.h> - - - -static int is_usb_device(char *busid) -{ - int ret; - - regex_t regex; - regmatch_t pmatch[1]; - - ret = regcomp(®ex, "^[0-9]+-[0-9]+(\\.[0-9]+)*$", REG_NOSUB|REG_EXTENDED); - if (ret < 0) - g_error("regcomp: %s\n", strerror(errno)); - - ret = regexec(®ex, busid, 0, pmatch, 0); - if (ret) - return 0; /* not matched */ - - return 1; -} - - -#include <dirent.h> -static int show_devices(void) -{ - DIR *dir; - - dir = opendir("/sys/bus/usb/devices/"); - if (!dir) - g_error("opendir: %s", strerror(errno)); - - printf("List USB devices\n"); - for (;;) { - struct dirent *dirent; - char *busid; - - dirent = readdir(dir); - if (!dirent) - break; - - busid = dirent->d_name; - - if (is_usb_device(busid)) { - char name[100] = {'\0'}; - char driver[100] = {'\0'}; - int conf, ninf = 0; - int i; - - conf = read_bConfigurationValue(busid); - ninf = read_bNumInterfaces(busid); - - getdevicename(busid, name, sizeof(name)); - - printf(" - busid %s (%s)\n", busid, name); - - for (i = 0; i < ninf; i++) { - getdriver(busid, conf, i, driver, sizeof(driver)); - printf(" %s:%d.%d -> %s\n", busid, conf, i, driver); - } - printf("\n"); - } - } - - closedir(dir); - - return 0; -} - -static int show_devices2(void) -{ - DIR *dir; - - dir = opendir("/sys/bus/usb/devices/"); - if (!dir) - g_error("opendir: %s", strerror(errno)); - - for (;;) { - struct dirent *dirent; - char *busid; - - dirent = readdir(dir); - if (!dirent) - break; - - busid = dirent->d_name; - - if (is_usb_device(busid)) { - char name[100] = {'\0'}; - char driver[100] = {'\0'}; - int conf, ninf = 0; - int i; - - conf = read_bConfigurationValue(busid); - ninf = read_bNumInterfaces(busid); - - getdevicename(busid, name, sizeof(name)); - - printf("busid=%s#usbid=%s#", busid, name); - - for (i = 0; i < ninf; i++) { - getdriver(busid, conf, i, driver, sizeof(driver)); - printf("%s:%d.%d=%s#", busid, conf, i, driver); - } - printf("\n"); - } - } - - closedir(dir); - - return 0; -} - - -#if 0 -static int export_to(char *host, char *busid) { - - int ret; - - if( host == NULL ) { - printf( "no host given\n\n"); - show_help(); - return -1; - } - if( busid == NULL ) { - /* XXX print device list and ask for busnumber, if none is - * given */ - printf( "no busid given, use --busid switch\n\n"); - show_help(); - return -1; - } - - - ret = use_device_by_usbip(busid); - if( ret != 0 ) { - printf( "could not bind driver to usbip\n"); - return -1; - } - - printf( "DEBUG: exporting device '%s' to '%s'\n", busid, host ); - ret = export_busid_to_host(host, busid); /* usbip_export.[ch] */ - if( ret != 0 ) { - printf( "could not export device to host\n" ); - printf( " host: %s, device: %s\n", host, busid ); - use_device_by_other(busid); - return -1; - } - - return 0; -} - -static int unexport_from(char *host, char *busid) { - - int ret; - - if (!host || !busid) - g_error("no host or no busid\n"); - - g_message("unexport_from: host: '%s', busid: '%s'", host, busid); - - ret = unexport_busid_from_host(host, busid); /* usbip_export.[ch] */ - if( ret != 0 ) { - err( "could not unexport device from host\n" ); - err( " host: %s, device: %s\n", host, busid ); - } - - ret = use_device_by_other(busid); - if (ret < 0) - g_error("could not unbind device from usbip\n"); - - return 0; -} - - -static int allusbip(void) -{ - DIR *dir; - - dir = opendir("/sys/bus/usb/devices/"); - if (!dir) - g_error("opendir: %s", strerror(errno)); - - for (;;) { - struct dirent *dirent; - char *busid; - - dirent = readdir(dir); - if (!dirent) - break; - - busid = dirent->d_name; - - if (!is_usb_device(busid)) - continue; - - { - char name[PATH_MAX]; - int conf, ninf = 0; - int i; - int be_local = 0; - - conf = read_bConfigurationValue(busid); - ninf = read_bNumInterfaces(busid); - - getdevicename(busid, name, sizeof(name)); - - for (i = 0; i < ninf; i++) { - char driver[PATH_MAX]; - - getdriver(busid, conf, i, driver, sizeof(driver)); -#if 0 - if (strncmp(driver, "usbhid", 6) == 0 || strncmp(driver, "usb-storage", 11) == 0) { - be_local = 1; - break; - } -#endif - } - - if (be_local == 0) - use_device_by_usbip(busid); - } - } - - closedir(dir); - - return 0; -} -#endif - -int main(int argc, char **argv) -{ - char *busid = NULL; - char *remote_host __attribute__((unused)) = NULL; - - enum { - cmd_unknown = 0, - cmd_use_by_usbip, - cmd_use_by_other, - cmd_list, - cmd_list2, - cmd_allusbip, - cmd_export_to, - cmd_unexport, - cmd_help, - } cmd = cmd_unknown; - - if (geteuid() != 0) - g_warning("running non-root?"); - - for (;;) { - int c; - int index = 0; - - c = getopt_long(argc, argv, "u:o:hlLae:x:b:", longopts, &index); - if (c == -1) - break; - - switch (c) { - case 'u': - cmd = cmd_use_by_usbip; - busid = optarg; - break; - case 'o' : - cmd = cmd_use_by_other; - busid = optarg; - break; - case 'l' : - cmd = cmd_list; - break; - case 'L' : - cmd = cmd_list2; - break; - case 'a' : - cmd = cmd_allusbip; - break; - case 'b': - busid = optarg; - break; - case 'e': - cmd = cmd_export_to; - remote_host = optarg; - break; - case 'x': - cmd = cmd_unexport; - remote_host = optarg; - break; - case 'h': /* fallthrough */ - case '?': - cmd = cmd_help; - break; - default: - g_error("getopt"); - } - - //if (cmd) - // break; - } - - switch (cmd) { - case cmd_use_by_usbip: - use_device_by_usbip(busid); - break; - case cmd_use_by_other: - use_device_by_other(busid); - break; - case cmd_list: - show_devices(); - break; - case cmd_list2: - show_devices2(); - break; -#if 0 - case cmd_allusbip: - allusbip(); - break; - case cmd_export_to: - export_to(remote_host, busid); - break; - case cmd_unexport: - unexport_from(remote_host, busid); - break; -#endif - case cmd_help: /* fallthrough */ - case cmd_unknown: - show_help(); - break; - default: - g_error("NOT REACHED"); - } - - return 0; -} diff --git a/drivers/staging/usbip/userspace/src/usbip.c b/drivers/staging/usbip/userspace/src/usbip.c index 01a562866b5..fff4b768e70 100644 --- a/drivers/staging/usbip/userspace/src/usbip.c +++ b/drivers/staging/usbip/userspace/src/usbip.c @@ -1,723 +1,190 @@ /* + * command structure borrowed from udev + * (git://git.kernel.org/pub/scm/linux/hotplug/udev.git) * - * Copyright (C) 2005-2007 Takahiro Hirofuchi + * Copyright (C) 2011 matt mooney <mfm@muteddisk.com> + * 2005-2007 Takahiro Hirofuchi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#ifdef HAVE_CONFIG_H -#include "../config.h" -#endif - -#include "usbip.h" -#include "usbip_network.h" -#include <ctype.h> -#include <sys/types.h> -#include <sys/stat.h> +#include <stdio.h> #include <stdlib.h> -#include <fcntl.h> -#include <glib.h> - -static const char version[] = PACKAGE_STRING; - - -/* /sys/devices/platform/vhci_hcd/usb6/6-1/6-1:1.1 -> 1 */ -static int get_interface_number(char *path) -{ - char *c; - - c = strstr(path, vhci_driver->hc_device->bus_id); - if (!c) - return -1; /* hc exist? */ - c++; - /* -> usb6/6-1/6-1:1.1 */ - - c = strchr(c, '/'); - if (!c) - return -1; /* hc exist? */ - c++; - /* -> 6-1/6-1:1.1 */ - - c = strchr(c, '/'); - if (!c) - return -1; /* no interface path */ - c++; - /* -> 6-1:1.1 */ - - c = strchr(c, ':'); - if (!c) - return -1; /* no configuration? */ - c++; - /* -> 1.1 */ - - c = strchr(c, '.'); - if (!c) - return -1; /* no interface? */ - c++; - /* -> 1 */ - - - return atoi(c); -} - - -static struct sysfs_device *open_usb_interface(struct usb_device *udev, int i) -{ - struct sysfs_device *suinf; - char busid[SYSFS_BUS_ID_SIZE]; - - snprintf(busid, SYSFS_BUS_ID_SIZE, "%s:%d.%d", - udev->busid, udev->bConfigurationValue, i); - - suinf = sysfs_open_device("usb", busid); - if (!suinf) - err("sysfs_open_device %s", busid); - - return suinf; -} - - -#define MAX_BUFF 100 -static int record_connection(char *host, char *port, char *busid, int rhport) -{ - int fd; - char path[PATH_MAX+1]; - char buff[MAX_BUFF+1]; - int ret; - - mkdir(VHCI_STATE_PATH, 0700); - snprintf(path, PATH_MAX, VHCI_STATE_PATH"/port%d", rhport); +#include <getopt.h> +#include <syslog.h> - fd = open(path, O_WRONLY|O_CREAT|O_TRUNC, S_IRWXU); - if (fd < 0) - return -1; +#include "usbip_common.h" +#include "usbip.h" - snprintf(buff, MAX_BUFF, "%s %s %s\n", - host, port, busid); +static int usbip_help(int argc, char *argv[]); +static int usbip_version(int argc, char *argv[]); - ret = write(fd, buff, strlen(buff)); - if (ret != (ssize_t) strlen(buff)) { - close(fd); - return -1; - } +static const char usbip_version_string[] = PACKAGE_STRING; - close(fd); +static const char usbip_usage_string[] = + "usbip [--debug] [--log] [version]\n" + " [help] <command> <args>\n"; - return 0; -} - -static int read_record(int rhport, char *host, char *port, char *busid) +static void usbip_usage(void) { - FILE *file; - char path[PATH_MAX+1]; - - snprintf(path, PATH_MAX, VHCI_STATE_PATH"/port%d", rhport); - - file = fopen(path, "r"); - if (!file) { - err("fopen"); - return -1; - } - - if (fscanf(file, "%s %s %s\n", host, port, busid) != 3) { - err("fscanf"); - fclose(file); - return -1; - } - - fclose(file); - - return 0; + printf("usage: %s", usbip_usage_string); } +struct command { + const char *name; + int (*fn)(int argc, char *argv[]); + const char *help; + void (*usage)(void); +}; -int usbip_vhci_imported_device_dump(struct usbip_imported_device *idev) -{ - char product_name[100]; - char host[NI_MAXHOST] = "unknown host"; - char serv[NI_MAXSERV] = "unknown port"; - char remote_busid[SYSFS_BUS_ID_SIZE]; - int ret; - - if (idev->status == VDEV_ST_NULL || idev->status == VDEV_ST_NOTASSIGNED) { - info("Port %02d: <%s>", idev->port, usbip_status_string(idev->status)); - return 0; - } - - ret = read_record(idev->port, host, serv, remote_busid); - if (ret) { - err("read_record"); - return -1; - } - - info("Port %02d: <%s> at %s", idev->port, - usbip_status_string(idev->status), usbip_speed_string(idev->udev.speed)); - - usbip_names_get_product(product_name, sizeof(product_name), - idev->udev.idVendor, idev->udev.idProduct); - - info(" %s", product_name); - - info("%10s -> usbip://%s:%s/%s (remote devid %08x (bus/dev %03d/%03d))", - idev->udev.busid, host, serv, remote_busid, - idev->devid, - idev->busnum, idev->devnum); - - for (int i=0; i < idev->udev.bNumInterfaces; i++) { - /* show interface information */ - struct sysfs_device *suinf; - - suinf = open_usb_interface(&idev->udev, i); - if (!suinf) - continue; - - info(" %6s used by %-17s", suinf->bus_id, suinf->driver_name); - sysfs_close_device(suinf); - - /* show class device information */ - struct class_device *cdev; - - dlist_for_each_data(idev->cdev_list, cdev, struct class_device) { - int ifnum = get_interface_number(cdev->devpath); - if (ifnum == i) { - info(" %s", cdev->clspath); - } - } - } - - return 0; -} - - - +static const struct command cmds[] = { + { + .name = "help", + .fn = usbip_help, + .help = NULL, + .usage = NULL + }, + { + .name = "version", + .fn = usbip_version, + .help = NULL, + .usage = NULL + }, + { + .name = "attach", + .fn = usbip_attach, + .help = "Attach a remote USB device", + .usage = usbip_attach_usage + }, + { + .name = "detach", + .fn = usbip_detach, + .help = "Detach a remote USB device", + .usage = usbip_detach_usage + }, + { + .name = "list", + .fn = usbip_list, + .help = "List exportable or local USB devices", + .usage = usbip_list_usage + }, + { + .name = "bind", + .fn = usbip_bind, + .help = "Bind device to " USBIP_HOST_DRV_NAME ".ko", + .usage = usbip_bind_usage + }, + { + .name = "unbind", + .fn = usbip_unbind, + .help = "Unbind device from " USBIP_HOST_DRV_NAME ".ko", + .usage = usbip_unbind_usage + }, + { NULL, NULL, NULL, NULL } +}; -static int query_exported_devices(int sockfd) +static int usbip_help(int argc, char *argv[]) { - int ret; - struct op_devlist_reply rep; - uint16_t code = OP_REP_DEVLIST; - - bzero(&rep, sizeof(rep)); - - ret = usbip_send_op_common(sockfd, OP_REQ_DEVLIST, 0); - if (ret < 0) { - err("send op_common"); - return -1; - } - - ret = usbip_recv_op_common(sockfd, &code); - if (ret < 0) { - err("recv op_common"); - return -1; - } - - ret = usbip_recv(sockfd, (void *) &rep, sizeof(rep)); - if (ret < 0) { - err("recv op_devlist"); - return -1; - } - - PACK_OP_DEVLIST_REPLY(0, &rep); - dbg("exportable %d devices", rep.ndev); - - for (unsigned int i=0; i < rep.ndev; i++) { - char product_name[100]; - char class_name[100]; - struct usb_device udev; - - bzero(&udev, sizeof(udev)); - - ret = usbip_recv(sockfd, (void *) &udev, sizeof(udev)); - if (ret < 0) { - err("recv usb_device[%d]", i); - return -1; - } - pack_usb_device(0, &udev); - - usbip_names_get_product(product_name, sizeof(product_name), - udev.idVendor, udev.idProduct); - usbip_names_get_class(class_name, sizeof(class_name), udev.bDeviceClass, - udev.bDeviceSubClass, udev.bDeviceProtocol); - - info("%8s: %s", udev.busid, product_name); - info("%8s: %s", " ", udev.path); - info("%8s: %s", " ", class_name); - - for (int j=0; j < udev.bNumInterfaces; j++) { - struct usb_interface uinf; + const struct command *cmd; + int i; + int ret = 0; - ret = usbip_recv(sockfd, (void *) &uinf, sizeof(uinf)); - if (ret < 0) { - err("recv usb_interface[%d]", j); - return -1; + if (argc > 1 && argv++) { + for (i = 0; cmds[i].name != NULL; i++) + if (!strcmp(cmds[i].name, argv[0]) && cmds[i].usage) { + cmds[i].usage(); + goto done; } - - pack_usb_interface(0, &uinf); - usbip_names_get_class(class_name, sizeof(class_name), uinf.bInterfaceClass, - uinf.bInterfaceSubClass, uinf.bInterfaceProtocol); - - info("%8s: %2d - %s", " ", j, class_name); - } - - info(" "); - } - - return rep.ndev; -} - -static int import_device(int sockfd, struct usb_device *udev) -{ - int ret; - int port; - - ret = usbip_vhci_driver_open(); - if (ret < 0) { - err("open vhci_driver"); - return -1; - } - - port = usbip_vhci_get_free_port(); - if (port < 0) { - err("no free port"); - usbip_vhci_driver_close(); - return -1; - } - - ret = usbip_vhci_attach_device(port, sockfd, udev->busnum, - udev->devnum, udev->speed); - if (ret < 0) { - err("import device"); - usbip_vhci_driver_close(); - return -1; + ret = -1; } - usbip_vhci_driver_close(); - - return port; -} - - -static int query_import_device(int sockfd, char *busid) -{ - int ret; - struct op_import_request request; - struct op_import_reply reply; - uint16_t code = OP_REP_IMPORT; - - bzero(&request, sizeof(request)); - bzero(&reply, sizeof(reply)); - - - /* send a request */ - ret = usbip_send_op_common(sockfd, OP_REQ_IMPORT, 0); - if (ret < 0) { - err("send op_common"); - return -1; - } - - strncpy(request.busid, busid, SYSFS_BUS_ID_SIZE-1); - - PACK_OP_IMPORT_REQUEST(0, &request); - - ret = usbip_send(sockfd, (void *) &request, sizeof(request)); - if (ret < 0) { - err("send op_import_request"); - return -1; - } - - - /* recieve a reply */ - ret = usbip_recv_op_common(sockfd, &code); - if (ret < 0) { - err("recv op_common"); - return -1; - } - - ret = usbip_recv(sockfd, (void *) &reply, sizeof(reply)); - if (ret < 0) { - err("recv op_import_reply"); - return -1; - } - - PACK_OP_IMPORT_REPLY(0, &reply); - - - /* check the reply */ - if (strncmp(reply.udev.busid, busid, SYSFS_BUS_ID_SIZE)) { - err("recv different busid %s", reply.udev.busid); - return -1; - } - - - /* import a device */ - return import_device(sockfd, &reply.udev); -} - -static int attach_device(char *host, char *busid) -{ - int sockfd; - int ret; - int rhport; - - sockfd = tcp_connect(host, USBIP_PORT_STRING); - if (sockfd < 0) { - err("tcp connect"); - return -1; - } - - rhport = query_import_device(sockfd, busid); - if (rhport < 0) { - err("query"); - return -1; - } - - close(sockfd); - - ret = record_connection(host, USBIP_PORT_STRING, - busid, rhport); - if (ret < 0) { - err("record connection"); - return -1; - } - - return 0; -} - -static int detach_port(char *port) -{ - int ret; - uint8_t portnum; - - for (unsigned int i=0; i < strlen(port); i++) - if (!isdigit(port[i])) { - err("invalid port %s", port); - return -1; - } - - /* check max port */ - - portnum = atoi(port); - - ret = usbip_vhci_driver_open(); - if (ret < 0) { - err("open vhci_driver"); - return -1; - } - - ret = usbip_vhci_detach_device(portnum); - if (ret < 0) - return -1; - - usbip_vhci_driver_close(); - + usbip_usage(); + printf("\n"); + for (cmd = cmds; cmd->name != NULL; cmd++) + if (cmd->help != NULL) + printf(" %-10s %s\n", cmd->name, cmd->help); + printf("\n"); +done: return ret; } -static int show_exported_devices(char *host) -{ - int ret; - int sockfd; - - sockfd = tcp_connect(host, USBIP_PORT_STRING); - if (sockfd < 0) { - err("- %s failed", host); - return -1; - } - - info("- %s", host); - - ret = query_exported_devices(sockfd); - if (ret < 0) { - err("query"); - return -1; - } - - close(sockfd); - return 0; -} - -static int attach_exported_devices(char *host, int sockfd) -{ - int ret; - struct op_devlist_reply rep; - uint16_t code = OP_REP_DEVLIST; - - bzero(&rep, sizeof(rep)); - - ret = usbip_send_op_common(sockfd, OP_REQ_DEVLIST, 0); - if(ret < 0) { - err("send op_common"); - return -1; - } - - ret = usbip_recv_op_common(sockfd, &code); - if(ret < 0) { - err("recv op_common"); - return -1; - } - - ret = usbip_recv(sockfd, (void *) &rep, sizeof(rep)); - if(ret < 0) { - err("recv op_devlist"); - return -1; - } - - PACK_OP_DEVLIST_REPLY(0, &rep); - dbg("exportable %d devices", rep.ndev); - - for(unsigned int i=0; i < rep.ndev; i++) { - char product_name[100]; - char class_name[100]; - struct usb_device udev; - - bzero(&udev, sizeof(udev)); - - ret = usbip_recv(sockfd, (void *) &udev, sizeof(udev)); - if(ret < 0) { - err("recv usb_device[%d]", i); - return -1; - } - pack_usb_device(0, &udev); - - usbip_names_get_product(product_name, sizeof(product_name), - udev.idVendor, udev.idProduct); - usbip_names_get_class(class_name, sizeof(class_name), udev.bDeviceClass, - udev.bDeviceSubClass, udev.bDeviceProtocol); - - dbg("Attaching usb port %s from host %s on usbip, with deviceid: %s", udev.busid, host, product_name); - - for (int j=0; j < udev.bNumInterfaces; j++) { - struct usb_interface uinf; - - ret = usbip_recv(sockfd, (void *) &uinf, sizeof(uinf)); - if (ret < 0) { - err("recv usb_interface[%d]", j); - return -1; - } - - pack_usb_interface(0, &uinf); - usbip_names_get_class(class_name, sizeof(class_name), uinf.bInterfaceClass, - uinf.bInterfaceSubClass, uinf.bInterfaceProtocol); - - dbg("interface %2d - %s", j, class_name); - } - - attach_device(host, udev.busid); - } - - return rep.ndev; -} - -static int attach_devices_all(char *host) +static int usbip_version(int argc, char *argv[]) { - int ret; - int sockfd; + (void) argc; + (void) argv; - sockfd = tcp_connect(host, USBIP_PORT_STRING); - if(sockfd < 0) { - err("- %s failed", host); - return -1; - } - - info("- %s", host); - - ret = attach_exported_devices(host, sockfd); - if(ret < 0) { - err("query"); - return -1; - } - - close(sockfd); + printf(PROGNAME " (%s)\n", usbip_version_string); return 0; } - -const char help_message[] = "\ -Usage: usbip [options] \n\ - -a, --attach [host] [bus_id] \n\ - Attach a remote USB device. \n\ - \n\ - -x, --attachall [host] \n\ - Attach all remote USB devices on the specific host. \n\ - \n\ - -d, --detach [ports] \n\ - Detach an imported USB device. \n\ - \n\ - -l, --list [hosts] \n\ - List exported USB devices. \n\ - \n\ - -p, --port \n\ - List virtual USB port status. \n\ - \n\ - -D, --debug \n\ - Print debugging information. \n\ - \n\ - -v, --version \n\ - Show version. \n\ - \n\ - -h, --help \n\ - Print this help. \n"; - -static void show_help(void) -{ - printf("%s", help_message); -} - -static int show_port_status(void) +static int run_command(const struct command *cmd, int argc, char *argv[]) { - int ret; - struct usbip_imported_device *idev; - - ret = usbip_vhci_driver_open(); - if (ret < 0) - return ret; - - for (int i = 0; i < vhci_driver->nports; i++) { - idev = &vhci_driver->idev[i]; - - if (usbip_vhci_imported_device_dump(idev) < 0) - ret = -1; - } - - usbip_vhci_driver_close(); - - return ret; + dbg("running command: `%s'", cmd->name); + return cmd->fn(argc, argv); } -#define _GNU_SOURCE -#include <getopt.h> -static const struct option longopts[] = { - {"attach", no_argument, NULL, 'a'}, - {"attachall", no_argument, NULL, 'x'}, - {"detach", no_argument, NULL, 'd'}, - {"port", no_argument, NULL, 'p'}, - {"list", no_argument, NULL, 'l'}, - {"version", no_argument, NULL, 'v'}, - {"help", no_argument, NULL, 'h'}, - {"debug", no_argument, NULL, 'D'}, - {"syslog", no_argument, NULL, 'S'}, - {NULL, 0, NULL, 0} -}; - int main(int argc, char *argv[]) { - int ret; + static const struct option opts[] = { + { "debug", no_argument, NULL, 'd' }, + { "log", no_argument, NULL, 'l' }, + { NULL, 0, NULL, 0 } + }; - enum { - cmd_attach = 1, - cmd_attachall, - cmd_detach, - cmd_port, - cmd_list, - cmd_help, - cmd_version - } cmd = 0; + char *cmd; + int opt; + int i, rc = -1; usbip_use_stderr = 1; - - if (geteuid() != 0) - g_warning("running non-root?"); - - ret = usbip_names_init(USBIDS_FILE); - if (ret) - notice("failed to open %s", USBIDS_FILE); - + opterr = 0; for (;;) { - int c; - int index = 0; - - c = getopt_long(argc, argv, "adplvhDSx", longopts, &index); + opt = getopt_long(argc, argv, "+d", opts, NULL); - if (c == -1) + if (opt == -1) break; - switch(c) { - case 'a': - if (!cmd) - cmd = cmd_attach; - else - cmd = cmd_help; - break; - case 'd': - if (!cmd) - cmd = cmd_detach; - else - cmd = cmd_help; - break; - case 'p': - if (!cmd) - cmd = cmd_port; - else cmd = cmd_help; - break; - case 'l': - if (!cmd) - cmd = cmd_list; - else - cmd = cmd_help; - break; - case 'v': - if (!cmd) - cmd = cmd_version; - else - cmd = cmd_help; - break; - case 'x': - if(!cmd) - cmd = cmd_attachall; - else - cmd = cmd_help; - break; - case 'h': - cmd = cmd_help; - break; - case 'D': - usbip_use_debug = 1; - break; - case 'S': - usbip_use_syslog = 1; - break; - case '?': - break; - - default: - err("getopt"); - } - } - - ret = 0; - switch(cmd) { - case cmd_attach: - if (optind == argc - 2) - ret = attach_device(argv[optind], argv[optind+1]); - else - show_help(); - break; - case cmd_detach: - while (optind < argc) - ret = detach_port(argv[optind++]); - break; - case cmd_port: - ret = show_port_status(); - break; - case cmd_list: - while (optind < argc) - ret = show_exported_devices(argv[optind++]); + switch (opt) { + case 'd': + usbip_use_debug = 1; break; - case cmd_attachall: - while(optind < argc) - ret = attach_devices_all(argv[optind++]); - break; - case cmd_version: - printf("%s\n", version); - break; - case cmd_help: - show_help(); + case 'l': + usbip_use_syslog = 1; + openlog("", LOG_PID, LOG_USER); break; + case '?': + printf("usbip: invalid option\n"); default: - show_help(); + usbip_usage(); + goto out; + } } + cmd = argv[optind]; + if (cmd) { + for (i = 0; cmds[i].name != NULL; i++) + if (!strcmp(cmds[i].name, cmd)) { + argc -= optind; + argv += optind; + optind = 0; + rc = run_command(&cmds[i], argc, argv); + goto out; + } + } - usbip_names_free(); - - exit((ret == 0) ? EXIT_SUCCESS : EXIT_FAILURE); + /* invalid command */ + usbip_help(0, NULL); +out: + return (rc > -1 ? EXIT_SUCCESS : EXIT_FAILURE); } diff --git a/drivers/staging/usbip/userspace/src/usbip.h b/drivers/staging/usbip/userspace/src/usbip.h new file mode 100644 index 00000000000..14d4a475b68 --- /dev/null +++ b/drivers/staging/usbip/userspace/src/usbip.h @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2011 matt mooney <mfm@muteddisk.com> + * 2005-2007 Takahiro Hirofuchi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef __USBIP_H +#define __USBIP_H + +#ifdef HAVE_CONFIG_H +#include "../config.h" +#endif + +/* usbip commands */ +int usbip_attach(int argc, char *argv[]); +int usbip_detach(int argc, char *argv[]); +int usbip_list(int argc, char *argv[]); +int usbip_bind(int argc, char *argv[]); +int usbip_unbind(int argc, char *argv[]); + +void usbip_attach_usage(void); +void usbip_detach_usage(void); +void usbip_list_usage(void); +void usbip_bind_usage(void); +void usbip_unbind_usage(void); + +#endif /* __USBIP_H */ diff --git a/drivers/staging/usbip/userspace/src/usbip_attach.c b/drivers/staging/usbip/userspace/src/usbip_attach.c new file mode 100644 index 00000000000..b7885a20275 --- /dev/null +++ b/drivers/staging/usbip/userspace/src/usbip_attach.c @@ -0,0 +1,228 @@ +/* + * Copyright (C) 2011 matt mooney <mfm@muteddisk.com> + * 2005-2007 Takahiro Hirofuchi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <sys/stat.h> +#include <sysfs/libsysfs.h> + +#include <limits.h> +#include <stdint.h> +#include <stdio.h> +#include <string.h> + +#include <fcntl.h> +#include <getopt.h> +#include <unistd.h> + +#include "vhci_driver.h" +#include "usbip_common.h" +#include "usbip_network.h" +#include "usbip.h" + +static const char usbip_attach_usage_string[] = + "usbip attach <args>\n" + " -h, --host=<host> The machine with exported USB devices\n" + " -b, --busid=<busid> Busid of the device on <host>\n"; + +void usbip_attach_usage(void) +{ + printf("usage: %s", usbip_attach_usage_string); +} + +#define MAX_BUFF 100 +static int record_connection(char *host, char *port, char *busid, int rhport) +{ + int fd; + char path[PATH_MAX+1]; + char buff[MAX_BUFF+1]; + int ret; + + mkdir(VHCI_STATE_PATH, 0700); + + snprintf(path, PATH_MAX, VHCI_STATE_PATH"/port%d", rhport); + + fd = open(path, O_WRONLY|O_CREAT|O_TRUNC, S_IRWXU); + if (fd < 0) + return -1; + + snprintf(buff, MAX_BUFF, "%s %s %s\n", + host, port, busid); + + ret = write(fd, buff, strlen(buff)); + if (ret != (ssize_t) strlen(buff)) { + close(fd); + return -1; + } + + close(fd); + + return 0; +} + +static int import_device(int sockfd, struct usbip_usb_device *udev) +{ + int rc; + int port; + + rc = usbip_vhci_driver_open(); + if (rc < 0) { + err("open vhci_driver"); + return -1; + } + + port = usbip_vhci_get_free_port(); + if (port < 0) { + err("no free port"); + usbip_vhci_driver_close(); + return -1; + } + + rc = usbip_vhci_attach_device(port, sockfd, udev->busnum, + udev->devnum, udev->speed); + if (rc < 0) { + err("import device"); + usbip_vhci_driver_close(); + return -1; + } + + usbip_vhci_driver_close(); + + return port; +} + +static int query_import_device(int sockfd, char *busid) +{ + int rc; + struct op_import_request request; + struct op_import_reply reply; + uint16_t code = OP_REP_IMPORT; + + memset(&request, 0, sizeof(request)); + memset(&reply, 0, sizeof(reply)); + + /* send a request */ + rc = usbip_net_send_op_common(sockfd, OP_REQ_IMPORT, 0); + if (rc < 0) { + err("send op_common"); + return -1; + } + + strncpy(request.busid, busid, SYSFS_BUS_ID_SIZE-1); + + PACK_OP_IMPORT_REQUEST(0, &request); + + rc = usbip_net_send(sockfd, (void *) &request, sizeof(request)); + if (rc < 0) { + err("send op_import_request"); + return -1; + } + + /* recieve a reply */ + rc = usbip_net_recv_op_common(sockfd, &code); + if (rc < 0) { + err("recv op_common"); + return -1; + } + + rc = usbip_net_recv(sockfd, (void *) &reply, sizeof(reply)); + if (rc < 0) { + err("recv op_import_reply"); + return -1; + } + + PACK_OP_IMPORT_REPLY(0, &reply); + + /* check the reply */ + if (strncmp(reply.udev.busid, busid, SYSFS_BUS_ID_SIZE)) { + err("recv different busid %s", reply.udev.busid); + return -1; + } + + /* import a device */ + return import_device(sockfd, &reply.udev); +} + +static int attach_device(char *host, char *busid) +{ + int sockfd; + int rc; + int rhport; + + sockfd = usbip_net_tcp_connect(host, USBIP_PORT_STRING); + if (sockfd < 0) { + err("tcp connect"); + return -1; + } + + rhport = query_import_device(sockfd, busid); + if (rhport < 0) { + err("query"); + return -1; + } + + close(sockfd); + + rc = record_connection(host, USBIP_PORT_STRING, busid, rhport); + if (rc < 0) { + err("record connection"); + return -1; + } + + return 0; +} + +int usbip_attach(int argc, char *argv[]) +{ + static const struct option opts[] = { + { "host", required_argument, NULL, 'h' }, + { "busid", required_argument, NULL, 'b' }, + { NULL, 0, NULL, 0 } + }; + char *host = NULL; + char *busid = NULL; + int opt; + int ret = -1; + + for (;;) { + opt = getopt_long(argc, argv, "h:b:", opts, NULL); + + if (opt == -1) + break; + + switch (opt) { + case 'h': + host = optarg; + break; + case 'b': + busid = optarg; + break; + default: + goto err_out; + } + } + + if (!host || !busid) + goto err_out; + + ret = attach_device(host, busid); + goto out; + +err_out: + usbip_attach_usage(); +out: + return ret; +} diff --git a/drivers/staging/usbip/userspace/src/usbip_bind.c b/drivers/staging/usbip/userspace/src/usbip_bind.c new file mode 100644 index 00000000000..9ecaf6e574d --- /dev/null +++ b/drivers/staging/usbip/userspace/src/usbip_bind.c @@ -0,0 +1,277 @@ +/* + * Copyright (C) 2011 matt mooney <mfm@muteddisk.com> + * 2005-2007 Takahiro Hirofuchi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <sysfs/libsysfs.h> + +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <getopt.h> + +#include "usbip_common.h" +#include "utils.h" +#include "usbip.h" + +enum unbind_status { + UNBIND_ST_OK, + UNBIND_ST_USBIP_HOST, + UNBIND_ST_FAILED +}; + +static const char usbip_bind_usage_string[] = + "usbip bind <args>\n" + " -b, --busid=<busid> Bind " USBIP_HOST_DRV_NAME ".ko to device " + "on <busid>\n"; + +void usbip_bind_usage(void) +{ + printf("usage: %s", usbip_bind_usage_string); +} + +/* call at unbound state */ +static int bind_usbip(char *busid) +{ + char bus_type[] = "usb"; + char attr_name[] = "bind"; + char sysfs_mntpath[SYSFS_PATH_MAX]; + char bind_attr_path[SYSFS_PATH_MAX]; + char intf_busid[SYSFS_BUS_ID_SIZE]; + struct sysfs_device *busid_dev; + struct sysfs_attribute *bind_attr; + struct sysfs_attribute *bConfValue; + struct sysfs_attribute *bNumIntfs; + int i, failed = 0; + int rc, ret = -1; + + rc = sysfs_get_mnt_path(sysfs_mntpath, SYSFS_PATH_MAX); + if (rc < 0) { + err("sysfs must be mounted: %s", strerror(errno)); + return -1; + } + + snprintf(bind_attr_path, sizeof(bind_attr_path), "%s/%s/%s/%s/%s/%s", + sysfs_mntpath, SYSFS_BUS_NAME, bus_type, SYSFS_DRIVERS_NAME, + USBIP_HOST_DRV_NAME, attr_name); + + bind_attr = sysfs_open_attribute(bind_attr_path); + if (!bind_attr) { + dbg("problem getting bind attribute: %s", strerror(errno)); + return -1; + } + + busid_dev = sysfs_open_device(bus_type, busid); + if (!busid_dev) { + dbg("sysfs_open_device %s failed: %s", busid, strerror(errno)); + goto err_close_bind_attr; + } + + bConfValue = sysfs_get_device_attr(busid_dev, "bConfigurationValue"); + bNumIntfs = sysfs_get_device_attr(busid_dev, "bNumInterfaces"); + + if (!bConfValue || !bNumIntfs) { + dbg("problem getting device attributes: %s", + strerror(errno)); + goto err_close_busid_dev; + } + + for (i = 0; i < atoi(bNumIntfs->value); i++) { + snprintf(intf_busid, SYSFS_BUS_ID_SIZE, "%s:%.1s.%d", busid, + bConfValue->value, i); + + rc = sysfs_write_attribute(bind_attr, intf_busid, + SYSFS_BUS_ID_SIZE); + if (rc < 0) { + dbg("bind driver at %s failed", intf_busid); + failed = 1; + } + } + + if (!failed) + ret = 0; + +err_close_busid_dev: + sysfs_close_device(busid_dev); +err_close_bind_attr: + sysfs_close_attribute(bind_attr); + + return ret; +} + +/* buggy driver may cause dead lock */ +static int unbind_other(char *busid) +{ + char bus_type[] = "usb"; + char intf_busid[SYSFS_BUS_ID_SIZE]; + struct sysfs_device *busid_dev; + struct sysfs_device *intf_dev; + struct sysfs_driver *intf_drv; + struct sysfs_attribute *unbind_attr; + struct sysfs_attribute *bConfValue; + struct sysfs_attribute *bDevClass; + struct sysfs_attribute *bNumIntfs; + int i, rc; + enum unbind_status status = UNBIND_ST_OK; + + busid_dev = sysfs_open_device(bus_type, busid); + if (!busid_dev) { + dbg("sysfs_open_device %s failed: %s", busid, strerror(errno)); + return -1; + } + + bConfValue = sysfs_get_device_attr(busid_dev, "bConfigurationValue"); + bDevClass = sysfs_get_device_attr(busid_dev, "bDeviceClass"); + bNumIntfs = sysfs_get_device_attr(busid_dev, "bNumInterfaces"); + if (!bConfValue || !bDevClass || !bNumIntfs) { + dbg("problem getting device attributes: %s", + strerror(errno)); + goto err_close_busid_dev; + } + + if (!strncmp(bDevClass->value, "09", bDevClass->len)) { + dbg("skip unbinding of hub"); + goto err_close_busid_dev; + } + + for (i = 0; i < atoi(bNumIntfs->value); i++) { + snprintf(intf_busid, SYSFS_BUS_ID_SIZE, "%s:%.1s.%d", busid, + bConfValue->value, i); + intf_dev = sysfs_open_device(bus_type, intf_busid); + if (!intf_dev) { + dbg("could not open interface device: %s", + strerror(errno)); + goto err_close_busid_dev; + } + + dbg("%s -> %s", intf_dev->name, intf_dev->driver_name); + + if (!strncmp("unknown", intf_dev->driver_name, SYSFS_NAME_LEN)) + /* unbound interface */ + continue; + + if (!strncmp(USBIP_HOST_DRV_NAME, intf_dev->driver_name, + SYSFS_NAME_LEN)) { + /* already bound to usbip-host */ + status = UNBIND_ST_USBIP_HOST; + continue; + } + + /* unbinding */ + intf_drv = sysfs_open_driver(bus_type, intf_dev->driver_name); + if (!intf_drv) { + dbg("could not open interface driver on %s: %s", + intf_dev->name, strerror(errno)); + goto err_close_intf_dev; + } + + unbind_attr = sysfs_get_driver_attr(intf_drv, "unbind"); + if (!unbind_attr) { + dbg("problem getting interface driver attribute: %s", + strerror(errno)); + goto err_close_intf_drv; + } + + rc = sysfs_write_attribute(unbind_attr, intf_dev->bus_id, + SYSFS_BUS_ID_SIZE); + if (rc < 0) { + /* NOTE: why keep unbinding other interfaces? */ + dbg("unbind driver at %s failed", intf_dev->bus_id); + status = UNBIND_ST_FAILED; + } + + sysfs_close_driver(intf_drv); + sysfs_close_device(intf_dev); + } + + goto out; + +err_close_intf_drv: + sysfs_close_driver(intf_drv); +err_close_intf_dev: + sysfs_close_device(intf_dev); +err_close_busid_dev: + status = UNBIND_ST_FAILED; +out: + sysfs_close_device(busid_dev); + + return status; +} + +static int bind_device(char *busid) +{ + int rc; + + rc = unbind_other(busid); + if (rc == UNBIND_ST_FAILED) { + err("could not unbind driver from device on busid %s", busid); + return -1; + } else if (rc == UNBIND_ST_USBIP_HOST) { + err("device on busid %s is already bound to %s", busid, + USBIP_HOST_DRV_NAME); + return -1; + } + + rc = modify_match_busid(busid, 1); + if (rc < 0) { + err("unable to bind device on %s", busid); + return -1; + } + + rc = bind_usbip(busid); + if (rc < 0) { + err("could not bind device to %s", USBIP_HOST_DRV_NAME); + modify_match_busid(busid, 0); + return -1; + } + + printf("bind device on busid %s: complete\n", busid); + + return 0; +} + +int usbip_bind(int argc, char *argv[]) +{ + static const struct option opts[] = { + { "busid", required_argument, NULL, 'b' }, + { NULL, 0, NULL, 0 } + }; + + int opt; + int ret = -1; + + for (;;) { + opt = getopt_long(argc, argv, "b:", opts, NULL); + + if (opt == -1) + break; + + switch (opt) { + case 'b': + ret = bind_device(optarg); + goto out; + default: + goto err_out; + } + } + +err_out: + usbip_bind_usage(); +out: + return ret; +} diff --git a/drivers/staging/usbip/userspace/src/usbip_detach.c b/drivers/staging/usbip/userspace/src/usbip_detach.c new file mode 100644 index 00000000000..89bf3c195c2 --- /dev/null +++ b/drivers/staging/usbip/userspace/src/usbip_detach.c @@ -0,0 +1,103 @@ +/* + * Copyright (C) 2011 matt mooney <mfm@muteddisk.com> + * 2005-2007 Takahiro Hirofuchi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <sysfs/libsysfs.h> + +#include <ctype.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <getopt.h> +#include <unistd.h> + +#include "vhci_driver.h" +#include "usbip_common.h" +#include "usbip_network.h" +#include "usbip.h" + +static const char usbip_detach_usage_string[] = + "usbip detach <args>\n" + " -p, --port=<port> " USBIP_VHCI_DRV_NAME + " port the device is on\n"; + +void usbip_detach_usage(void) +{ + printf("usage: %s", usbip_detach_usage_string); +} + +static int detach_port(char *port) +{ + int ret; + uint8_t portnum; + + for (unsigned int i=0; i < strlen(port); i++) + if (!isdigit(port[i])) { + err("invalid port %s", port); + return -1; + } + + /* check max port */ + + portnum = atoi(port); + + ret = usbip_vhci_driver_open(); + if (ret < 0) { + err("open vhci_driver"); + return -1; + } + + ret = usbip_vhci_detach_device(portnum); + if (ret < 0) + return -1; + + usbip_vhci_driver_close(); + + return ret; +} + +int usbip_detach(int argc, char *argv[]) +{ + static const struct option opts[] = { + { "port", required_argument, NULL, 'p' }, + { NULL, 0, NULL, 0 } + }; + int opt; + int ret = -1; + + for (;;) { + opt = getopt_long(argc, argv, "p:", opts, NULL); + + if (opt == -1) + break; + + switch (opt) { + case 'p': + ret = detach_port(optarg); + goto out; + default: + goto err_out; + } + } + +err_out: + usbip_detach_usage(); +out: + return ret; +} diff --git a/drivers/staging/usbip/userspace/src/usbip_list.c b/drivers/staging/usbip/userspace/src/usbip_list.c new file mode 100644 index 00000000000..ed30d910e03 --- /dev/null +++ b/drivers/staging/usbip/userspace/src/usbip_list.c @@ -0,0 +1,303 @@ +/* + * Copyright (C) 2011 matt mooney <mfm@muteddisk.com> + * 2005-2007 Takahiro Hirofuchi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <sys/types.h> +#include <sysfs/libsysfs.h> + +#include <errno.h> +#include <stdbool.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <getopt.h> +#include <netdb.h> +#include <unistd.h> + +#include "usbip_common.h" +#include "usbip_network.h" +#include "usbip.h" + +static const char usbip_list_usage_string[] = + "usbip list [-p|--parsable] <args>\n" + " -p, --parsable Parsable list format\n" + " -r, --remote=<host> List the exportable USB devices on <host>\n" + " -l, --local List the local USB devices\n"; + +void usbip_list_usage(void) +{ + printf("usage: %s", usbip_list_usage_string); +} + +static int get_exported_devices(char *host, int sockfd) +{ + char product_name[100]; + char class_name[100]; + struct op_devlist_reply reply; + uint16_t code = OP_REP_DEVLIST; + struct usbip_usb_device udev; + struct usbip_usb_interface uintf; + unsigned int i; + int j, rc; + + rc = usbip_net_send_op_common(sockfd, OP_REQ_DEVLIST, 0); + if (rc < 0) { + dbg("usbip_net_send_op_common failed"); + return -1; + } + + rc = usbip_net_recv_op_common(sockfd, &code); + if (rc < 0) { + dbg("usbip_net_recv_op_common failed"); + return -1; + } + + memset(&reply, 0, sizeof(reply)); + rc = usbip_net_recv(sockfd, &reply, sizeof(reply)); + if (rc < 0) { + dbg("usbip_net_recv_op_devlist failed"); + return -1; + } + PACK_OP_DEVLIST_REPLY(0, &reply); + dbg("exportable devices: %d\n", reply.ndev); + + if (reply.ndev == 0) { + info("no exportable devices found on %s", host); + return 0; + } + + printf("Exportable USB devices\n"); + printf("======================\n"); + printf(" - %s\n", host); + + for (i = 0; i < reply.ndev; i++) { + memset(&udev, 0, sizeof(udev)); + rc = usbip_net_recv(sockfd, &udev, sizeof(udev)); + if (rc < 0) { + dbg("usbip_net_recv failed: usbip_usb_device[%d]", i); + return -1; + } + usbip_net_pack_usb_device(0, &udev); + + usbip_names_get_product(product_name, sizeof(product_name), + udev.idVendor, udev.idProduct); + usbip_names_get_class(class_name, sizeof(class_name), + udev.bDeviceClass, udev.bDeviceSubClass, + udev.bDeviceProtocol); + printf("%11s: %s\n", udev.busid, product_name); + printf("%11s: %s\n", "", udev.path); + printf("%11s: %s\n", "", class_name); + + for (j = 0; j < udev.bNumInterfaces; j++) { + rc = usbip_net_recv(sockfd, &uintf, sizeof(uintf)); + if (rc < 0) { + dbg("usbip_net_recv failed: usbip_usb_intf[%d]", + j); + + return -1; + } + usbip_net_pack_usb_interface(0, &uintf); + + usbip_names_get_class(class_name, sizeof(class_name), + uintf.bInterfaceClass, + uintf.bInterfaceSubClass, + uintf.bInterfaceProtocol); + printf("%11s: %2d - %s\n", "", j, class_name); + } + printf("\n"); + } + + return 0; +} + +static int list_exported_devices(char *host) +{ + int rc; + int sockfd; + + sockfd = usbip_net_tcp_connect(host, USBIP_PORT_STRING); + if (sockfd < 0) { + err("could not connect to %s:%s: %s", host, + USBIP_PORT_STRING, gai_strerror(sockfd)); + return -1; + } + dbg("connected to %s:%s", host, USBIP_PORT_STRING); + + rc = get_exported_devices(host, sockfd); + if (rc < 0) { + err("failed to get device list from %s", host); + return -1; + } + + close(sockfd); + + return 0; +} + +static void print_device(char *busid, char *vendor, char *product, + bool parsable) +{ + if (parsable) + printf("busid=%s#usbid=%.4s:%.4s#", busid, vendor, product); + else + printf(" - busid %s (%.4s:%.4s)\n", busid, vendor, product); +} + +static void print_interface(char *busid, char *driver, bool parsable) +{ + if (parsable) + printf("%s=%s#", busid, driver); + else + printf("%9s%s -> %s\n", "", busid, driver); +} + +static int is_device(void *x) +{ + struct sysfs_attribute *devpath; + struct sysfs_device *dev = x; + int ret = 0; + + devpath = sysfs_get_device_attr(dev, "devpath"); + if (devpath && *devpath->value != '0') + ret = 1; + + return ret; +} + +static int devcmp(void *a, void *b) +{ + return strcmp(a, b); +} + +static int list_devices(bool parsable) +{ + char bus_type[] = "usb"; + char busid[SYSFS_BUS_ID_SIZE]; + struct sysfs_bus *ubus; + struct sysfs_device *dev; + struct sysfs_device *intf; + struct sysfs_attribute *idVendor; + struct sysfs_attribute *idProduct; + struct sysfs_attribute *bConfValue; + struct sysfs_attribute *bNumIntfs; + struct dlist *devlist; + int i; + int ret = -1; + + ubus = sysfs_open_bus(bus_type); + if (!ubus) { + err("could not open %s bus: %s", bus_type, strerror(errno)); + return -1; + } + + devlist = sysfs_get_bus_devices(ubus); + if (!devlist) { + err("could not get %s bus devices: %s", bus_type, + strerror(errno)); + goto err_out; + } + + /* remove interfaces and root hubs from device list */ + dlist_filter_sort(devlist, is_device, devcmp); + + if (!parsable) { + printf("Local USB devices\n"); + printf("=================\n"); + } + dlist_for_each_data(devlist, dev, struct sysfs_device) { + idVendor = sysfs_get_device_attr(dev, "idVendor"); + idProduct = sysfs_get_device_attr(dev, "idProduct"); + bConfValue = sysfs_get_device_attr(dev, "bConfigurationValue"); + bNumIntfs = sysfs_get_device_attr(dev, "bNumInterfaces"); + if (!idVendor || !idProduct || !bConfValue || !bNumIntfs) { + err("problem getting device attributes: %s", + strerror(errno)); + goto err_out; + } + + print_device(dev->bus_id, idVendor->value, idProduct->value, + parsable); + + for (i = 0; i < atoi(bNumIntfs->value); i++) { + snprintf(busid, sizeof(busid), "%s:%.1s.%d", + dev->bus_id, bConfValue->value, i); + intf = sysfs_open_device(bus_type, busid); + if (!intf) { + err("could not open device interface: %s", + strerror(errno)); + goto err_out; + } + print_interface(busid, intf->driver_name, parsable); + sysfs_close_device(intf); + } + printf("\n"); + } + + ret = 0; + +err_out: + sysfs_close_bus(ubus); + + return ret; +} + +int usbip_list(int argc, char *argv[]) +{ + static const struct option opts[] = { + { "parsable", no_argument, NULL, 'p' }, + { "remote", required_argument, NULL, 'r' }, + { "local", no_argument, NULL, 'l' }, + { NULL, 0, NULL, 0 } + }; + + bool parsable = false; + int opt; + int ret = -1; + + if (usbip_names_init(USBIDS_FILE)) + err("failed to open %s", USBIDS_FILE); + + for (;;) { + opt = getopt_long(argc, argv, "pr:l", opts, NULL); + + if (opt == -1) + break; + + switch (opt) { + case 'p': + parsable = true; + break; + case 'r': + ret = list_exported_devices(optarg); + goto out; + case 'l': + ret = list_devices(parsable); + goto out; + default: + goto err_out; + } + } + +err_out: + usbip_list_usage(); +out: + usbip_names_free(); + + return ret; +} diff --git a/drivers/staging/usbip/userspace/src/usbip_network.c b/drivers/staging/usbip/userspace/src/usbip_network.c index 01be3c7211d..1a84dd37e12 100644 --- a/drivers/staging/usbip/userspace/src/usbip_network.c +++ b/drivers/staging/usbip/userspace/src/usbip_network.c @@ -1,11 +1,34 @@ /* + * Copyright (C) 2011 matt mooney <mfm@muteddisk.com> + * 2005-2007 Takahiro Hirofuchi * - * Copyright (C) 2005-2007 Takahiro Hirofuchi + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include <sys/socket.h> + +#include <string.h> + +#include <arpa/inet.h> +#include <netdb.h> +#include <netinet/tcp.h> +#include <unistd.h> + +#include "usbip_common.h" #include "usbip_network.h" -void pack_uint32_t(int pack, uint32_t *num) +void usbip_net_pack_uint32_t(int pack, uint32_t *num) { uint32_t i; @@ -17,7 +40,7 @@ void pack_uint32_t(int pack, uint32_t *num) *num = i; } -void pack_uint16_t(int pack, uint16_t *num) +void usbip_net_pack_uint16_t(int pack, uint16_t *num) { uint16_t i; @@ -29,34 +52,34 @@ void pack_uint16_t(int pack, uint16_t *num) *num = i; } -void pack_usb_device(int pack, struct usb_device *udev) +void usbip_net_pack_usb_device(int pack, struct usbip_usb_device *udev) { - pack_uint32_t(pack, &udev->busnum); - pack_uint32_t(pack, &udev->devnum); - pack_uint32_t(pack, &udev->speed ); + usbip_net_pack_uint32_t(pack, &udev->busnum); + usbip_net_pack_uint32_t(pack, &udev->devnum); + usbip_net_pack_uint32_t(pack, &udev->speed ); - pack_uint16_t(pack, &udev->idVendor ); - pack_uint16_t(pack, &udev->idProduct); - pack_uint16_t(pack, &udev->bcdDevice); + usbip_net_pack_uint16_t(pack, &udev->idVendor); + usbip_net_pack_uint16_t(pack, &udev->idProduct); + usbip_net_pack_uint16_t(pack, &udev->bcdDevice); } -void pack_usb_interface(int pack __attribute__((unused)), - struct usb_interface *udev __attribute__((unused))) +void usbip_net_pack_usb_interface(int pack __attribute__((unused)), + struct usbip_usb_interface *udev + __attribute__((unused))) { /* uint8_t members need nothing */ } - -static ssize_t usbip_xmit(int sockfd, void *buff, size_t bufflen, int sending) +static ssize_t usbip_net_xmit(int sockfd, void *buff, size_t bufflen, + int sending) { + ssize_t nbytes; ssize_t total = 0; if (!bufflen) return 0; do { - ssize_t nbytes; - if (sending) nbytes = send(sockfd, buff, bufflen, 0); else @@ -65,80 +88,81 @@ static ssize_t usbip_xmit(int sockfd, void *buff, size_t bufflen, int sending) if (nbytes <= 0) return -1; - buff = (void *) ((intptr_t) buff + nbytes); + buff = (void *)((intptr_t) buff + nbytes); bufflen -= nbytes; total += nbytes; } while (bufflen > 0); - return total; } -ssize_t usbip_recv(int sockfd, void *buff, size_t bufflen) +ssize_t usbip_net_recv(int sockfd, void *buff, size_t bufflen) { - return usbip_xmit(sockfd, buff, bufflen, 0); + return usbip_net_xmit(sockfd, buff, bufflen, 0); } -ssize_t usbip_send(int sockfd, void *buff, size_t bufflen) +ssize_t usbip_net_send(int sockfd, void *buff, size_t bufflen) { - return usbip_xmit(sockfd, buff, bufflen, 1); + return usbip_net_xmit(sockfd, buff, bufflen, 1); } -int usbip_send_op_common(int sockfd, uint32_t code, uint32_t status) +int usbip_net_send_op_common(int sockfd, uint32_t code, uint32_t status) { - int ret; struct op_common op_common; + int rc; - bzero(&op_common, sizeof(op_common)); + memset(&op_common, 0, sizeof(op_common)); - op_common.version = USBIP_VERSION; - op_common.code = code; - op_common.status = status; + op_common.version = USBIP_VERSION; + op_common.code = code; + op_common.status = status; PACK_OP_COMMON(1, &op_common); - ret = usbip_send(sockfd, (void *) &op_common, sizeof(op_common)); - if (ret < 0) { - err("send op_common"); + rc = usbip_net_send(sockfd, &op_common, sizeof(op_common)); + if (rc < 0) { + dbg("usbip_net_send failed: %d", rc); return -1; } return 0; } -int usbip_recv_op_common(int sockfd, uint16_t *code) +int usbip_net_recv_op_common(int sockfd, uint16_t *code) { - int ret; struct op_common op_common; + int rc; - bzero(&op_common, sizeof(op_common)); + memset(&op_common, 0, sizeof(op_common)); - ret = usbip_recv(sockfd, (void *) &op_common, sizeof(op_common)); - if (ret < 0) { - err("recv op_common, %d", ret); + rc = usbip_net_recv(sockfd, &op_common, sizeof(op_common)); + if (rc < 0) { + dbg("usbip_net_recv failed: %d", rc); goto err; } PACK_OP_COMMON(0, &op_common); if (op_common.version != USBIP_VERSION) { - err("version mismatch, %d %d", op_common.version, USBIP_VERSION); + dbg("version mismatch: %d %d", op_common.version, + USBIP_VERSION); goto err; } - switch(*code) { - case OP_UNSPEC: - break; - default: - if (op_common.code != *code) { - info("unexpected pdu %d for %d", op_common.code, *code); - goto err; - } + switch (*code) { + case OP_UNSPEC: + break; + default: + if (op_common.code != *code) { + dbg("unexpected pdu %#0x for %#0x", op_common.code, + *code); + goto err; + } } if (op_common.status != ST_OK) { - info("request failed at peer, %d", op_common.status); + dbg("request failed at peer: %d", op_common.status); goto err; } @@ -149,103 +173,85 @@ err: return -1; } - -int usbip_set_reuseaddr(int sockfd) +int usbip_net_set_reuseaddr(int sockfd) { const int val = 1; int ret; ret = setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val)); if (ret < 0) - err("setsockopt SO_REUSEADDR"); + dbg("setsockopt: SO_REUSEADDR"); return ret; } -int usbip_set_nodelay(int sockfd) +int usbip_net_set_nodelay(int sockfd) { const int val = 1; int ret; ret = setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, &val, sizeof(val)); if (ret < 0) - err("setsockopt TCP_NODELAY"); + dbg("setsockopt: TCP_NODELAY"); return ret; } -int usbip_set_keepalive(int sockfd) +int usbip_net_set_keepalive(int sockfd) { const int val = 1; int ret; ret = setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, &val, sizeof(val)); if (ret < 0) - err("setsockopt SO_KEEPALIVE"); + dbg("setsockopt: SO_KEEPALIVE"); return ret; } -/* IPv6 Ready */ /* - * moved here from vhci_attach.c + * IPv6 Ready */ -int tcp_connect(char *hostname, char *service) +int usbip_net_tcp_connect(char *hostname, char *service) { - struct addrinfo hints, *res, *res0; + struct addrinfo hints, *res, *rp; int sockfd; - int err; - + int ret; memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; /* get all possible addresses */ - err = getaddrinfo(hostname, service, &hints, &res0); - if (err) { - err("%s %s: %s", hostname, service, gai_strerror(err)); - return -1; + ret = getaddrinfo(hostname, service, &hints, &res); + if (ret < 0) { + dbg("getaddrinfo: %s service %s: %s", hostname, service, + gai_strerror(ret)); + return ret; } - /* try all the addresses */ - for (res = res0; res; res = res->ai_next) { - char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV]; - - err = getnameinfo(res->ai_addr, res->ai_addrlen, - hbuf, sizeof(hbuf), sbuf, sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV); - if (err) { - err("%s %s: %s", hostname, service, gai_strerror(err)); - continue; - } - - dbg("trying %s port %s\n", hbuf, sbuf); - - sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol); - if (sockfd < 0) { - err("socket"); + /* try the addresses */ + for (rp = res; rp; rp = rp->ai_next) { + sockfd = socket(rp->ai_family, rp->ai_socktype, + rp->ai_protocol); + if (sockfd < 0) continue; - } /* should set TCP_NODELAY for usbip */ - usbip_set_nodelay(sockfd); - /* TODO: write code for heatbeat */ - usbip_set_keepalive(sockfd); + usbip_net_set_nodelay(sockfd); + /* TODO: write code for heartbeat */ + usbip_net_set_keepalive(sockfd); - err = connect(sockfd, res->ai_addr, res->ai_addrlen); - if (err < 0) { - close(sockfd); - continue; - } + if (connect(sockfd, rp->ai_addr, rp->ai_addrlen) == 0) + break; - /* connected */ - dbg("connected to %s:%s", hbuf, sbuf); - freeaddrinfo(res0); - return sockfd; + close(sockfd); } + if (!rp) + return EAI_SYSTEM; - dbg("%s:%s, %s", hostname, service, "no destination to connect to"); - freeaddrinfo(res0); + freeaddrinfo(res); - return -1; + return sockfd; } diff --git a/drivers/staging/usbip/userspace/src/usbip_network.h b/drivers/staging/usbip/userspace/src/usbip_network.h index 1225466e1c5..2d1e070fb7b 100644 --- a/drivers/staging/usbip/userspace/src/usbip_network.h +++ b/drivers/staging/usbip/userspace/src/usbip_network.h @@ -2,19 +2,20 @@ * Copyright (C) 2005-2007 Takahiro Hirofuchi */ -#ifndef _USBIP_NETWORK_H -#define _USBIP_NETWORK_H +#ifndef __USBIP_NETWORK_H +#define __USBIP_NETWORK_H -#include "usbip.h" -#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/tcp.h> +#ifdef HAVE_CONFIG_H +#include "../config.h" +#endif +#include <sys/types.h> +#include <sysfs/libsysfs.h> -/* -------------------------------------------------- */ -/* Define Protocol Format */ -/* -------------------------------------------------- */ +#include <stdint.h> +#define USBIP_PORT 3240 +#define USBIP_PORT_STRING "3240" /* ---------------------------------------------------------------------- */ /* Common header for all the kinds of PDUs. */ @@ -33,12 +34,11 @@ struct op_common { } __attribute__((packed)); #define PACK_OP_COMMON(pack, op_common) do {\ - pack_uint16_t(pack, &(op_common)->version);\ - pack_uint16_t(pack, &(op_common)->code );\ - pack_uint32_t(pack, &(op_common)->status );\ + usbip_net_pack_uint16_t(pack, &(op_common)->version);\ + usbip_net_pack_uint16_t(pack, &(op_common)->code );\ + usbip_net_pack_uint32_t(pack, &(op_common)->status );\ } while (0) - /* ---------------------------------------------------------------------- */ /* Dummy Code */ #define OP_UNSPEC 0x00 @@ -56,11 +56,10 @@ struct op_devinfo_request { } __attribute__((packed)); struct op_devinfo_reply { - struct usb_device udev; - struct usb_interface uinf[]; + struct usbip_usb_device udev; + struct usbip_usb_interface uinf[]; } __attribute__((packed)); - /* ---------------------------------------------------------------------- */ /* Import a remote USB device. */ #define OP_IMPORT 0x03 @@ -72,19 +71,17 @@ struct op_import_request { } __attribute__((packed)); struct op_import_reply { - struct usb_device udev; -// struct usb_interface uinf[]; + struct usbip_usb_device udev; +// struct usbip_usb_interface uinf[]; } __attribute__((packed)); #define PACK_OP_IMPORT_REQUEST(pack, request) do {\ } while (0) #define PACK_OP_IMPORT_REPLY(pack, reply) do {\ - pack_usb_device(pack, &(reply)->udev);\ + usbip_net_pack_usb_device(pack, &(reply)->udev);\ } while (0) - - /* ---------------------------------------------------------------------- */ /* Export a USB device to a remote host. */ #define OP_EXPORT 0x06 @@ -92,7 +89,7 @@ struct op_import_reply { #define OP_REP_EXPORT (OP_REPLY | OP_EXPORT) struct op_export_request { - struct usb_device udev; + struct usbip_usb_device udev; } __attribute__((packed)); struct op_export_reply { @@ -101,7 +98,7 @@ struct op_export_reply { #define PACK_OP_EXPORT_REQUEST(pack, request) do {\ - pack_usb_device(pack, &(request)->udev);\ + usbip_net_pack_usb_device(pack, &(request)->udev);\ } while (0) #define PACK_OP_EXPORT_REPLY(pack, reply) do {\ @@ -114,7 +111,7 @@ struct op_export_reply { #define OP_REP_UNEXPORT (OP_REPLY | OP_UNEXPORT) struct op_unexport_request { - struct usb_device udev; + struct usbip_usb_device udev; } __attribute__((packed)); struct op_unexport_reply { @@ -122,14 +119,12 @@ struct op_unexport_reply { } __attribute__((packed)); #define PACK_OP_UNEXPORT_REQUEST(pack, request) do {\ - pack_usb_device(pack, &(request)->udev);\ + usbip_net_pack_usb_device(pack, &(request)->udev);\ } while (0) #define PACK_OP_UNEXPORT_REPLY(pack, reply) do {\ } while (0) - - /* ---------------------------------------------------------------------- */ /* Negotiate IPSec encryption key. (still not used) */ #define OP_CRYPKEY 0x04 @@ -161,38 +156,29 @@ struct op_devlist_reply { } __attribute__((packed)); struct op_devlist_reply_extra { - struct usb_device udev; - struct usb_interface uinf[]; + struct usbip_usb_device udev; + struct usbip_usb_interface uinf[]; } __attribute__((packed)); #define PACK_OP_DEVLIST_REQUEST(pack, request) do {\ } while (0) #define PACK_OP_DEVLIST_REPLY(pack, reply) do {\ - pack_uint32_t(pack, &(reply)->ndev);\ + usbip_net_pack_uint32_t(pack, &(reply)->ndev);\ } while (0) - -/* -------------------------------------------------- */ -/* Declare Prototype Function */ -/* -------------------------------------------------- */ - -void pack_uint32_t(int pack, uint32_t *num); -void pack_uint16_t(int pack, uint16_t *num); -void pack_usb_device(int pack, struct usb_device *udev); -void pack_usb_interface(int pack, struct usb_interface *uinf); - -ssize_t usbip_recv(int sockfd, void *buff, size_t bufflen); -ssize_t usbip_send(int sockfd, void *buff, size_t bufflen); -int usbip_send_op_common(int sockfd, uint32_t code, uint32_t status); -int usbip_recv_op_common(int sockfd, uint16_t *code); -int usbip_set_reuseaddr(int sockfd); -int usbip_set_nodelay(int sockfd); -int usbip_set_keepalive(int sockfd); - -int tcp_connect(char *hostname, char *service); - -#define USBIP_PORT 3240 -#define USBIP_PORT_STRING "3240" - -#endif +void usbip_net_pack_uint32_t(int pack, uint32_t *num); +void usbip_net_pack_uint16_t(int pack, uint16_t *num); +void usbip_net_pack_usb_device(int pack, struct usbip_usb_device *udev); +void usbip_net_pack_usb_interface(int pack, struct usbip_usb_interface *uinf); + +ssize_t usbip_net_recv(int sockfd, void *buff, size_t bufflen); +ssize_t usbip_net_send(int sockfd, void *buff, size_t bufflen); +int usbip_net_send_op_common(int sockfd, uint32_t code, uint32_t status); +int usbip_net_recv_op_common(int sockfd, uint16_t *code); +int usbip_net_set_reuseaddr(int sockfd); +int usbip_net_set_nodelay(int sockfd); +int usbip_net_set_keepalive(int sockfd); +int usbip_net_tcp_connect(char *hostname, char *port); + +#endif /* __USBIP_NETWORK_H */ diff --git a/drivers/staging/usbip/userspace/src/usbip_unbind.c b/drivers/staging/usbip/userspace/src/usbip_unbind.c new file mode 100644 index 00000000000..d5a9ab6af2a --- /dev/null +++ b/drivers/staging/usbip/userspace/src/usbip_unbind.c @@ -0,0 +1,186 @@ +/* + * Copyright (C) 2011 matt mooney <mfm@muteddisk.com> + * 2005-2007 Takahiro Hirofuchi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include <sysfs/libsysfs.h> + +#include <errno.h> +#include <stdio.h> +#include <string.h> + +#include <getopt.h> + +#include "usbip_common.h" +#include "utils.h" +#include "usbip.h" + +static const char usbip_unbind_usage_string[] = + "usbip unbind <args>\n" + " -b, --busid=<busid> Unbind " USBIP_HOST_DRV_NAME ".ko from " + "device on <busid>\n"; + +void usbip_unbind_usage(void) +{ + printf("usage: %s", usbip_unbind_usage_string); +} + +static int unbind_device(char *busid) +{ + char bus_type[] = "usb"; + struct sysfs_driver *usbip_host_drv; + struct sysfs_device *dev; + struct dlist *devlist; + int verified = 0; + int rc, ret = -1; + + char attr_name[] = "bConfigurationValue"; + char sysfs_mntpath[SYSFS_PATH_MAX]; + char busid_attr_path[SYSFS_PATH_MAX]; + struct sysfs_attribute *busid_attr; + char *val = NULL; + int len; + + /* verify the busid device is using usbip-host */ + usbip_host_drv = sysfs_open_driver(bus_type, USBIP_HOST_DRV_NAME); + if (!usbip_host_drv) { + err("could not open %s driver: %s", USBIP_HOST_DRV_NAME, + strerror(errno)); + return -1; + } + + devlist = sysfs_get_driver_devices(usbip_host_drv); + if (!devlist) { + err("%s is not in use by any devices", USBIP_HOST_DRV_NAME); + goto err_close_usbip_host_drv; + } + + dlist_for_each_data(devlist, dev, struct sysfs_device) { + if (!strncmp(busid, dev->name, strlen(busid)) && + !strncmp(dev->driver_name, USBIP_HOST_DRV_NAME, + strlen(USBIP_HOST_DRV_NAME))) { + verified = 1; + break; + } + } + + if (!verified) { + err("device on busid %s is not using %s", busid, + USBIP_HOST_DRV_NAME); + goto err_close_usbip_host_drv; + } + + /* + * NOTE: A read and write of an attribute value of the device busid + * refers to must be done to start probing. That way a rebind of the + * default driver for the device occurs. + * + * This seems very hackish and adds a lot of pointless code. I think it + * should be done in the kernel by the driver after del_match_busid is + * finished! + */ + + rc = sysfs_get_mnt_path(sysfs_mntpath, SYSFS_PATH_MAX); + if (rc < 0) { + err("sysfs must be mounted: %s", strerror(errno)); + return -1; + } + + snprintf(busid_attr_path, sizeof(busid_attr_path), "%s/%s/%s/%s/%s/%s", + sysfs_mntpath, SYSFS_BUS_NAME, bus_type, SYSFS_DEVICES_NAME, + busid, attr_name); + + /* read a device attribute */ + busid_attr = sysfs_open_attribute(busid_attr_path); + if (!busid_attr) { + err("could not open %s/%s: %s", busid, attr_name, + strerror(errno)); + return -1; + } + + if (sysfs_read_attribute(busid_attr) < 0) { + err("problem reading attribute: %s", strerror(errno)); + goto err_out; + } + + len = busid_attr->len; + val = malloc(len); + *val = *busid_attr->value; + sysfs_close_attribute(busid_attr); + + /* notify driver of unbind */ + rc = modify_match_busid(busid, 0); + if (rc < 0) { + err("unable to unbind device on %s", busid); + goto err_out; + } + + /* write the device attribute */ + busid_attr = sysfs_open_attribute(busid_attr_path); + if (!busid_attr) { + err("could not open %s/%s: %s", busid, attr_name, + strerror(errno)); + return -1; + } + + rc = sysfs_write_attribute(busid_attr, val, len); + if (rc < 0) { + err("problem writing attribute: %s", strerror(errno)); + goto err_out; + } + sysfs_close_attribute(busid_attr); + + ret = 0; + printf("unbind device on busid %s: complete\n", busid); + +err_out: + free(val); +err_close_usbip_host_drv: + sysfs_close_driver(usbip_host_drv); + + return ret; +} + +int usbip_unbind(int argc, char *argv[]) +{ + static const struct option opts[] = { + { "busid", required_argument, NULL, 'b' }, + { NULL, 0, NULL, 0 } + }; + + int opt; + int ret = -1; + + for (;;) { + opt = getopt_long(argc, argv, "b:", opts, NULL); + + if (opt == -1) + break; + + switch (opt) { + case 'b': + ret = unbind_device(optarg); + goto out; + default: + goto err_out; + } + } + +err_out: + usbip_unbind_usage(); +out: + return ret; +} diff --git a/drivers/staging/usbip/userspace/src/usbipd.c b/drivers/staging/usbip/userspace/src/usbipd.c index ec9faac5ff8..8668a8092d4 100644 --- a/drivers/staging/usbip/userspace/src/usbipd.c +++ b/drivers/staging/usbip/userspace/src/usbipd.c @@ -1,15 +1,29 @@ /* + * Copyright (C) 2011 matt mooney <mfm@muteddisk.com> + * 2005-2007 Takahiro Hirofuchi * - * Copyright (C) 2005-2007 Takahiro Hirofuchi + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H #include "../config.h" #endif +#include <errno.h> #include <unistd.h> #include <netdb.h> -#include <strings.h> +#include <string.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> @@ -23,70 +37,160 @@ #define _GNU_SOURCE #include <getopt.h> +#include <glib.h> #include <signal.h> -#include "usbip.h" +#include "usbip_host_driver.h" +#include "usbip_common.h" #include "usbip_network.h" -#include <glib.h> +#undef PROGNAME +#define PROGNAME "usbipd" +#define MAXSOCKFD 20 -static const char version[] = PACKAGE_STRING; +GMainLoop *main_loop; +static const char usbip_version_string[] = PACKAGE_STRING; + +static const char usbipd_help_string[] = + "usage: usbipd [options] \n" + " -D, --daemon \n" + " Run as a daemon process. \n" + " \n" + " -d, --debug \n" + " Print debugging information. \n" + " \n" + " -h, --help \n" + " Print this help. \n" + " \n" + " -v, --version \n" + " Show version. \n"; + +static void usbipd_help(void) +{ + printf("%s\n", usbipd_help_string); +} -static int send_reply_devlist(int sockfd) +static int recv_request_import(int sockfd) { - int ret; + struct op_import_request req; + struct op_common reply; struct usbip_exported_device *edev; - struct op_devlist_reply reply; + struct usbip_usb_device pdu_udev; + int found = 0; + int error = 0; + int rc; + memset(&req, 0, sizeof(req)); + memset(&reply, 0, sizeof(reply)); - reply.ndev = 0; + rc = usbip_net_recv(sockfd, &req, sizeof(req)); + if (rc < 0) { + dbg("usbip_net_recv failed: import request"); + return -1; + } + PACK_OP_IMPORT_REQUEST(0, &req); - /* how many devices are exported ? */ - dlist_for_each_data(stub_driver->edev_list, edev, struct usbip_exported_device) { - reply.ndev += 1; + dlist_for_each_data(host_driver->edev_list, edev, + struct usbip_exported_device) { + if (!strncmp(req.busid, edev->udev.busid, SYSFS_BUS_ID_SIZE)) { + info("found requested device: %s", req.busid); + found = 1; + break; + } } - dbg("%d devices are exported", reply.ndev); + if (found) { + /* should set TCP_NODELAY for usbip */ + usbip_net_set_nodelay(sockfd); - ret = usbip_send_op_common(sockfd, OP_REP_DEVLIST, ST_OK); - if (ret < 0) { - err("send op_common"); - return ret; + /* export device needs a TCP/IP socket descriptor */ + rc = usbip_host_export_device(edev, sockfd); + if (rc < 0) + error = 1; + } else { + info("requested device not found: %s", req.busid); + error = 1; } - PACK_OP_DEVLIST_REPLY(1, &reply); + rc = usbip_net_send_op_common(sockfd, OP_REP_IMPORT, + (!error ? ST_OK : ST_NA)); + if (rc < 0) { + dbg("usbip_net_send_op_common failed: %#0x", OP_REP_IMPORT); + return -1; + } - ret = usbip_send(sockfd, (void *) &reply, sizeof(reply)); - if (ret < 0) { - err("send op_devlist_reply"); - return ret; + if (error) { + dbg("import request busid %s: failed", req.busid); + return -1; + } + + memcpy(&pdu_udev, &edev->udev, sizeof(pdu_udev)); + usbip_net_pack_usb_device(1, &pdu_udev); + + rc = usbip_net_send(sockfd, &pdu_udev, sizeof(pdu_udev)); + if (rc < 0) { + dbg("usbip_net_send failed: devinfo"); + return -1; } - dlist_for_each_data(stub_driver->edev_list, edev, struct usbip_exported_device) { - struct usb_device pdu_udev; + dbg("import request busid %s: complete", req.busid); + + return 0; +} + +static int send_reply_devlist(int connfd) +{ + struct usbip_exported_device *edev; + struct usbip_usb_device pdu_udev; + struct usbip_usb_interface pdu_uinf; + struct op_devlist_reply reply; + int i; + int rc; + reply.ndev = 0; + /* number of exported devices */ + dlist_for_each_data(host_driver->edev_list, edev, + struct usbip_exported_device) { + reply.ndev += 1; + } + info("exportable devices: %d", reply.ndev); + + rc = usbip_net_send_op_common(connfd, OP_REP_DEVLIST, ST_OK); + if (rc < 0) { + dbg("usbip_net_send_op_common failed: %#0x", OP_REP_DEVLIST); + return -1; + } + PACK_OP_DEVLIST_REPLY(1, &reply); + + rc = usbip_net_send(connfd, &reply, sizeof(reply)); + if (rc < 0) { + dbg("usbip_net_send failed: %#0x", OP_REP_DEVLIST); + return -1; + } + + dlist_for_each_data(host_driver->edev_list, edev, + struct usbip_exported_device) { dump_usb_device(&edev->udev); memcpy(&pdu_udev, &edev->udev, sizeof(pdu_udev)); - pack_usb_device(1, &pdu_udev); + usbip_net_pack_usb_device(1, &pdu_udev); - ret = usbip_send(sockfd, (void *) &pdu_udev, sizeof(pdu_udev)); - if (ret < 0) { - err("send pdu_udev"); - return ret; + rc = usbip_net_send(connfd, &pdu_udev, sizeof(pdu_udev)); + if (rc < 0) { + dbg("usbip_net_send failed: pdu_udev"); + return -1; } - for (int i=0; i < edev->udev.bNumInterfaces; i++) { - struct usb_interface pdu_uinf; - + for (i = 0; i < edev->udev.bNumInterfaces; i++) { dump_usb_interface(&edev->uinf[i]); memcpy(&pdu_uinf, &edev->uinf[i], sizeof(pdu_uinf)); - pack_usb_interface(1, &pdu_uinf); + usbip_net_pack_usb_interface(1, &pdu_uinf); - ret = usbip_send(sockfd, (void *) &pdu_uinf, sizeof(pdu_uinf)); - if (ret < 0) { - err("send pdu_uinf"); - return ret; + rc = usbip_net_send(connfd, &pdu_uinf, + sizeof(pdu_uinf)); + if (rc < 0) { + dbg("usbip_net_send failed: pdu_uinf"); + return -1; } } } @@ -94,283 +198,227 @@ static int send_reply_devlist(int sockfd) return 0; } - -static int recv_request_devlist(int sockfd) +static int recv_request_devlist(int connfd) { - int ret; struct op_devlist_request req; + int rc; - bzero(&req, sizeof(req)); + memset(&req, 0, sizeof(req)); - ret = usbip_recv(sockfd, (void *) &req, sizeof(req)); - if (ret < 0) { - err("recv devlist request"); + rc = usbip_net_recv(connfd, &req, sizeof(req)); + if (rc < 0) { + dbg("usbip_net_recv failed: devlist request"); return -1; } - ret = send_reply_devlist(sockfd); - if (ret < 0) { - err("send devlist reply"); + rc = send_reply_devlist(connfd); + if (rc < 0) { + dbg("send_reply_devlist failed"); return -1; } return 0; } - -static int recv_request_import(int sockfd) +static int recv_pdu(int connfd) { + uint16_t code = OP_UNSPEC; int ret; - struct op_import_request req; - struct op_common reply; - struct usbip_exported_device *edev; - int found = 0; - int error = 0; - bzero(&req, sizeof(req)); - bzero(&reply, sizeof(reply)); - - ret = usbip_recv(sockfd, (void *) &req, sizeof(req)); + ret = usbip_net_recv_op_common(connfd, &code); if (ret < 0) { - err("recv import request"); + dbg("could not receive opcode: %#0x", code); return -1; } - PACK_OP_IMPORT_REQUEST(0, &req); - - dlist_for_each_data(stub_driver->edev_list, edev, struct usbip_exported_device) { - if (!strncmp(req.busid, edev->udev.busid, SYSFS_BUS_ID_SIZE)) { - dbg("found requested device %s", req.busid); - found = 1; - break; - } + ret = usbip_host_refresh_device_list(); + if (ret < 0) { + dbg("could not refresh device list: %d", ret); + return -1; } - if (found) { - /* should set TCP_NODELAY for usbip */ - usbip_set_nodelay(sockfd); - - /* export_device needs a TCP/IP socket descriptor */ - ret = usbip_stub_export_device(edev, sockfd); - if (ret < 0) - error = 1; - } else { - info("not found requested device %s", req.busid); - error = 1; + info("received request: %#0x(%d)", code, connfd); + switch (code) { + case OP_REQ_DEVLIST: + ret = recv_request_devlist(connfd); + break; + case OP_REQ_IMPORT: + ret = recv_request_import(connfd); + break; + case OP_REQ_DEVINFO: + case OP_REQ_CRYPKEY: + default: + err("received an unknown opcode: %#0x", code); + ret = -1; } + if (ret == 0) + info("request %#0x(%d): complete", code, connfd); + else + info("request %#0x(%d): failed", code, connfd); - ret = usbip_send_op_common(sockfd, OP_REP_IMPORT, (!error ? ST_OK : ST_NA)); - if (ret < 0) { - err("send import reply"); - return -1; - } - - if (!error) { - struct usb_device pdu_udev; + return ret; +} - memcpy(&pdu_udev, &edev->udev, sizeof(pdu_udev)); - pack_usb_device(1, &pdu_udev); +#ifdef HAVE_LIBWRAP +static int tcpd_auth(int connfd) +{ + struct request_info request; + int rc; - ret = usbip_send(sockfd, (void *) &pdu_udev, sizeof(pdu_udev)); - if (ret < 0) { - err("send devinfo"); - return -1; - } - } + request_init(&request, RQ_DAEMON, PROGNAME, RQ_FILE, connfd, 0); + fromhost(&request); + rc = hosts_access(&request); + if (rc == 0) + return -1; return 0; } +#endif - - -static int recv_pdu(int sockfd) +static int do_accept(int listenfd) { - int ret; - uint16_t code = OP_UNSPEC; + int connfd; + struct sockaddr_storage ss; + socklen_t len = sizeof(ss); + char host[NI_MAXHOST], port[NI_MAXSERV]; + int rc; + memset(&ss, 0, sizeof(ss)); - ret = usbip_recv_op_common(sockfd, &code); - if (ret < 0) { - err("recv op_common, %d", ret); - return ret; + connfd = accept(listenfd, (struct sockaddr *) &ss, &len); + if (connfd < 0) { + err("failed to accept connection"); + return -1; } + rc = getnameinfo((struct sockaddr *) &ss, len, host, sizeof(host), + port, sizeof(port), NI_NUMERICHOST | NI_NUMERICSERV); + if (rc) + err("getnameinfo: %s", gai_strerror(rc)); - ret = usbip_stub_refresh_device_list(); - if (ret < 0) +#ifdef HAVE_LIBWRAP + rc = tcpd_auth(connfd); + if (rc < 0) { + info("denied access from %s", host); + close(connfd); return -1; + } +#endif + info("connection from %s:%s", host, port); - switch(code) { - case OP_REQ_DEVLIST: - ret = recv_request_devlist(sockfd); - break; + return connfd; +} - case OP_REQ_IMPORT: - ret = recv_request_import(sockfd); - break; +gboolean process_request(GIOChannel *gio, GIOCondition condition, + gpointer unused_data) +{ + int listenfd; + int connfd; - case OP_REQ_DEVINFO: - case OP_REQ_CRYPKEY: + (void) unused_data; - default: - err("unknown op_code, %d", code); - ret = -1; + if (condition & (G_IO_ERR | G_IO_HUP | G_IO_NVAL)) { + err("unknown condition"); + BUG(); } + if (condition & G_IO_IN) { + listenfd = g_io_channel_unix_get_fd(gio); + connfd = do_accept(listenfd); + if (connfd < 0) + return TRUE; - return ret; -} - - + recv_pdu(connfd); + close(connfd); + } + return TRUE; +} static void log_addrinfo(struct addrinfo *ai) { - int ret; char hbuf[NI_MAXHOST]; char sbuf[NI_MAXSERV]; + int rc; - ret = getnameinfo(ai->ai_addr, ai->ai_addrlen, hbuf, sizeof(hbuf), - sbuf, sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV); - if (ret) - err("getnameinfo, %s", gai_strerror(ret)); - - info("listen at [%s]:%s", hbuf, sbuf); -} - -static struct addrinfo *my_getaddrinfo(char *host, int ai_family) -{ - int ret; - struct addrinfo hints, *ai_head; - - bzero(&hints, sizeof(hints)); - - hints.ai_family = ai_family; - hints.ai_socktype = SOCK_STREAM; - hints.ai_flags = AI_PASSIVE; + rc = getnameinfo(ai->ai_addr, ai->ai_addrlen, hbuf, sizeof(hbuf), + sbuf, sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV); + if (rc) + err("getnameinfo: %s", gai_strerror(rc)); - ret = getaddrinfo(host, USBIP_PORT_STRING, &hints, &ai_head); - if (ret) { - err("%s: %s", USBIP_PORT_STRING, gai_strerror(ret)); - return NULL; - } - - return ai_head; + info("listening on %s:%s", hbuf, sbuf); } -#define MAXSOCK 20 -static int listen_all_addrinfo(struct addrinfo *ai_head, int lsock[]) +static int listen_all_addrinfo(struct addrinfo *ai_head, int sockfdlist[]) { struct addrinfo *ai; - int n = 0; /* number of sockets */ + int ret, nsockfd = 0; - for (ai = ai_head; ai && n < MAXSOCK; ai = ai->ai_next) { - int ret; - - lsock[n] = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); - if (lsock[n] < 0) + for (ai = ai_head; ai && nsockfd < MAXSOCKFD; ai = ai->ai_next) { + sockfdlist[nsockfd] = socket(ai->ai_family, ai->ai_socktype, + ai->ai_protocol); + if (sockfdlist[nsockfd] < 0) continue; - usbip_set_reuseaddr(lsock[n]); - usbip_set_nodelay(lsock[n]); + usbip_net_set_reuseaddr(sockfdlist[nsockfd]); + usbip_net_set_nodelay(sockfdlist[nsockfd]); - if (lsock[n] >= FD_SETSIZE) { - close(lsock[n]); - lsock[n] = -1; + if (sockfdlist[nsockfd] >= FD_SETSIZE) { + close(sockfdlist[nsockfd]); + sockfdlist[nsockfd] = -1; continue; } - ret = bind(lsock[n], ai->ai_addr, ai->ai_addrlen); + ret = bind(sockfdlist[nsockfd], ai->ai_addr, ai->ai_addrlen); if (ret < 0) { - close(lsock[n]); - lsock[n] = -1; + close(sockfdlist[nsockfd]); + sockfdlist[nsockfd] = -1; continue; } - ret = listen(lsock[n], SOMAXCONN); + ret = listen(sockfdlist[nsockfd], SOMAXCONN); if (ret < 0) { - close(lsock[n]); - lsock[n] = -1; + close(sockfdlist[nsockfd]); + sockfdlist[nsockfd] = -1; continue; } log_addrinfo(ai); - - /* next if succeed */ - n++; + nsockfd++; } - if (n == 0) { - err("no socket to listen to"); + if (nsockfd == 0) return -1; - } - dbg("listen %d address%s", n, (n==1)?"":"es"); + dbg("listening on %d address%s", nsockfd, (nsockfd == 1) ? "" : "es"); - return n; + return nsockfd; } -#ifdef HAVE_LIBWRAP -static int tcpd_auth(int csock) +static struct addrinfo *do_getaddrinfo(char *host, int ai_family) { - int ret; - struct request_info request; - - request_init(&request, RQ_DAEMON, "usbipd", RQ_FILE, csock, 0); - - fromhost(&request); - - ret = hosts_access(&request); - if (!ret) - return -1; - - return 0; -} -#endif - -static int my_accept(int lsock) -{ - int csock; - struct sockaddr_storage ss; - socklen_t len = sizeof(ss); - char host[NI_MAXHOST], port[NI_MAXSERV]; - int ret; - - bzero(&ss, sizeof(ss)); - - csock = accept(lsock, (struct sockaddr *) &ss, &len); - if (csock < 0) { - err("accept"); - return -1; - } + struct addrinfo hints, *ai_head; + int rc; - ret = getnameinfo((struct sockaddr *) &ss, len, - host, sizeof(host), port, sizeof(port), - (NI_NUMERICHOST | NI_NUMERICSERV)); - if (ret) - err("getnameinfo, %s", gai_strerror(ret)); + memset(&hints, 0, sizeof(hints)); + hints.ai_family = ai_family; + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = AI_PASSIVE; -#ifdef HAVE_LIBWRAP - ret = tcpd_auth(csock); - if (ret < 0) { - info("deny access from %s", host); - close(csock); - return -1; + rc = getaddrinfo(host, USBIP_PORT_STRING, &hints, &ai_head); + if (rc) { + err("failed to get a network address %s: %s", USBIP_PORT_STRING, + gai_strerror(rc)); + return NULL; } -#endif - info("connected from %s:%s", host, port); - - return csock; + return ai_head; } - -GMainLoop *main_loop; - static void signal_handler(int i) { - dbg("signal catched, code %d", i); + dbg("received signal: code %d", i); if (main_loop) g_main_loop_quit(main_loop); @@ -380,191 +428,140 @@ static void set_signal(void) { struct sigaction act; - bzero(&act, sizeof(act)); + memset(&act, 0, sizeof(act)); act.sa_handler = signal_handler; sigemptyset(&act.sa_mask); sigaction(SIGTERM, &act, NULL); sigaction(SIGINT, &act, NULL); } - -gboolean process_comming_request(GIOChannel *gio, GIOCondition condition, - gpointer data __attribute__((unused))) -{ - int ret; - - if (condition & (G_IO_ERR | G_IO_HUP | G_IO_NVAL)) - g_error("unknown condition"); - - - if (condition & G_IO_IN) { - int lsock; - int csock; - - lsock = g_io_channel_unix_get_fd(gio); - - csock = my_accept(lsock); - if (csock < 0) - return TRUE; - - ret = recv_pdu(csock); - if (ret < 0) - err("process recieved pdu"); - - close(csock); - } - - return TRUE; -} - - -static void do_standalone_mode(gboolean daemonize) +static int do_standalone_mode(gboolean daemonize) { - int ret; - int lsock[MAXSOCK]; struct addrinfo *ai_head; - int n; - + int sockfdlist[MAXSOCKFD]; + int nsockfd; + int i; + if (usbip_names_init(USBIDS_FILE)) + err("failed to open %s", USBIDS_FILE); - ret = usbip_names_init(USBIDS_FILE); - if (ret) - err("open usb.ids"); - - ret = usbip_stub_driver_open(); - if (ret < 0) - g_error("driver open failed"); + if (usbip_host_driver_open()) { + err("please load " USBIP_CORE_MOD_NAME ".ko and " + USBIP_HOST_DRV_NAME ".ko!"); + return -1; + } if (daemonize) { - if (daemon(0,0) < 0) - g_error("daemonizing failed: %s", g_strerror(errno)); + if (daemon(0,0) < 0) { + err("daemonizing failed: %s", strerror(errno)); + return -1; + } usbip_use_syslog = 1; } - set_signal(); - ai_head = my_getaddrinfo(NULL, PF_UNSPEC); + ai_head = do_getaddrinfo(NULL, PF_UNSPEC); if (!ai_head) - return; + return -1; - n = listen_all_addrinfo(ai_head, lsock); - if (n <= 0) - g_error("no socket to listen to"); + info("starting " PROGNAME " (%s)", usbip_version_string); - for (int i = 0; i < n; i++) { + nsockfd = listen_all_addrinfo(ai_head, sockfdlist); + if (nsockfd <= 0) { + err("failed to open a listening socket"); + return -1; + } + + for (i = 0; i < nsockfd; i++) { GIOChannel *gio; - gio = g_io_channel_unix_new(lsock[i]); + gio = g_io_channel_unix_new(sockfdlist[i]); g_io_add_watch(gio, (G_IO_IN | G_IO_ERR | G_IO_HUP | G_IO_NVAL), - process_comming_request, NULL); + process_request, NULL); } - - info("usbipd start (%s)", version); - - main_loop = g_main_loop_new(FALSE, FALSE); g_main_loop_run(main_loop); - info("shutdown"); + info("shutting down " PROGNAME); freeaddrinfo(ai_head); + usbip_host_driver_close(); usbip_names_free(); - usbip_stub_driver_close(); - - return; -} - -static const char help_message[] = "\ -Usage: usbipd [options] \n\ - -D, --daemon \n\ - Run as a daemon process. \n\ - \n\ - -d, --debug \n\ - Print debugging information. \n\ - \n\ - -v, --version \n\ - Show version. \n\ - \n\ - -h, --help \n\ - Print this help. \n"; - -static void show_help(void) -{ - printf("%s", help_message); + return 0; } -static const struct option longopts[] = { - {"daemon", no_argument, NULL, 'D'}, - {"debug", no_argument, NULL, 'd'}, - {"version", no_argument, NULL, 'v'}, - {"help", no_argument, NULL, 'h'}, - {NULL, 0, NULL, 0} -}; - int main(int argc, char *argv[]) { - gboolean daemonize = FALSE; + static const struct option longopts[] = { + { "daemon", no_argument, NULL, 'D' }, + { "debug", no_argument, NULL, 'd' }, + { "help", no_argument, NULL, 'h' }, + { "version", no_argument, NULL, 'v' }, + { NULL, 0, NULL, 0 } + }; enum { cmd_standalone_mode = 1, cmd_help, cmd_version - } cmd = cmd_standalone_mode; + } cmd; + gboolean daemonize = FALSE; + int opt, rc = -1; usbip_use_stderr = 1; usbip_use_syslog = 0; if (geteuid() != 0) - g_warning("running non-root?"); + err("not running as root?"); + cmd = cmd_standalone_mode; for (;;) { - int c; - int index = 0; - - c = getopt_long(argc, argv, "vhdD", longopts, &index); + opt = getopt_long(argc, argv, "Ddhv", longopts, NULL); - if (c == -1) + if (opt == -1) break; - switch (c) { - case 'd': - usbip_use_debug = 1; - continue; - case 'v': - cmd = cmd_version; - break; - case 'h': - cmd = cmd_help; - break; - case 'D': - daemonize = TRUE; - break; - case '?': - show_help(); - exit(EXIT_FAILURE); - default: - err("getopt"); - } - } - - switch (cmd) { - case cmd_standalone_mode: - do_standalone_mode(daemonize); + switch (opt) { + case 'D': + daemonize = TRUE; + break; + case 'd': + usbip_use_debug = 1; break; - case cmd_version: - printf("%s\n", version); + case 'h': + cmd = cmd_help; break; - case cmd_help: - show_help(); + case 'v': + cmd = cmd_version; break; + case '?': + usbipd_help(); default: - info("unknown cmd"); - show_help(); + goto err_out; + } } - return 0; + switch (cmd) { + case cmd_standalone_mode: + rc = do_standalone_mode(daemonize); + break; + case cmd_version: + printf(PROGNAME " (%s)\n", usbip_version_string); + rc = 0; + break; + case cmd_help: + usbipd_help(); + rc = 0; + break; + default: + usbipd_help(); + goto err_out; + } + +err_out: + return (rc > -1 ? EXIT_SUCCESS : EXIT_FAILURE); } diff --git a/drivers/staging/usbip/userspace/src/utils.c b/drivers/staging/usbip/userspace/src/utils.c index 8f441089b64..2d4966e6289 100644 --- a/drivers/staging/usbip/userspace/src/utils.c +++ b/drivers/staging/usbip/userspace/src/utils.c @@ -1,255 +1,76 @@ /* + * Copyright (C) 2011 matt mooney <mfm@muteddisk.com> + * 2005-2007 Takahiro Hirofuchi * - * Copyright (C) 2005-2007 Takahiro Hirofuchi + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "utils.h" - -int read_integer(char *path) -{ - char buff[100]; - int fd; - int ret = 0; - - bzero(buff, sizeof(buff)); - - fd = open(path, O_RDONLY); - if (fd < 0) - return -1; - - ret = read(fd, buff, sizeof(buff)); - if (ret < 0) { - close(fd); - return -1; - } - - sscanf(buff, "%d", &ret); - - close(fd); - - return ret; -} - -int read_string(char *path, char *string, size_t len) -{ - int fd; - int ret = 0; - char *p; - - bzero(string, len); - - fd = open(path, O_RDONLY); - if (fd < 0) { - string = NULL; - return -1; - } - - ret = read(fd, string, len-1); - if (ret < 0) { - string = NULL; - close(fd); - return -1; - } - - p = strchr(string, '\n'); - *p = '\0'; +#include <sysfs/libsysfs.h> - close(fd); +#include <errno.h> +#include <stdio.h> +#include <string.h> - return 0; -} +#include "usbip_common.h" +#include "utils.h" -int write_integer(char *path, int value) +int modify_match_busid(char *busid, int add) { - int fd; - int ret; - char buff[100]; - - snprintf(buff, sizeof(buff), "%d", value); - - fd = open(path, O_WRONLY); - if (fd < 0) - return -1; - - ret = write(fd, buff, strlen(buff)); - if (ret < 0) { - close(fd); + char bus_type[] = "usb"; + char attr_name[] = "match_busid"; + char buff[SYSFS_BUS_ID_SIZE + 4]; + char sysfs_mntpath[SYSFS_PATH_MAX]; + char match_busid_attr_path[SYSFS_PATH_MAX]; + struct sysfs_attribute *match_busid_attr; + int rc, ret = 0; + + if (strnlen(busid, SYSFS_BUS_ID_SIZE) > SYSFS_BUS_ID_SIZE - 1) { + dbg("busid is too long"); return -1; } - close(fd); - - return 0; -} - -int read_bConfigurationValue(char *busid) -{ - char path[PATH_MAX]; - - snprintf(path, PATH_MAX, "/sys/bus/usb/devices/%s/bConfigurationValue", busid); - - return read_integer(path); -} - -int write_bConfigurationValue(char *busid, int config) -{ - char path[PATH_MAX]; - - snprintf(path, PATH_MAX, "/sys/bus/usb/devices/%s/bConfigurationValue", busid); - - return write_integer(path, config); -} - -int read_bNumInterfaces(char *busid) -{ - char path[PATH_MAX]; - - snprintf(path, PATH_MAX, "/sys/bus/usb/devices/%s/bNumInterfaces", busid); - - return read_integer(path); -} - -int read_bDeviceClass(char *busid) -{ - char path[PATH_MAX]; - - snprintf(path, PATH_MAX, "/sys/bus/usb/devices/%s/bDeviceClass", busid); - - return read_integer(path); -} - -int getdriver(char *busid, int conf, int infnum, char *driver, size_t len) -{ - char path[PATH_MAX]; - char linkto[PATH_MAX]; - int ret; - - snprintf(path, PATH_MAX, "/sys/bus/usb/devices/%s:%d.%d/driver", busid, conf, infnum); - - /* readlink does not add NULL */ - bzero(linkto, sizeof(linkto)); - ret = readlink(path, linkto, sizeof(linkto)-1); - if (ret < 0) { - strncpy(driver, "none", len); + rc = sysfs_get_mnt_path(sysfs_mntpath, SYSFS_PATH_MAX); + if (rc < 0) { + err("sysfs must be mounted: %s", strerror(errno)); return -1; - } else { - strncpy(driver, basename(linkto), len); - return 0; } -} - -int getdevicename(char *busid, char *name, size_t len) -{ - char path[PATH_MAX]; - char idProduct[10], idVendor[10]; - snprintf(path, PATH_MAX, "/sys/bus/usb/devices/%s/idVendor", busid); - read_string(path, idVendor, sizeof(idVendor)); + snprintf(match_busid_attr_path, sizeof(match_busid_attr_path), + "%s/%s/%s/%s/%s/%s", sysfs_mntpath, SYSFS_BUS_NAME, bus_type, + SYSFS_DRIVERS_NAME, USBIP_HOST_DRV_NAME, attr_name); - snprintf(path, PATH_MAX, "/sys/bus/usb/devices/%s/idProduct", busid); - read_string(path, idProduct, sizeof(idProduct)); - - if (!idVendor[0] || !idProduct[0]) + match_busid_attr = sysfs_open_attribute(match_busid_attr_path); + if (!match_busid_attr) { + dbg("problem getting match_busid attribute: %s", + strerror(errno)); return -1; - - snprintf(name, len, "%s:%s", idVendor, idProduct); - - return 0; -} - -#define MAXLINE 100 - -/* if this cannot read a whole line, return -1 */ -int readline(int sockfd, char *buff, int bufflen) -{ - int ret; - char c; - int index = 0; - - - while (index < bufflen) { - ret = read(sockfd, &c, sizeof(c)); - if (ret < 0 && errno == EINTR) - continue; - if (ret <= 0) { - return -1; - } - - buff[index] = c; - - if ( index > 0 && buff[index-1] == '\r' && buff[index] == '\n') { - /* end of line */ - buff[index-1] = '\0'; /* get rid of delimitor */ - return index; - } else - index++; } - return -1; -} - -#if 0 -int writeline(int sockfd, char *str, int strlen) -{ - int ret; - int index = 0; - int len; - char buff[MAXLINE]; - - if (strlen + 3 > MAXLINE) - return -1; - - strncpy(buff, str, strlen); - buff[strlen+1] = '\r'; - buff[strlen+2] = '\n'; - buff[strlen+3] = '\0'; + if (add) + snprintf(buff, SYSFS_BUS_ID_SIZE + 4, "add %s", busid); + else + snprintf(buff, SYSFS_BUS_ID_SIZE + 4, "del %s", busid); - len = strlen + 3; + dbg("write \"%s\" to %s", buff, match_busid_attr->path); - while (len > 0) { - ret = write(sockfd, buff+index, len); - if (ret <= 0) { - return -1; - } - - len -= ret; - index += ret; + rc = sysfs_write_attribute(match_busid_attr, buff, sizeof(buff)); + if (rc < 0) { + dbg("failed to write match_busid: %s", strerror(errno)); + ret = -1; } - return index; -} -#endif + sysfs_close_attribute(match_busid_attr); -int writeline(int sockfd, char *str, int strlen) -{ - int ret; - int index = 0; - int len; - char buff[MAXLINE]; - - len = strnlen(str, strlen); - - if (strlen + 2 > MAXLINE) - return -1; - - memcpy(buff, str, strlen); - buff[strlen] = '\r'; - buff[strlen+1] = '\n'; /* strlen+1 <= MAXLINE-1 */ - - len = strlen + 2; - - while (len > 0) { - ret = write(sockfd, buff+index, len); - if (ret < 0 && errno == EINTR) - continue; - if (ret <= 0) { - return -1; - } - - len -= ret; - index += ret; - } - - return index; + return ret; } - diff --git a/drivers/staging/usbip/userspace/src/utils.h b/drivers/staging/usbip/userspace/src/utils.h index 6c29ae94521..fdcb14dc0fb 100644 --- a/drivers/staging/usbip/userspace/src/utils.h +++ b/drivers/staging/usbip/userspace/src/utils.h @@ -1,38 +1,24 @@ +/* + * Copyright (C) 2011 matt mooney <mfm@muteddisk.com> + * 2005-2007 Takahiro Hirofuchi + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ -#ifdef HAVE_CONFIG_H -#include "../config.h" -#endif +#ifndef __UTILS_H +#define __UTILS_H -#define _GNU_SOURCE -#include <string.h> -#include <sys/un.h> -#include <sys/types.h> -#include <sys/socket.h> +int modify_match_busid(char *busid, int add); -#include <sysfs/libsysfs.h> -#include <glib.h> -#include <unistd.h> -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <stdlib.h> -#include <time.h> -#include <errno.h> - - - -/* Be sync to kernel header */ -#define BUS_ID_SIZE 20 - -int read_string(char *path, char *, size_t len); -int read_integer(char *path); -int getdevicename(char *busid, char *name, size_t len); -int getdriver(char *busid, int conf, int infnum, char *driver, size_t len); -int read_bNumInterfaces(char *busid); -int read_bConfigurationValue(char *busid); -int write_integer(char *path, int value); -int write_bConfigurationValue(char *busid, int config); -int read_bDeviceClass(char *busid); -int readline(int sockfd, char *str, int strlen); -int writeline(int sockfd, char *buff, int bufflen); +#endif /* __UTILS_H */ diff --git a/drivers/staging/usbip/userspace/usb.ids b/drivers/staging/usbip/userspace/usb.ids deleted file mode 100644 index b1f87449bdd..00000000000 --- a/drivers/staging/usbip/userspace/usb.ids +++ /dev/null @@ -1,13209 +0,0 @@ -# -# List of USB ID's -# -# Maintained by Stephen J. Gowdy <gowdy@slac.stanford.edu> -# If you have any new entries, send them to the maintainer. -# Send entries as patches (diff -u old new). -# The latest version can be obtained from -# http://www.linux-usb.org/usb.ids -# -# $Id: usb.ids,v 1.346 2008/04/23 13:51:46 gowdy Exp $ -# - -# Vendors, devices and interfaces. Please keep sorted. - -# Syntax: -# vendor vendor_name -# device device_name <-- single tab -# interface interface_name <-- two tabs - -0001 Fry's Electronics -0002 Ingram -0003 Club Mac -0004 Nebraska Furniture Mart -0145 Unknown - 0112 Card Reader -0204 Chipsbank Microelectronics Co., Ltd - 6025 CBM2080 Flash drive controller - 6026 CBM1180 Flash drive controller -02ad HUMAX Co., Ltd. - 138c PVR Mass Storage -0386 LTS - 0001 PSX for USB Converter -03e8 EndPoints, Inc. - 0004 SE401 WebCam - 0008 101 Ethernet [klsi] - 0015 USB ATAPI Enclosure - 2123 SiPix StyleCam Deluxe - 8004 Aox 99001 -03e9 Thesys Microelectronics -03ea Data Broadcasting Corp. -03eb Atmel Corp. - 2002 Mass Storage Device - 2015 at90usbkey sample firmware (HID keyboard) - 2018 at90usbkey sample firmware (CDC ACM) - 2019 stk525 sample firmware (microphone) - 201c at90usbkey sample firmware (HID mouse) - 201d at90usbkey sample firmware (HID generic) - 2022 at90usbkey sample firmware (composite device) - 2103 JTAG ICE mkII - 2104 AVR ISP mkII - 2107 AVR Dragon - 2ffb at90usb AVR DFU bootloader - 2ffd at89c5130/c5131 DFU bootloader - 2fff at89c5132/c51snd1c DFU bootloader - 3301 at43301 4-port Hub - 3312 4-port Hub - 5601 at76c510 Prism-II 802.11b Access Point - 5603 Cisco 7920 WiFi IP Phone - 6124 at91sam SAMBA bootloader - 7603 at76c503a D-Link DWL-120 802.11b Adapter - 7604 FastVNET - 7605 at76c503a 802.11b Adapter - 7606 at76c505 802.11b Adapter - 7611 at76c510 rfmd2948 802.11b Access Point - 7613 WL-1130 USB - 7614 AT76c505a Wireless Adapter -03ec Iwatsu America, Inc. -03ed Mitel Corp. -03ee Mitsumi - 0000 CD-R/RW Drive - 2501 eHome Infrared Receiver - 2502 eHome Infrared Receiver - 5609 Japanese Keyboard - 641f WIF-0402C Bluetooth Adapter - 6438 Bluetooth Device - 6440 WML-C52APR Bluetooth Adapter - 6901 SmartDisk FDD - 6902 Floppy Disk Drive - 7500 CD-R/RW - ffff Dongle with BlueCore in DFU mode -03f0 Hewlett-Packard - 0004 DeskJet 895c - 0011 OfficeJet G55 - 0012 DeskJet 1125C Printer Port - 0024 KU-0316 Keyboard - 0101 ScanJet 4100c - 0102 PhotoSmart S20 - 0104 DeskJet 880c/970c - 0105 ScanJet 4200c - 0107 CD-Writer Plus - 010c Multimedia Keyboard Hub - 0111 G55xi Printer/Scanner/Copier - 0117 LaserJet 3200 - 011c hn210w 802.11b Adapter - 011d Integrated Bluetooth Module - 0121 HP49g+ Calculator - 0122 HID Internet Keyboard - 0201 ScanJet 6200c - 0202 PhotoSmart S20 - 0204 DeskJet 815c - 0205 ScanJet 3300c - 0207 CD-Writer Plus 8200e - 020c Multimedia Keyboard - 0211 OfficeJet G85 - 0212 DeskJet 1220C - 0217 LaserJet 2200 - 0218 APOLLO P2500/2600 - 2624 Pole Display (HP522 2 x 20 Line Display) - 0304 DeskJet 810c/812c - 0305 ScanJet 4300c - 0307 CD-Writer+ CD-4e - 0311 OfficeJet G85xi - 0312 Color Inkjet CP1700 - 0314 designjet 30/130 series - 0317 LaserJet 1200 - 0401 ScanJet 5200c - 0404 DeskJet 830c/832c - 0405 ScanJet 3400cse - 0411 OfficeJet G95 - 0412 Printing Support - 0417 LaserJet 1200 series - 0504 DeskJet 885c - 0505 ScanJet 2100c - 0507 DVD+RW - 050c 5219 Wireless Keyboard - 0511 OfficeJet K60 - 0512 DeckJet 450 - 0517 LaserJet 1000 - 051d integrated module with Bluetooth wireless technology. - 0601 ScanJet 6300c - 0604 DeskJet 840c - 0605 ScanJet 2200c - 0611 OfficeJet K60xi - 0612 business inkjet 3000 - 0624 Bluetooth Dongle - 0701 ScanJet 5300c/5370c - 0704 DeskJet 825c - 0705 ScanJet 4400c - 0711 OfficeJet K80 - 0712 DeskJet 1180c - 0714 Printing Support - 0801 ScanJet 7400c - 0804 DeskJet 816c - 0805 HP4470C - 0811 OfficeJet K80xi - 0817 LaserJet 3300 - 0901 ScanJet 2300c - 0904 DeskJet 845c - 0912 Printing Support - 0917 LaserJet 3330 - 0924 Modular Smartcard Keyboard - 0a01 ScanJet 2400c - 0a17 color LaserJet 3700 - 0b01 Scanjet 82x0C - 0b17 Laserjet 2300d - 0c17 LaserJet 1010 - 0c24 Bluetooth Dongle - 0d12 Officejet 9100 series - 0d17 LaserJet 1012 - 0e17 LaserJet 1015 - 0f11 OfficeJet V40 - 0f12 Printing Support - 0f17 LaserJet 1150 - 1001 Photo Scanner 1000 - 1002 photosmart 140 series - 1004 DeskJet 970c/970cse - 1005 ScanJet 5400c - 1011 OfficeJet V40xi - 1016 Jornada 548 / iPAQ HW6515 Pocket PC - 1017 LaserJet 1300 - 1024 Smart Card Keyboard - 1102 photosmart 240 series - 1104 DeskJet 959c - 1105 ScanJet 5470c - 1111 officejet v60 - 1116 Jornada 568 Pocket PC - 1117 LaserJet 1300n - 1151 PSC-750xi Printer/Scanner/Copier - 1202 Photosmart 320 Series - 1204 DeskJet 930c - 1205 ScanJet 4500C/5550C - 1211 officejet v60xi - 1217 LaserJet 2300L - 1302 Photosmart 370 Series - 1305 ScanJet 4570c - 1311 OfficeJet V30 - 1312 Deskjet 460 - 1317 LaserJet 1005 - 1405 Scanjet 3670 - 1411 PSC 750 - 1424 f2105 Monitor Hub - 1502 Photosmart 420 Series - 1504 DeskJet 920c - 1511 PSC 750xi - 1512 Printing Support - 1517 color LaserJet 3500 - 1524 Smart Card Keyboard - KR - 1602 Photosmart 330 Series - 1604 DeskJet 940c - 1605 ScanJet 5530C Photosmart - 1611 psc 780 - 1617 LaserJet 3015 - 161d Wireless Rechargeable Optical Mouse (HID) - 1624 Smart Card Keyboard - JP - 1702 Photosmart 380 Series - 1704 deskjet 948C - 1705 ScanJet 5590 - 1711 psc 780xi - 1712 Printing Support - 1717 LaserJet 3020 - 171d Wireless (Bluetooth + WLAN) Interface [Integrated Module] - 1801 Inkjet P-2000U - 1802 Photosmart 470 Series - 1804 deskjet 916C - 1805 ScanJet 7650 - 1811 PSC 720 - 1817 LaserJet 3030 - 181d integrated module with Bluetooth 2.0 wireless technology. - 1902 Photosmart A430 series - 1904 DeskJet 3820 - 1911 OfficeJet V45 - 1917 LaserJet 3380 - 1a02 Photosmart A510 series - 1a11 officejet 5100 series - 1a17 color LaserJet 4650 - 1b02 Photosmart A610 series - 1b04 deskjet 3810 - 1b05 ScanJet 4850C/4890C - 1c02 Photosmart A710 series - 1c17 Color LaserJet 2550l - 1d02 Photosmart A310 series - 1d17 LaserJet 1320 - 1e02 Photosmart A320 Printer series - 1e11 PSC-950 - 1e17 LaserJet 1160 series - 1f02 Photosmart A440 Printer series - 1f11 PSC 920 - 1f12 Officejet Pro K5300 - 1f17 color LaserJet 5550 - 2001 Floppy - 2002 Hub - 2004 DeskJet 640c - 2005 ScanJet 3570c - 2012 Officejet Pro K5400 - 2102 photosmart 7345 - 2104 DeskJet 630c - 2112 Officejet Pro L7500 - 2202 photosmart 7600 series - 2205 ScanJet 3500c - 2212 Officejet Pro L7600 - 2217 color LaserJet 9500 MFP - 2302 photosmart 7600 series - 2304 DeskJet 656c - 2305 ScanJet 3970c - 2311 officejet d series - 2312 Officejet Pro L7700 - 2317 LaserJet 4350 - 2402 photosmart 7700 series - 2405 ScanJet 4070 Photosmart - 2417 LaserJet 4250 - 2424 LP1965 19" Monitor Hub - 2502 photosmart 7700 series - 2505 ScanJet 3770 - 2512 Officejet Pro L7300 - 2517 LaserJet 2410 - 2524 LP3065 30" Monitor Hub - 2602 Photosmart A520 series - 2605 ScanJet 3800c - 2611 officejet 7100 series - 2617 Color LaserJet 2820 Series - 2702 Photosmart A620 series - 2704 Deskjet 915 - 2717 Color LaserJet 2830 - 2811 PSC-2100 - 2817 Color LaserJet 2840 - 2902 Photosmart A820 series - 2911 PSC 2200 - 2917 LaserJet 2420 - 2a11 PSC 2150 series - 2a17 LaserJet 2430 - 2b11 PSC 2170 series - 2b17 LaserJet 1020 - 2c17 Printing Support - 2d11 OfficeJet 6110 - 2d17 Printing Support - 2e11 PSC 1000 - 2e17 Printing Support - 2f11 PSC 1200 - 2f17 EWS 2605dn - 3002 photosmart P1000 - 3004 deskjet 980c - 3005 ScanJet 4670v - 3011 PSC 1100 series - 3017 Printing Support - 3102 PhotoSmart P1100 Printer w/ Card Reader - 3104 DeskJet 960c - 3111 officejet 4100 series - 3117 EWS 2605dtn - 3202 photosmart 1215 - 3211 officejet 4105 series - 3217 LaserJet 3050 - 3302 photosmart 1218 - 3304 DeskJet 990c - 3317 LaserJet 3052 - 3402 photosmart 1115 - 3404 DeskJet 6122 - 3417 LaserJet 3055 - 3502 photosmart 230 - 3504 DeskJet 6127c - 3511 PSC 2300 - 3517 LaserJet 3390 - 3602 photosmart 1315 - 3611 PSC 2410 Photosmart - 3617 EWS 2605 - 3711 PSC 2500 - 3717 EWS UPD - 3802 photosmart 100 - 3817 LaserJet P2015 Series - 3902 photosmart 130 - 3a02 photosmart 7150 - 3a11 OfficeJet 5500 series - 3a17 Printing Support - 3b02 photosmart 7150~ - 3b11 PSC 1300 series - 3b17 LaserJet M1005 MFP - 3c02 PhotoSmart 7350 - 3c11 PSC 1358 - 3c17 EWS UPD - 3d02 photosmart 7350~ - 3d11 OfficeJet 4215 - 3e02 photosmart 7550 - 3f02 photosmart 7550~ - 3f11 PSC-1315/PSC-1317 - 4002 PhotoSmart 720 / PhotoSmart 935 (storage) - 4004 cp1160 - 4102 PhotoSmart 618 - 4105 ScanJet 4370 - 4111 Officejet 7200 series - 4117 Printing Support - 4202 PhotoSmart 812 - 4205 Scanjet G3010 - 4211 Officejet 7300 series - 4217 EWS CM1015 - 4302 PhotoSmart 850 (ptp) - 4311 Officejet 7400 series - 4317 Color LaserJet CM1017 - 4402 PhotoSmart 935 (ptp) - 4417 EWS UPD - 4502 PhotoSmart 945 (PTP mode) - 4505 ScanJet G4010 - 4511 Photosmart 2600 - 4517 EWS UPD - 4605 ScanJet G4050 - 4611 Photosmart 2700 - 4811 PSC 1600 - 4911 PSC 2350 - 4b11 Officejet 6200 - 4c11 PSC 1500 series - 4c17 EWS UPD - 4d11 PSC 1400 - 4d17 EWS UPD - 4e11 Photosmart 2570 series - 4f11 Officejet 5600 (USBHUB) - 5004 DeskJet 995c - 5011 Photosmart 3100 Series - 5017 EWS UPD - 5111 Photosmart 3200 Series - 5211 Photosmart 3300 Series - 5311 Officejet 6300 - 5411 Officejet 4300 - 5511 Deskjet F300 series - 5611 PhotoSmart C3180 - 5617 LaserJet M1120 MFP - 5711 Photosmart C4100 series - 5717 LaserJet M1120n MFP - 5811 Photosmart C5100 series - 5817 LaserJet M1319f MFP - 5911 PhotoSmart C6180 - 5a11 Photosmart C7100 series - 5b11 Officejet J2100 Series - 5c11 Photosmart C4200 Printer series - 5d11 Photosmart C5200 series - 5e11 Photosmart D7400 series - 6004 DeskJet 5550 - 6102 Hewlett Packard Digital Camera - 6104 DeskJet 5650c - 6117 color LaserJet 3550 - 6202 PhotoSmart 215 - 6204 DeskJet 5150c - 6217 Color LaserJet 4700 - 6302 PhotoSmart 318/612 - 6317 Color LaserJet 4730mfp - 6402 PhotoSmart 715 (ptp) - 6411 Photosmart C8100 series - 6417 LaserJet 5200 - 6502 PhotoSmart 120 (ptp) - 6511 Photosmart C7200 series - 6602 PhotoSmart 320 - 6611 Photosmart C4380 series - 6617 LaserJet 5200L - 6702 PhotoSmart 720 (ptp) - 6717 Color LaserJet 3000 - 6802 PhotoSmart 620 (ptp) - 6811 Photosmart D5300 series - 6817 Color LaserJet 3800 - 6911 Photosmart D7200 series - 6917 Color LaserJet 3600 - 6a02 PhotoSmart 735 (ptp) - 6a11 Photosmart C6200 series - 6a17 LaserJet 4240 - 6b02 PhotoSmart R707 (PTP mode) - 6c17 Color LaserJet 4610 - 6f17 Color LaserJet CP6015 series - 7004 DeskJet 3320c - 7102 PhotoSmart 635 (PTP mode) - 7104 DeskJet 3420c - 7117 CM8060 Color MFP with Edgeline Technology - 7202 PhotoSmart 43x (ptp) - 7204 DeskJet 36xx - 7217 LaserJet M5035 MFP - 7302 PhotoSmart M307 (PTP mode) - 7304 DeskJet 35xx - 7317 LaserJet P3005 - 7404 Printing Support - 7417 LaserJet M4345 MFP - 7504 Printing Support - 7517 LaserJet M3035 MFP - 7604 Deskjet 3940 - 7617 LaserJet P3004 - 7702 PhotoSmart R817 (PTP mode) - 7704 Deskjet D4100 - 7717 CM8050 Color MFP with Edgeline Technology - 7804 Deskjet D1360 - 7817 Color LaserJet CP3505 - 7917 LaserJet M5025 MFP - 7a02 PhotoSmart M415 (PTP mode) - 7a17 LaserJet M3027 MFP - 7b02 PhotoSmart M23 (PTP mode) - 7b17 Color LaserJet CP4005 - 7c17 Color LaserJet CM6040 Series - 7d04 Deskjet F2100 Printer series - 7d17 Color LaserJet CM4730 MFP - 7e04 Deskjet F4100 Printer series - 8017 LaserJet P4515 - 8104 Printing Support - 8117 LaserJet P4015 - 811c Ethernet HN210E - 8204 Printing Support - 8217 LaserJet P4014 - 8317 LaserJet M9050 MFP - 8404 Deskjet 6800 Series - 8417 LaserJet M9040 MFP - 8504 Deskjet 6600 Series - 8604 Deskjet 5440 - 8704 deskjet 5900 series - 8804 Deskjet 6980 Series - 8904 Deskjet 6940 Series - 9002 Photosmart M437 - 9102 Photosmart M537 - 9302 Photosmart R930 series - 9402 Photosmart R837 - 9502 Photosmart R840 series - 9602 Photosmart M730 series - 9702 Photosmart R740 series - 9802 Photosmart Mz60 series - 9902 Photosmart M630 series - 9a02 Photosmart E330 series - 9b02 Photosmart M540 series - 9c02 Photosmart M440 series - a004 DeskJet 5850c - b002 photosmart 7200 series - b102 photosmart 7200 series - b202 photosmart 7600 series - b302 photosmart 7600 series - b402 photosmart 7700 series - b502 photosmart 7700 series - b602 photosmart 7900 series - b702 photosmart 7900 series - b802 Photosmart 7400 Series - b902 Photosmart 7800 Series - ba02 Photosmart 8100 Series - bb02 Photosmart 8400 Series - bc02 Photosmart 8700 Series - bd02 Photosmart Pro B9100 series - bef4 NEC Picty760 - c002 Photosmart 7800 Series - c102 Photosmart 8000 Series - c202 Photosmart 8200 Series - c302 Deskjet D2300 - c402 Photosmart D5100 series - c502 Photosmart D6100 series - c602 Photosmart D7100 series - c702 Photosmart D7300 series - c802 Photosmart D5060 Printer - d104 Bluetooth Dongle - efbe NEC Picty900 - f0be NEC Picty920 - f1be NEC Picty800 -03f1 Genoa Technology -03f2 Oak Technology, Inc. -03f3 Adaptec, Inc. - 0020 AWN-8020 WLAN - 0080 AVC-1100 Audio Capture - 0083 AVC-2200 Device - 0087 AVC-2210 Loader - 0088 AVC-2210 Device - 008b AVC-2310 Loader - 008c AVC-2310 Device - 0094 eHome Infrared Receiver - 009b AVC-1410 GameBridge TV NTSC - 2000 USBXchange - 2001 USBXchange Adapter - 2002 USB2-Xchange - 2003 USB2-Xchange Adapter - adcc Composite Device Support -03f4 Diebold, Inc. -03f5 Siemens Electromechanical -03f8 Epson Imaging Technology Center -03f9 KeyTronic Corp. - 0100 Keyboard - 0101 Keyboard - 0102 Keyboard Mouse -03fb OPTi, Inc. -03fc Elitegroup Computer Systems -03fd Xilinx, Inc. -03fe Farallon Comunications -0400 National Semiconductor Corp. - 0807 Bluetooth Dongle - 080a Bluetooth Device - 1000 Mustek BearPaw 1200 Scanner - 1001 Mustek BearPaw 2400 Scanner - 1237 Hub - a000 Smart Display Reference Device - c35b Printing Support -0401 National Registry, Inc. -0402 ALi Corp. - 5462 M5462 IDE Controller - 5602 Video Camera Controller - 5603 USB 2.0 Q-tec Webcam 300 - 5621 USB 2.0 Storage Device - 5623 VistaScan Astra 3600 - 5627 Welland ME-740PS USB2 3.5" Power Saving Enclosure - 5632 USB 2.0 Host-to-Host Link - 5635 USB 2.0 Flash Card Reader - 5636 USB 2.0 Storage Device - 5637 M5637 IDE Controller -0403 Future Technology Devices International, Ltd - 0000 H4SMK 7 Port Hub - 0232 Serial Converter - 6001 FT232 USB-Serial (UART) IC - 6007 Serial Converter - 6008 Serial Converter - 6009 Serial Converter - 6010 FT2232C Dual USB-UART/FIFO IC - 8040 4 Port Hub - 8070 7 Port Hub - 8370 7 Port Hub - 8371 PS/2 Keyboard And Mouse - 8372 FT8U100AX Serial Port - c630 lcd2usb interface - c7d0 RR-CirKits LocoBuffer-USB - cc48 product FTDI TACTRIX_OPENPORT_13M 0xcc48 OpenPort 1.3 Mitsubishi - cc49 product FTDI TACTRIX_OPENPORT_13S 0xcc49 OpenPort 1.3 Subaru - cc4a product FTDI TACTRIX_OPENPORT_13U 0xcc4a OpenPort 1.3 Universal - d010 SCS PTC-IIusb - d011 SCS Position-Tracker/TNC - d012 SCS DRAGON 1 - d013 SCS DRAGON 1 - d6f8 UNI Black BOX - e700 Elster Unicom III Optical Probe - e888 Expert ISDN Control USB - e889 USB-RS232 OptoBridge - e88a Expert mouseCLOCK USB II - e88b Precision Clock MSF USB - e88c Expert mouseCLOCK USB II HBG - ea90 Eclo 1-Wire Adapter - f208 Papenmeier Braille-Display - f680 Suunto Sports Instrument - f918 Ant8 Logic Probe - fa00 Matrix Orbital USB Serial - fa01 Matrix Orbital MX2 or MX3 - fa02 Matrix Orbital MX4 or MX5 - fa03 Matrix Orbital VK/LK202 Family - fa04 Matrix Orbital VK/LK204 Family - fc08 Crystalfontz CFA-632 USB LCD - fc09 Crystalfontz CFA-634 USB LCD - fc0b Crystalfontz CFA-633 USB LCD - fc0c Crystalfontz CFA-631 USB LCD - fc0d Crystalfontz CFA-635 USB LCD - fc82 SEMC DSS-20 SyncStation - fd48 ShipModul MiniPlex-4xUSB NMEA Multiplexer - ff08 ToolHouse LoopBack Adapter - ff18 Logbook Bus - ff19 Logbook Bus - ff1a Logbook Bus - ff1b Logbook Bus - ff1c Logbook Bus - ff1d Logbook Bus - ff1e Logbook Bus - ff1f Logbook Bus -0404 NCR Corp. - 0202 78XX Scanner - 0203 78XX Scanner - Embedded System - 0310 K590 Printer, Self-Service - 0311 7167 Printer, Receipt/Slip - 0312 7197 Printer Receipt - 0320 5932-USB Keyboard - 0321 5953-USB Dynakey - 0322 5932-USB Enhanced Keyboard - 0323 5932-USB Enhanced Keyboard, Flash-Recovery/Download - 0324 5953-USB Enhanced Dynakey - 0325 5953-USB Enhanced Dynakey Flash-Recovery/Download - 0328 K016: USB-MSR ISO 3-track MSR: POS Standard (See HID pages) - 0329 K018: USB-MSR JIS 2-Track MSR: POS Standard - 032a K016: USB-MSR ISO 3-Track MSR: HID Keyboard Mode - 032b K016/K018: USB-MSR Flash-Recovery/Download -0405 Synopsys, Inc. -0406 Fujitsu-ICL Computers -0407 Fujitsu Personal Systems, Inc. -0408 Quanta Computer, Inc. -0409 NEC Corp. - 0011 PC98 Series Layout Keyboard Mouse - 0012 ATerm IT75DSU ISDN TA - 0014 Japanese Keyboard - 0019 109 Japanese Keyboard with Bus-Powered Hub - 001a PC98 Series Layout Keyboard with Bus-Powered Hub - 0025 Mini Keyboard with Bus-Powered Hub - 0027 MultiSync Monitor - 002c Clik!-USB Drive - 0034 109 Japanese Keyboard with One-touch start buttons - 003f Wireless Keyboard with One-touch start buttons - 0040 Floppy - 004e SuperScript 1400 Series - 004f Wireless Keyboard with One-touch start buttons - 0058 HighSpeed Hub - 0059 HighSpeed Hub - 005a HighSpeed Hub - 006a Conceptronic USB Harddisk Box - 0081 SuperScript 1400 Series - 0082 SuperScript 1400 Series - 0094 Japanese Keyboard with One-touch start buttons - 0095 Japanese Keyboard - 00a9 AtermIT21L 128K Support Standard - 00aa AtermITX72 128K Support Standard - 00ab AtermITX62 128K Support Standard - 00ac AtermIT42 128K Support Standard - 00ae INSMATEV70G-MAX Standard - 00af AtermITX70 128K Support Standard - 00b0 AtermITX80 128K Support Standard - 00b2 AtermITX80D 128K Support Standard - 00c0 Wireless Remocon - 00f7 Smart Display PK-SD10 - 011d e228 Mobile Phone - 0203 HID Audio Controls - 55aa Hub - 55ab Hub [iMac/iTouch kbd] - 8010 Intellibase Hub - 8011 Intellibase Hub - efbe P!cty 900 [HP DJ] - f0be P!cty 920 [HP DJ 812c] -040a Kodak Co. - 0001 DVC-323 - 0002 DVC-325 - 0100 DC-220 - 0110 DC-260 - 0111 DC-265 - 0112 DC-290 - 0120 DC-240 - 0121 DC-240 (PTP firmware) - 0130 DC-280 - 0131 DC-5000 - 0132 DC-3400 - 0140 DC-4800 - 0160 DC4800 - 0170 DX3900 - 0200 Digital Camera - 0300 EZ-200 - 0400 MC3 - 0402 Digital Camera - 0403 Z7590 - 0500 DX3500 - 0510 DX3600 - 0525 DX3215 - 0530 DX3700 - 0535 EasyShare CX4230 Camera - 0540 LS420 - 0550 DX4900 - 0555 DX4330 - 0560 CX4200 - 0565 CX4210 - 0566 CX4300 - 0567 LS753 - 0568 LS443 - 0569 LS663 - 0570 DX6340 - 0571 CX6330 - 0572 DX6440 - 0573 CX6230 - 0574 CX6200 - 0575 DX6490 - 0576 DX4530 - 0577 DX7630 - 0578 CX7300/CX7310 - 0579 CX7220 - 057a CX7330 - 057b CX7430 - 057c CX7530 - 057d DX7440 - 057e C300 - 057f DX7590 - 0580 Z730 - 0581 Digital Camera - 0582 Digital Camera - 0583 Digital Camera - 0584 CX6445 - 0585 Digital Camera - 0586 CX7525 - 0587 Digital Camera - 0588 Digital Camera - 0589 EasyShare C360 - 058a C310 - 058b Digital Camera - 058c C330 - 058d C340 - 058e V530 - 058f V550 - 0590 Digital Camera - 0591 Digital Camera - 0592 Digital Camera - 0593 Digital Camera - 0594 Digital Camera - 0595 Digital Camera - 0596 Digital Camera - 0597 Digital Camera - 0598 Digital Camera - 0599 Digital Camera - 059a Digital Camera - 059b Digital Camera - 059c Digital Camera - 059d Digital Camera - 059e Digital Camera - 059f Digital Camera - 05a0 Digital Camera - 05a1 Digital Camera - 05a2 Digital Camera - 05a3 Digital Camera - 05a4 Digital Camera - 05a5 Digital Camera - 05a6 Digital Camera - 05a7 Digital Camera - 05a8 Digital Camera - 05a9 Digital Camera - 05aa Digital Camera - 05ab Digital Camera - 05ac Digital Camera - 05ad Digital Camera - 05ae Digital Camera - 05af Digital Camera - 05b0 Digital Camera - 05b1 Digital Camera - 05b2 Digital Camera - 05b3 EasyShare Z710 Camera - 05b4 Digital Camera - 05b5 Digital Camera - 05b6 Digital Camera - 05b7 Digital Camera - 05b8 Digital Camera - 05b9 Digital Camera - 05ba Digital Camera - 05bb Digital Camera - 05bc Digital Camera - 05bd Digital Camera - 05be Digital Camera - 05bf Digital Camera - 05c0 Digital Camera - 05c1 Digital Camera - 05c2 Digital Camera - 05c3 Digital Camera - 05c4 Digital Camera - 05c5 Digital Camera - 4000 InkJet Color Printer - 410d EasyShare G600 Printer Dock - 5010 Wireless Adapter - 5012 DBT-220 Bluetooth Adapter - 6001 i30 - 6002 i40 - 6003 i50 - 6004 i60 - 6005 i80 -040b Weltrend Semiconductor - 6510 Weltrend Bar Code Reader - 6520 XBOX Xploder -040c VTech Computers, Ltd -040d VIA Technologies, Inc. - 3184 VNT VT6656 USB-802.11 Wireless LAN Adapter - 6205 USB 2.0 Card Reader -040e MCCI -040f Echo Speech Corp. -0411 MelCo., Inc. - 0001 LUA-TX Ethernet [pegasus] - 0005 LUA-TX Ethernet - 0006 WLI-USB-L11 Wireless LAN Adapter - 0009 LUA2-TX Ethernet - 000b WLI-USB-L11G-WR Wireless LAN Adapter - 000d WLI-USB-L11G Wireless LAN Adapter - 0012 LUA-KTX Ethernet - 0013 USB2-IDE Adapter - 0016 WLI-USB-S11 802.11b Adapter - 0018 USB2-IDE Adapter - 001c USB-IDE Bridge: DUB-PxxG - 0027 WLI-USB-KS11G 802.11b Adapter - 003d LUA-U2-KTX Ethernet - 0044 WLI-USB-KB11 Wireless LAN Adapter - 004d WLI-USB-B11 Wireless LAN Adapter - 0050 WLI2-USB2-G54 Wireless LAN Adapter - 005e WLI-U2-KG54-YB WLAN - 0065 Python2 WDM Encoder - 0066 WLI-U2-KG54 WLAN - 0067 WLI-U2-KG54-AI WLAN - 008b Nintendo Wi-Fi - 0091 WLI-U2-KAMG54 Wireless LAN Adapter - 0092 WLI-U2-KAMG54 Bootloader - 0097 WLI-U2-KG54-BB - 00a9 WLI-U2-AMG54HP Wireless LAN Adapter - 00aa WLI-U2-AMG54HP Bootloader - 00b3 PC-OP-RS1 RemoteStation - 00ca 802.11n Network Adapter - 00cb WLI-U2-G300N 802.11n Adapter - 00d8 WLI-U2-SG54HP - 00d9 WLI-U2-G54HP - 00da WLI-U2-KG54L -0412 Award Software International -0413 Leadtek Research, Inc. - 1310 WinFast TV - NTSC + FM - 1311 WinFast TV - NTSC + MTS + FM - 1312 WinFast TV - PAL BG + FM - 1313 WinFast TV - PAL BG+TXT + FM - 1314 WinFast TV Audio - PHP PAL I - 1315 WinFast TV Audio - PHP PAL I+TXT - 1316 WinFast TV Audio - PHP PAL DK - 1317 WinFast TV Audio - PHP PAL DK+TXT - 1318 WinFast TV - PAL I/DK + FM - 1319 WinFast TV - PAL N + FM - 131a WinFast TV Audio - PHP SECAM LL - 131b WinFast TV Audio - PHP SECAM LL+TXT - 131c WinFast TV Audio - PHP SECAM DK - 131d WinFast TV - SECAM DK + TXT + FM - 131e WinFast TV - NTSC Japan + FM - 1320 WinFast TV - NTSC - 1321 WinFast TV - NTSC + MTS - 1322 WinFast TV - PAL BG - 1323 WinFast TV - PAL BG+TXT - 1324 WinFast TV Audio - PHP PAL I - 1325 WinFast TV Audio - PHP PAL I+TXT - 1326 WinFast TV Audio - PHP PAL DK - 1327 WinFast TV Audio - PHP PAL DK+TXT - 1328 WinFast TV - PAL I/DK - 1329 WinFast TV - PAL N - 132a WinFast TV Audio - PHP SECAM LL - 132b WinFast TV Audio - PHP SECAM LL+TXT - 132c WinFast TV Audio - PHP SECAM DK - 132d WinFast TV - SECAM DK + TXT - 132e WinFast TV - NTSC Japan - 6023 EMP Audio Device - 6024 WinFast PalmTop/Novo TV Video - 6025 WinFast DTV Dongle (cold state) - 6026 WinFast DTV Dongle (warm state) - 6125 WinFast DTV Dongle - 6126 WinFast DTV Dongle BDA Driver - 6f00 WinFast DTV Dongle (STK7700P based) -0414 Giga-Byte Technology Co., Ltd -0416 Winbond Electronics Corp. - 0035 W89C35 802.11bg WLAN Adapter - 0101 Hub - 0961 AVL Flash Card Reader - 3810 Smart Card Controller - 3811 Generic Controller - Single interface - 3812 Smart Card Controller_2Interface - 3813 Panel Display - 5518 4-Port Hub - 551a PC Sync Keypad - 551b PC Async Keypad - 551c Sync Tenkey - 551d Async Tenkey - 551e Keyboard - 551f Keyboard w/ Sys and Media - 5521 Keyboard - 6481 16-bit Scanner - 7721 Memory Stick Reader/Writer - 7722 Memory Stick Reader/Writer - 7723 SD Card Reader -0417 Symbios Logic -0418 AST Research -0419 Samsung Info. Systems America, Inc. - 0001 IrDA Remote Controller - 3001 Xerox P1202 Laser Printer - 3003 Olivetti PG L12L - 3201 Docuprint P8ex - 3404 SCX-5x12 Series - 3406 MFP 830 Series - 3407 ML-912 - 3601 InkJet Color Printer - 3602 InkJet Color Printer - 4602 Remote NDIS Network Device - 8001 Hub - 8002 SyncMaster 757DFX HID Device -041a Phoenix Technologies, Ltd -041b d'TV -041d S3, Inc. -041e Creative Technology, Ltd - 1002 Nomad II - 1003 Blaster GamePad Cobra - 1050 GamePad Cobra - 3000 SoundBlaster Extigy - 3002 SB External Composite Device - 3010 SoundBlaster MP3+ - 3014 SB External Composite Device - 3015 Sound Blaster Digital Music LX - 3020 SoundBlaster Audigy 2 NX - 3030 SB External Composite Device - 3040 SoundBlaster Live! 24-bit External SB0490 - 3060 Sound Blaster Audigy 2 ZS External - 3061 SoundBlaster Audigy 2 ZS Video Editor - 3090 Sound Blaster Digital Music SX - 3f02 E-Mu 0202 - 3f04 E-Mu 0404 - 4003 VideoBlaster WebCam Go Plus [W9967CF] - 4004 Nomad II MG - 4005 WebCam Blaster Go ES - 4007 Go Mini - 400a PC-Cam 300 - 400b PC-Cam 600 - 400c WebCam 5 [pwc] - 400d WebCam PD1001 - 400f PC-CAM 550 (Composite) - 4011 WebCam PRO eX - 4012 PC-CAM350 - 4013 PC-Cam 750 - 4015 CardCam Value - 4016 CardCam - 4017 WebCam Mobile - 4018 WebCam Vista - 4019 Audio Device - 401c WebCam NX [PD1110] - 401d WebCam NX Ultra - 401e WebCam NX Pro - 401f Webcam Notebook - 4020 WebCam NX - 4021 WebCam NX Ultra - 4022 WebCam NX Pro - 4028 Vista Plus cam [VF0090] - 402f DC-CAM 3000Z - 4034 WebCam Instant - 4035 WebCam Instant - 4036 Webcam Live!/Live! Pro - 4037 WebCam Live! - 4038 ORITE CCD Webcam(PC370R) - 4039 WebCam Live! Effects - 403a WebCam NX Pro 2 - 403c WebCam Live! Ultra - 403d WebCam Notebook Ultra - 403e WebCam Vista Plus - 4041 WebCam Live! Motion - 4045 Live! Cam Voice - 4049 Live! Cam Voice - 4051 Live! Cam Notebook Pro - 4052 Live! Cam Vista IM - 4053 Live! Cam Video IM - 4054 Live! Cam Video IM - 4055 Live! Cam Video IM Pro - 4056 Live! Cam Video IM Pro - 4057 Live! Cam Optia - 4058 Live! Cam Optia AF - 4068 WebCam Live! Notebook - 4100 Nomad Jukebox 2 - 4101 Nomad Jukebox 3 - 4102 NOMAD MuVo^2 - 4106 Nomad MuVo - 4107 NOMAD MuVo - 4108 Nomad Jukebox Zen - 4109 Nomad Jukebox Zen NX - 410b Nomad Jukebox Zen USB 2.0 - 410c Nomad MuVo NX - 410f NOMAD MuVo^2 (Flash) - 4110 Nomad Jukebox Zen Xtra - 4111 Dell Digital Jukebox - 4116 MuVo^2 - 4117 Nomad MuVo TX - 411b Zen Touch - 411c Nomad MuVo USB 2.0 - 411d Zen - 411e Zen Micro - 4123 Zen Portable Media Center - 4124 MuVo^2 FM (uHDD) - 4126 Dell DJ (2nd gen) - 4127 Dell DJ - 4128 NOMAD Jukebox Zen Xtra (mtp) - 412b MuVo N200 with FM radio - 4130 Zen Micro (mtp) - 4131 Zen Touch (mtp) - 4133 Mass Storage Device - 4134 Zen Neeon - 4136 Zen Sleek - 4137 Zen Sleek (mtp) - 4139 Zen Nano Plus - 413c Zen MicroPhoto - 4151 Zen Vision:M (mtp) - 4155 Zen Stone plus - 500f Broadband Blaster 8012U-V - 5015 TECOM Bluetooth Device - ffff WebCam Live! Ultra -041f LCS Telegraphics -0420 Chips and Technologies - 1307 Celly SIM Card Reader -0421 Nokia Mobile Phones - 0018 6288 GSM Smartphone - 0019 6288 GSM Smartphone (imaging mode) - 001a 6288 GSM Smartphone (file transfer mode) - 0024 5610 XpressMusic (Storage mode) - 0025 5610 XpressMusic (PC-Suite mode) - 0028 5610 XpressMusic (Imaging mode) - 0096 N810 Internet Tablet - 0103 ADL Flashing Engine AVALON Parent - 0104 ADL Re-Flashing Engine Parent - 0105 E-61 (Firmware update mode) - 0106 ROM Parent - 0400 7600 Phone Parent - 0401 6650 GSM Phone - 0402 6255 Phone Parent - 0404 5510 - 0405 9500 GSM Communicator - 0407 Music Player HDR-1(tm) - 040b N-Gage GSM Phone - 040d 6620 Phone Parent - 040e 6651 Phone Parent - 040f 6230 GSM Phone - 0410 6630 Imaging Smartphone - 0411 7610 Phone Parent - 0413 6260 Phone Parent - 0414 7370 - 0415 9300 GSM Smartphone - 0416 6170 Phone Parent - 0417 7270 Phone Parent - 0418 E-70 (PC-Suite mode) - 0419 E-60 (PC-Suite mode) - 041a 9500 GSM Communicator (RNDIS) - 041b 9300 GSM Smartphone (RNDIS) - 041c 7710 Phone Parent - 041d 6670 Phone Parent - 041e 6680 - 041f 6235 Phone Parent - 0421 3230 Phone Parent - 0422 6681 Phone Parent - 0423 6682 Phone Parent - 0428 6230i Modem - 0429 6230i MultiMedia Card - 0431 770 Internet Tablet - 0432 N90 Phone Parent - 0435 E-70 (IP Passthrough/RNDIS mode) - 0436 E-60 (IP Passthrough/RNDIS mode) - 0437 6265 Phone Parent - 043a N70 USB Phone Parent - 043b 3155 Phone Parent - 043c 6155 Phone Parent - 043d 6270 Phone Parent - 0443 N70 Phone Parent - 044c NM850iG Phone Parent - 044d E-61 (PC Suite mode) - 044e E-61 (Data Exchange mode) - 044f E-61 (IP Passthrough/RNDIS mode) - 0453 9300 Phone Parent - 0456 6111 Phone Parent - 045a 6280 Phone Parent - 045d 6282 Phone Parent - 046e 6110 Navigator - 0485 MTP Device - 04c3 N800 Internet Tablet - 04ce E90 Communicator (PC-Suite mode) - 04cf E90 Communicator (Storage mode) - 04f9 6300 (PC-Suite mode) - 0600 Digital Pen SU-1B - 0800 Connectivity Cable DKU-5 - 0801 Data Cable DKU-6 - 0802 CA-42 Phone Parent -0422 ADI Systems, Inc. -0423 Computer Access Technology Corp. - 000a NetMate Ethernet - 000c NetMate2 Ethernet - 000d USB Chief Analyzer - 0100 Generic Universal Protocol Analyzer - 0101 UPA USBTracer - 0200 Generic 10K Universal Protocol Analyzer - 020a PETracer ML - 0300 Generic Universal Protocol Analyzer - 0301 2500H Tracer Trainer - 030a PETracer x1 - 1237 Andromeda Hub -0424 Standard Microsystems Corp. - 0001 Integrated Hub - 0acd Sitecom Internal Multi Memory reader/writer MD-005 - 0fdc Floppy - 10cd Sitecom Internal Multi Memory reader/writer MD-005 - 2020 USB Hub - 20cd Sitecom Internal Multi Memory reader/writer MD-005 - 20fc 6-in-1 Card Reader - 2228 9-in-2 Card Reader - 223a 8-in-1 Card Reader - 2503 USB 2.0 Hub - 2504 USB 2.0 Hub - 2524 USB MultiSwitch Hub -0425 Motorola Semiconductors HK, Ltd - 0101 G-Tech Wireless Mouse & Keyboard -0426 Integrated Device Technology, Inc. - 0426 WDM Driver -0427 Motorola Electronics Taiwan, Ltd -0428 Advanced Gravis Computer Tech, Ltd - 4001 GamePad Pro -0429 Cirrus Logic -042a Ericsson Austrian, AG -042b Intel Corp. - 9316 8x931Hx Customer Hub -042c Innovative Semiconductors, Inc. -042d Micronics -042e Acer, Inc. - 0380 MP3 Player -042f Molex, Inc. -0430 Sun Microsystems, Inc. - 0002 109 Keyboard - 0005 Type 6 Keyboard - 000a 109 Japanese Keyboard - 000b 109 Japanese Keyboard - 0082 109 Japanese Keyboard - 0083 109 Japanese Keyboard - 0100 3-button Mouse - 36ba Bus Powered Hub -0431 Itac Systems, Inc. - 0100 Mouse-Trak 3-button Track Ball -0432 Unisys Corp. -0433 Alps Electric, Inc. - 1101 IBM Game Controller - abab Keyboard -0434 Samsung Info. Systems America, Inc. -0435 Hyundai Electronics America -0436 Taugagreining HF - 0005 CameraMate (DPCM_USB) -0437 Framatome Connectors USA -0438 Advanced Micro Devices, Inc. -0439 Voice Technologies Group -043d Lexmark International, Inc. - 0001 Laser Printer - 0002 Optra E310 Printer - 0003 Laser Printer - 0004 Laser Printer - 0005 Laser Printer - 0006 Laser Printer - 0007 Laser Printer - 0008 Inkjet Color Printer - 0009 Optra S2450 Printer - 000a Laser Printer - 000b Inkjet Color Printer - 000c Optra E312 Printer - 000d Laser Printer - 000e Laser Printer - 000f Laser Printer - 0010 Laser Printer - 0011 Laser Printer - 0012 Inkjet Color Printer - 0013 Inkjet Color Printer - 0014 InkJet Color Printer - 0015 InkJet Color Printer - 0016 Z12 Color Jetprinter - 0017 Z32 printer - 0018 Z52 Printer - 0019 Forms Printer - 001a Z65 Printer - 001b InkJet Photo Printer - 001c Kodak Personal Picture Maker 200 Printer - 001d InkJet Color Printer - 001e InkJet Photo Printer - 001f Kodak Personal Picture Maker 200 Card Reader - 0020 Z51 Printer - 0021 Z33 Printer - 0022 InkJet Color Printer - 0023 Laser Printer - 0024 Laser Printer - 0025 InkJet Color Printer - 0026 InkJet Color Printer - 0027 InkJet Color Printer - 0028 InkJet Color Printer - 0029 Scan Print Copy - 002a Scan Print Copy - 002b Scan Print Copy - 002c Scan Print Copy - 002d X70/X73 Scan/Print/Copy - 002e Scan Print Copy - 002f Scan Print Copy - 0030 Scan Print Copy - 0031 Scan Print Copy - 0032 Scan Print Copy - 0033 Scan Print Copy - 0034 Scan Print Copy - 0035 Scan Print Copy - 0036 Scan Print Copy - 0037 Scan Print Copy - 0038 Scan Print Copy - 0039 Scan Print Copy - 003a Scan Print Copy - 003b Scan Print Copy - 003c Scan Print Copy - 003d X83 Scan/Print/Copy - 003e Scan Print Copy - 003f Scan Print Copy - 0040 Scan Print Copy - 0041 Scan Print Copy - 0042 Scan Print Copy - 0043 Scan Print Copy - 0044 Scan Print Copy - 0045 Scan Print Copy - 0046 Scan Print Copy - 0047 Scan Print Copy - 0048 Scan Print Copy - 0049 Scan Print Copy - 004a Scan Print Copy - 004b Scan Print Copy - 004c Scan Print Copy - 004d Laser Printer - 004e Laser Printer - 004f InkJet Color Printer - 0050 InkJet Color Printer - 0051 Laser Printer - 0052 Laser Printer - 0053 InkJet Color Printer - 0054 InkJet Color Printer - 0057 Z35 Printer - 0058 Laser Printer - 005a X63 - 005c InkJet Color Printer - 0060 X74/X75 Scanner - 0061 X74 Hub - 0065 X5130 - 0069 X74/X75 Printer - 006d X125 - 0072 X6170 Printer - 0073 InkJet Color Printer - 0078 InkJet Color Printer - 0079 InkJet Color Printer - 007a Generic Hub - 007b InkJet Color Printer - 007c Lexmark X1110/X1130/X1140/X1150/X1170/X1180/X1185 - 007d Photo 3150 - 008a 4200 Series - 008b InkJet Color Printer - 008c to CF/SM/SD/MS Card Reader - 008e InkJet Color Printer - 008f X422 - 0093 X5250 - 0095 E220 Printer - 0096 2200 Series - 0097 P6250 - 0098 7100 Series - 009e P910 Series Human Interface Device - 009f InkJet Color Printer - 00a9 IBM Infoprint 1410 MFP - 00ab InkJet Color Printer - 00b2 3300 Series - 00b8 7300 Series - 00b9 8300 Series - 00ba InkJet Color Printer - 00bb 2300 Series - 00bd Printing Support - 00be Printing Support - 00bf Printing Support - 00c0 6300 Series - 00c1 4300 Series - 00c7 Printing Support - 00c8 Printing Support - 00c9 Printing Support - 00cb Printing Support - 00d0 9300 Series - 00d3 X340 Scanner - 00d4 X342n Scanner - 00d5 Printing Support - 00d6 X340 Scanner - 00e8 X642e - 00e9 2400 Series - 00f6 3400 Series - 00f7 InkJet Color Printer - 00ff InkJet Color Printer - 010b 2500 Series - 010d 3500-4500 Series - 010f 6500 Series - 4303 Xerox WorkCentre Pro 412 -043e LG Electronics USA, Inc. - 42bd Flatron 795FT Plus Monitor - 4a4d Flatron 915FT Plus Monitor - 7001 MF-PD100 Soul Digital MP3 Player - 7013 MP3 Player - 8484 LPC-U30 Webcam II - 8585 LPC-UC35 Webcam - 8888 Electronics VCS Camera II(LPC-U20) - 9800 Remote Control Receiver_iMON - 9803 eHome Infrared Receiver - 9804 DMB Receiver Control - 9c01 LGE Sync -043f RadiSys Corp. -0440 Eizo Nanao Corp. -0441 Winbond Systems Lab. - 1456 Hub -0442 Ericsson, Inc. - abba Bluetooth Device -0443 Gateway, Inc. - 000e Multimedia Keyboard - 002e Millennium Keyboard -0445 Lucent Technologies, Inc. -0446 NMB Technologies Corp. - 6781 Keyboard with PS/2 Mouse Port - 6782 Keyboard -0447 Momentum Microsystems -044a Shamrock Tech. Co., Ltd -044b WSI -044c CCL/ITRI -044d Siemens Nixdorf AG -044e Alps Electric Co., Ltd - 1104 Japanese Keyboard - 2002 MD-5500 Printer - 2014 Bluetooth Device - 3001 UGTZ4 Bluetooth - 3002 Bluetooth Device - 3003 Bluetooth Device - 3004 Bluetooth Adapter - 3005 Integrated Bluetooth Device - 3006 Bluetooth Adapter - 3007 GlidePoint PS/2 TouchPad - 300c Bluetooth Controller (ALPS/UGPZ6) - 300d Bluetooth Controller (ALPS/UGPZ6) - ffff Compaq Bluetooth Multiport Module -044f ThrustMaster, Inc. - 0400 HOTAS Cougar - a003 Rage 3D Game Pad - a01b PK-GP301 Driving Wheel - a0a0 Top Gun Joystick - a0a1 Top Gun Joystick (rev2) - a0a3 Fusion Digital GamePad - a201 PK-GP201 PlayStick - b203 360 Modena Pro Wheel - b300 Firestorm Dual Power - b304 Firestorm Dual Power - b307 vibrating Upad - b603 force feedback Wheel - b605 force feedback Racing Wheel - b700 Tacticalboard -0450 DFI, Inc. -0451 Texas Instruments, Inc. - 1234 Bluetooth Device - 1428 Hub - 1446 TUSB2040/2070 Hub - 2036 TUSB2036 Hub - 2046 TUSB2046 Hub - 2077 TUSB2077 Hub - 3410 TUSB3410 Microcontroller - 3f02 SMC WSKP100 Wi-Fi Phone - 5409 Frontier Labs NEX IA+ Digital Audio Player - 6000 AU5 ADSL Modem (pre-reenum) - 6001 AU5 ADSL Modem - 6060 RNDIS/BeWAN ADSL2+ - 6070 RNDIS/BeWAN ADSL2+ - 625f Trekstor USB-Stick 12 CS-D 12 GB - dbc0 Device Bay Controller - e001 GraphLink - e004 TI-89 Titanium Calculator - e008 TI-84 Plus Silver Calculator - f430 MSP-FET430UIF JTAG Tool - ffff Bluetooth Device -0452 Mitsubishi Electronics America, Inc. - 0021 HID Monitor Controls - 0050 Diamond Pro 900u CRT Monitor - 0051 Integrated Hub -0453 CMD Technology - 6781 NMB Keyboard - 6783 Chicony Composite Keyboard -0454 Vobis Microcomputer AG -0455 Telematics International, Inc. -0456 Analog Devices, Inc. -0457 Silicon Integrated Systems Corp. - 0150 Super Talent 1GB Flash Drive - 0151 Super Flash 1GB / GXT 64MB Flash Drive - 0162 SiS162 usb Wireless LAN Adapter - 0163 802.11 Wireless LAN Adapter - 5401 Wireless Adapter RO80211GS-USB -0458 KYE Systems Corp. (Mouse Systems) - 0001 Mouse - 0002 Genius NetMouse Pro - 0003 Genius NetScroll+ - 0006 Easy Mouse+ USB(USB\Vid_0458&Pid;_0006) Mouse - 000b NetMouse Wheel(P+U) - 000c TACOMA Fingerprint V1.06.01 - 000e VideoCAM Web - 0013 TACOMA Fingerprint Mouse V1.06.01 - 001a Genius WebScroll+ - 0036 Pocket Mouse LE - 004c Slimstar Pro Keyboard - 0056 Ergo 300 Mouse - 0057 Enhanced Gaming Device - 0059 Enhanced Laser Device - 005a Enhanced Device - 005b Enhanced Device - 005c Enhanced Laser Gaming Device - 005d Enhanced Device - 0061 Bluetooth Dongle - 0083 Bluetooth Dongle - 0100 EasyPen Tablet - 0101 CueCat - 1001 Joystick - 1002 Game Pad - 1003 Genius VideoCam - 1004 Flight2000 F-23 Joystick - 100a Aashima Technology Trust Sight Fighter Vibration Feedback Joystick - 2001 ColorPage-Vivid Pro Scanner - 2004 ColorPage-HR6 V1 Scanner - 2005 ColorPage-HR6/Vivid3 - 2007 ColorPage-HR6 V2 Scanner - 2008 ColorPage-HR6 V2 Scanner - 2009 ColorPage-HR6A Scanner - 2011 ColorPage-Vivid3x Scanner - 2012 Plustek Scanner - 2013 ColorPage-HR7 Scanner - 2014 ColorPage-Vivid4 - 2015 ColorPage-HR7LE Scanner - 2016 ColorPage-HR6X Scanner - 2017 ColorPage-Vivid3xe - 2018 ColorPage-HR7X - 2019 ColorPage-HR6X Slim - 201a ColorPage-Vivid4xe - 201b ColorPage-Vivid4x - 201c ColorPage-HR8 - 201d ColorPage-Vivid 1200 X - 201e ColorPage-Slim 1200 - 201f ColorPage-Vivid 1200 XE - 2020 ColorPage-Slim 1200 USB2 - 2021 ColorPage-SF600 - 301d Genius MaxFire MiniPad - 6001 GF3000F Ethernet Adapter - 7004 VideoCAM Express - 7007 VideoCAM Web - 7009 G-Shot G312 Still Camera Device - 700c VideoCAM Web V3 - 700d G-Shot G511 Composite Device - 700f VideoCAM Web V4 - 7012 WebCAM USB2.0 - 7014 VideoCAM Live V3 - 701c G-Shot G512 Still Camera - 7020 Sim 321C -0459 Adobe Systems, Inc. -045a SONICblue, Inc. - 07da Supra Express 56K modem - 0b4a SupraMax 2890 56K Modem [Lucent Atlas] - 0b68 SupraMax 56K Modem - 5001 Rio 600 MP3 Player - 5002 Rio 800 MP3 Player - 5003 Nike Psa/Play MP3 Player - 5005 Rio S10 MP3 Player - 5006 Rio S50 MP3 Player - 5007 Rio S35 MP3 Player - 5008 Rio 900 MP3 Player - 5009 Rio S30 MP3 Player - 500d Fuse MP3 Player - 500e Chiba MP3 Player - 500f Cali MP3 Player - 5010 Rio S11 MP3 Player - 501c Virgin MPF-1000 - 501d Rio Fuse - 501e Rio Chiba - 501f Rio Cali - 503f Cali256 MP3 Player - 5202 Rio Riot MP3 Player - 5210 Rio Karma Music Player - 5220 Rio Nitrus MP3 Player - 5221 Rio Eigen -045b Hitachi, Ltd -045d Nortel Networks, Ltd -045e Microsoft Corp. - 0007 SideWinder Game Pad - 0008 SideWinder Precision Pro - 0009 IntelliMouse - 000b Natural Keyboard Elite - 000e SideWinder® Freestyle Pro - 0014 Digital Sound System 80 - 001a SideWinder Precision Racing Wheel - 001b SideWinder Force Feedback 2 Joystick - 001c Internet Keyboard Pro - 001d Natural Keyboard Pro - 001e IntelliMouse Explorer - 0023 Trackball Optical - 0024 Trackball Explorer - 0025 IntelliEye Mouse - 0026 SideWinder GamePad Pro - 0027 SideWinder PnP GamePad - 0028 SideWinder Dual Strike - 0029 IntelliMouse Optical - 002b Internet Keyboard Pro - 002d Internet Keyboard - 002f Integrated Hub - 0033 Sidewinder Strategic Commander - 0034 SideWinder Force Feedback Wheel - 0038 SideWinder Precision 2 - 0039 IntelliMouse Optical - 003b SideWinder Game Voice - 003c SideWinder Joystick - 0040 Wheel Mouse Optical - 0047 IntelliMouse Explorer 3.0 - 0048 Office Keyboard 1.0A - 0053 Optical Mouse - 0059 Wireless IntelliMouse Explorer - 005c Office Keyboard (106/109) - 005f Wireless MultiMedia Keyboard - 0061 Wireless MultiMedia Keyboard (106/109) - 0063 Wireless Natural MultiMedia Keyboard - 0065 Wireless Natural MultiMedia Keyboard (106/109) - 006a Wireless Optical Mouse (IntelliPoint) - 006d eHome Remote Control Keyboard keys - 006e MN510 802.11b Adapter - 006f Smart Display Reference Device - 0070 Wireless MultiMedia Keyboard - 0071 Wireless MultiMedia Keyboard (106/109) - 0072 Wireless Natural MultiMedia Keyboard - 0073 Wireless Natural MultiMedia Keyboard (106/109) - 007a 10/100 USB NIC - 007d Notebook Optical Mouse - 007e Wireless Transceiver for Bluetooth - 0080 Digital Media Pro Keyboard - 0083 Basic Optical Mouse - 0084 Basic Optical Mouse - 008a Wireless Keyboard and Mouse - 008b Dual Receiver Wireless Mouse (IntelliPoint) - 008c Wireless Intellimouse Explorer 2.0 - 0095 IntelliMouse Explorer 4.0 (IntelliPoint) - 009c Wireless Transceiver for Bluetooth 2.0 - 00a0 eHome Infrared Receiver - 00b0 Digital Media Pro Keyboard - 00b9 Wireless Optical Mouse 3.0 - 00bb Fingerprint Reader - 00bc Fingerprint Reader - 00bd Fingerprint Reader - 00c2 Wireless Adapter MN-710 - 00c9 MTP Device - 00ce Generic PPC Flash device - 00d1 Optical Mouse with Tilt Wheel - 00da eHome Infrared Receiver - 00db Natural Ergonomic Keyboard 4000 V1.0 - 00e1 Wireless Laser Mouse 6000 Reciever - 00f4 LifeCam VX-6000. - 00f5 LifeCam VX-3000. - 00f7 LifeCam VX-1000. - 00f8 LifeCam NX-6000. - 0202 Xbox Controller - 0280 XBox Device - 0284 Xbox DVD Playback Kit - 0285 Xbox Controller S - 0288 Xbox Controller S Hub - 0289 Xbox Controller S - 028b Xbox360 DVD Emulator - 028d Xbox360 Memory Unit 64MB - 028e Xbox360 Controller - 028f Xbox360 Wireless Controller - 0290 Xbox360 Performance Pipe (PIX) - 0292 Xbox360 Wireless Networking Adapter - 029c Xbox360 HD-DVD Drive - 029d Xbox360 HD-DVD Drive - 029e Xbox360 HD-DVD Memory Unit - 0400 Windows Powered Pocket PC 2002 - 0401 Windows Powered Pocket PC 2002 - 0402 Windows Powered Pocket PC 2002 - 0403 Windows Powered Pocket PC 2002 - 0404 Windows Powered Pocket PC 2002 - 0405 Windows Powered Pocket PC 2002 - 0406 Windows Powered Pocket PC 2002 - 0407 Windows Powered Pocket PC 2002 - 0408 Windows Powered Pocket PC 2002 - 0409 Windows Powered Pocket PC 2002 - 040a Windows Powered Pocket PC 2002 - 040b Windows Powered Pocket PC 2002 - 040c Windows Powered Pocket PC 2002 - 040d Windows Powered Pocket PC 2002 - 040e Windows Powered Pocket PC 2002 - 040f Windows Powered Pocket PC 2002 - 0410 Windows Powered Pocket PC 2002 - 0411 Windows Powered Pocket PC 2002 - 0412 Windows Powered Pocket PC 2002 - 0413 Windows Powered Pocket PC 2002 - 0414 Windows Powered Pocket PC 2002 - 0415 Windows Powered Pocket PC 2002 - 0416 Windows Powered Pocket PC 2002 - 0417 Windows Powered Pocket PC 2002 - 0432 Windows Powered Pocket PC 2003 - 0433 Windows Powered Pocket PC 2003 - 0434 Windows Powered Pocket PC 2003 - 0435 Windows Powered Pocket PC 2003 - 0436 Windows Powered Pocket PC 2003 - 0437 Windows Powered Pocket PC 2003 - 0438 Windows Powered Pocket PC 2003 - 0439 Windows Powered Pocket PC 2003 - 043a Windows Powered Pocket PC 2003 - 043b Windows Powered Pocket PC 2003 - 043c Windows Powered Pocket PC 2003 - 043d Becker Traffic Assist Highspeed 7934 - 043e Windows Powered Pocket PC 2003 - 043f Windows Powered Pocket PC 2003 - 0440 Windows Powered Pocket PC 2003 - 0441 Windows Powered Pocket PC 2003 - 0442 Windows Powered Pocket PC 2003 - 0443 Windows Powered Pocket PC 2003 - 0444 Windows Powered Pocket PC 2003 - 0445 Windows Powered Pocket PC 2003 - 0446 Windows Powered Pocket PC 2003 - 0447 Windows Powered Pocket PC 2003 - 0448 Windows Powered Pocket PC 2003 - 0449 Windows Powered Pocket PC 2003 - 044a Windows Powered Pocket PC 2003 - 044b Windows Powered Pocket PC 2003 - 044c Windows Powered Pocket PC 2003 - 044d Windows Powered Pocket PC 2003 - 044e Windows Powered Pocket PC 2003 - 044f Windows Powered Pocket PC 2003 - 0450 Windows Powered Pocket PC 2003 - 0451 Windows Powered Pocket PC 2003 - 0452 Windows Powered Pocket PC 2003 - 0453 Windows Powered Pocket PC 2003 - 0454 Windows Powered Pocket PC 2003 - 0455 Windows Powered Pocket PC 2003 - 0456 Windows Powered Pocket PC 2003 - 0457 Windows Powered Pocket PC 2003 - 0458 Windows Powered Pocket PC 2003 - 0459 Windows Powered Pocket PC 2003 - 045a Windows Powered Pocket PC 2003 - 045b Windows Powered Pocket PC 2003 - 045c Windows Powered Pocket PC 2003 - 045d Windows Powered Pocket PC 2003 - 045e Windows Powered Pocket PC 2003 - 045f Windows Powered Pocket PC 2003 - 0460 Windows Powered Pocket PC 2003 - 0461 Windows Powered Pocket PC 2003 - 0462 Windows Powered Pocket PC 2003 - 0463 Windows Powered Pocket PC 2003 - 0464 Windows Powered Pocket PC 2003 - 0465 Windows Powered Pocket PC 2003 - 0466 Windows Powered Pocket PC 2003 - 0467 Windows Powered Pocket PC 2003 - 0468 Windows Powered Pocket PC 2003 - 0469 Windows Powered Pocket PC 2003 - 046a Windows Powered Pocket PC 2003 - 046b Windows Powered Pocket PC 2003 - 046c Windows Powered Pocket PC 2003 - 046d Windows Powered Pocket PC 2003 - 046e Windows Powered Pocket PC 2003 - 046f Windows Powered Pocket PC 2003 - 0470 Windows Powered Pocket PC 2003 - 0471 Windows Powered Pocket PC 2003 - 0472 Windows Powered Pocket PC 2003 - 0473 Windows Powered Pocket PC 2003 - 0474 Windows Powered Pocket PC 2003 - 0475 Windows Powered Pocket PC 2003 - 0476 Windows Powered Pocket PC 2003 - 0477 Windows Powered Pocket PC 2003 - 0478 Windows Powered Pocket PC 2003 - 0479 Windows Powered Pocket PC 2003 - 047a Windows Powered Pocket PC 2003 - 047b Windows Powered Pocket PC 2003 - 04c8 Windows Powered Smartphone 2002 - 04c9 Windows Powered Smartphone 2002 - 04ca Windows Powered Smartphone 2002 - 04cb Windows Powered Smartphone 2002 - 04cc Windows Powered Smartphone 2002 - 04cd Windows Powered Smartphone 2002 - 04ce Windows Powered Smartphone 2002 - 04d7 Windows Powered Smartphone 2003 - 04d8 Windows Powered Smartphone 2003 - 04d9 Windows Powered Smartphone 2003 - 04da Windows Powered Smartphone 2003 - 04db Windows Powered Smartphone 2003 - 04dc Windows Powered Smartphone 2003 - 04dd Windows Powered Smartphone 2003 - 04de Windows Powered Smartphone 2003 - 04df Windows Powered Smartphone 2003 - 04e0 Windows Powered Smartphone 2003 - 04e1 Windows Powered Smartphone 2003 - 04e2 Windows Powered Smartphone 2003 - 04e3 Windows Powered Smartphone 2003 - 04e4 Windows Powered Smartphone 2003 - 04e5 Windows Powered Smartphone 2003 - 04e6 Windows Powered Smartphone 2003 - 04e7 Windows Powered Smartphone 2003 - 04e8 Windows Powered Smartphone 2003 - 04e9 Windows Powered Smartphone 2003 - 04ea Windows Powered Smartphone 2003 - 0708 Transceiver v 3.0 for Bluetooth - 070a Charon Bluetooth Dongle (DFU) - 930a ISOUSB.SYS Intel 82930 Isochronous IO Test Board - fff8 Keyboard -0460 Ace Cad Enterprise Co., Ltd -0461 Primax Electronics, Ltd - 0300 G2-300 Scanner - 0301 G2E-300 Scanner - 0302 G2-300 #2 Scanner - 0303 G2E-300 #2 Scanner - 0340 Colorado 9600 Scanner - 0341 Colorado 600u Scanner - 0345 Visioneer 6200 Scanner - 0346 Memorex Maxx 6136u Scanner - 0347 Primascan Colorado 2600u/Visioneer 4400 Scanner - 0360 Colorado 19200 Scanner - 0361 Colorado 1200u Scanner - 0363 VistaScan Astra 3600(ENG) - 0364 LG Electronics Scanworks 600U Scanner - 0365 VistaScan Astra 3600(ENG) - 0366 6400 - 0367 VistaScan Astra 3600(ENG) - 0371 Visioneer Onetouch 8920 Scanner - 0374 UMAX Astra 2500 - 0375 VistaScan Astra 3600(ENG) - 0377 Medion MD 5345 Scanner - 0378 VistaScan Astra 3600(ENG) - 037b Medion MD 6190 Scanner - 037c VistaScan Astra 3600(ENG) - 0380 G2-600 Scanner - 0381 ReadyScan 636i Scanner - 0382 G2-600 #2 Scanner - 0383 G2E-600 Scanner - 038a UMAX Astra 3000/3600 - 038b Xerox 2400 Onetouch - 038c UMAX Astra 4100 - 0392 Medion/Lifetec/Tevion/Cytron MD 6190 - 03a8 9420M - 0813 IBM UltraPort Camera - 0815 Micro Innovations WebCam - 0819 Fujifilm IX-30 Camera [webcam mode] - 081a Fujifilm IX-30 Camera [storage mode] - 081c Elitegroup ECS-C11 Camera - 081d Elitegroup ECS-C11 Storage - 0a00 Web Cam 320 - 4d01 Comfort Keyboard - 4d02 Mouse-in-a-Box - 4d03 Kensington Mouse-in-a-box - 4d04 Mouse - 4d06 Balless Mouse (HID) - 4d2a PoPo Elixir Mouse (HID) - 4d2b Wireless Laser Mini Mouse (HID) - 4d2c PoPo Mini Pointer Mouse (HID) - 4d2e Optical Mobile Mouse (HID) -0463 MGE UPS Systems - 0001 UPS - ffff UPS -0464 AMP/Tycoelectronics Corp. -0467 AT&T Paradyne -0468 Wieson Technologies Co., Ltd -046a Cherry GmbH - 0001 My3000 Keyboard - 0003 My3000 Hub - 0004 CyBoard Keyboard - 0005 XX33 SmartCard Reader Keyboard - 0010 SmartBoard XX44 - 0023 Cymotion Master Linux Keyboard - 002d SmartTerminal XX44 - 003e SmartTerminal ST-2xxx -046b American Megatrends, Inc. - 0001 Keyboard - 0101 PS/2 Keyboard, Mouse & Joystick Ports - 0301 USB 1.0 Hub - 0500 Serial & Parallel Ports -046c Toshiba Corp., Digital Media Equipment -046d Logitech, Inc. - 0082 Acer Aspire 5672 Webcam - 0200 WingMan Extreme Joystick - 0203 M2452 Keyboard - 0301 M4848 Mouse - 0401 HP PageScan - 0402 NEC PageScan - 040f Logitech/Storm PageScan - 0430 Mic (Cordless) - 0801 QuickCam Home - 0810 QuickCam Pro - 0820 QuickCam VC - 0830 QuickClip - 0840 QuickCam Express - 0850 QuickCam Web - 0870 QuickCam Express - 0890 QuickCam Traveler - 0892 OrbiCam - 0894 CrystalCam - 0895 QuickCam for Dell Notebooks - 0896 OrbiCam - 0897 QuickCam for Dell Notebooks - 0899 QuickCam for Dell Notebooks - 08a0 QuickCam IM - 08a1 QuickCam IM with sound - 08a2 Labtec WebCam Pro - 08a3 QuickCam QuickCam Chat - 08a6 QuickCam IM - 08a7 QuickCam Image - 08a9 Notebook Deluxe - 08aa Labtec Notebooks - 08ac QuickCam Cool - 08ad QuickCam Communicate STX - 08ae Quickcam for Notebooks - 08af QuickCam Easy/Cool - 08b0 QuickCam 3000 Pro [pwc] - 08b1 QuickCam Notebook Pro - 08b2 QuickCam Pro 4000 - 08b3 QuickCam Zoom - 08b4 QuickCam Zoom - 08b5 QuickCam Sphere - 08b9 QuickCam IM - 08bd Microphone (Pro 4000) - 08c0 QuickCam Pro 3000 - 08c1 QuickCam Fusion - 08c2 QuickCam PTZ - 08c3 Camera (Notebooks Pro) - 08c5 QuickCam Pro 5000 - 08c6 QuickCam for DELL Notebooks - 08c9 QuickCam Ultra Vision - 08ca Mic (Fusion) - 08cb Mic (Notebooks Pro) - 08cc Mic (PTZ) - 08ce QuickCam Pro 5000 - 08cf QuickCam UpdateMe - 08d0 QuickCam Express - 08d7 QuickCam Communicate STX - 08d8 QuickCam for Notebook Deluxe - 08d9 QuickCam IM/Connect - 08da QuickCam Messanger - 08dd QuickCam for Notebooks - 08e0 QuickCam Express - 08e1 Labtec WebCam - 08f0 QuickCam Messenger - 08f1 QuickCam Express - 08f2 Microphone (Messenger) - 08f3 QuickCam Express - 08f4 Labtec WebCam - 08f5 QuickCam Messenger Communicate - 08f6 Quickcam Messenger Plus - 0900 ClickSmart 310 - 0901 ClickSmart 510 - 0903 ClickSmart 820 - 0905 ClickSmart 820 - 0910 QuickCam Cordless - 0920 QuickCam Express - 0921 Labtec WebCam - 0922 QuickCam Live - 0928 Quickcam Express - 0929 Labtec WebCam Pro - 092a QuickCam for Notebooks - 092b Labtec WebCam Plus - 092c QuickCam Chat - 092d QuickCam Express / Go - 092e QuickCam Chat - 092f QuickCam Express Plus - 0950 Pocket Camera - 0960 ClickSmart 420 - 0970 Pocket750 - 0990 QuickCam Pro 9000 - 0991 QuickCam Pro for Notebooks - 0992 QuickCam Communicate Deluxe - 0994 QuickCam Orbit/Sphere AF - 09b0 OrbiCam - 09c0 QuickCam for Dell Notebooks Mic - 09c1 QuickCam Deluxe for Notebooks - 0a01 USB Headset - 0a02 Premium Stereo USB Headset 350 - 0a03 Logitech USB Microphone - 0a04 V20 portable speakers (USB powered) - 0b02 BT Mini-Receiver (HID proxy mode) - 8801 Video Camera - b305 BT Mini-Receiver - bfe4 Premium Optical Wheel Mouse - c000 N43 [Pilot Mouse] - c001 N48/M-BB48 [FirstMouse Plus] - c002 M-BA47 [MouseMan Plus] - c003 MouseMan - c004 WingMan Gaming Mouse - c005 WingMan Gaming Wheel Mouse - c00b MouseMan Wheel - c00c Optical Wheel Mouse - c00d MouseMan Wheel+ - c00e M-BJ58/M-BJ69 Optical Wheel Mouse - c00f MouseMan Traveler/Mobile - c011 Optical MouseMan - c012 Mouseman Dual Optical - c014 Corded Workstation Mouse - c015 Corded Workstation Mouse - c016 M-UV69a/HP M-UV96 Optical Wheel Mouse - c018 Optical Wheel Mouse - c019 Optical Tilt Wheel Mouse - c01a M-BQ85 Optical Wheel Mouse - c01b MX310 Optical Mouse - c01c Optical Mouse - c01d MX510 Optical Mouse - c01e MX518 Optical Mouse - c024 MX300 Optical Mouse - c025 MX500 Optical Mouse - c030 iFeel Mouse - c031 iFeel Mouse+ - c032 MouseMan iFeel - c033 iFeel MouseMan+ - c034 MouseMan Optical - c035 Mouse - c036 Mouse - c037 Mouse - c038 Mouse - c03d M-BT69a Pilot Optical Mouse - c03e Premium Optical Wheel Mouse - c03f UltraX Optical Mouse - c040 Corded Tilt-Wheel Mouse - c043 MX320 Laser Mouse - c044 LX3 Optical Mouse - c045 Optical Mouse - c046 RX1000 Laser Mouse - c047 Laser Mouse - c049 G5 Laser Mouse - c050 RX 250 Optical Mouse - c051 G3 (MX518) Optical Mouse - c053 Laser Mouse - c101 UltraX Media Remote - c201 WingMan Extreme Joystick with Throttle - c202 WingMan Formula - c207 WingMan Extreme Digital 3D - c208 WingMan Gamepad Extreme - c209 WingMan Gamepad - c20a WingMan RumblePad - c20b WingMan Action Pad - c20c WingMan Precision - c20d WingMan Attack 2 - c20e WingMan Formula GP - c211 iTouch Cordless Reciever - c212 WingMan Extreme Digital 3D - c213 J-UH16 (Freedom 2.4 Cordless Joystick) - c214 ATK3 (Attack III Joystick) - c215 Extreme 3D Pro - c216 Dual Action Gamepad - c218 Logitech RumblePad 2 USB - c219 Cordless RumblePad 2 - c21a Precision Gamepad - c221 G15 Keyboard / Keyboard - c222 G15 Keyboard / LCD - c223 G15 Keyboard / USB Hub - c281 WingMan Force - c283 WingMan Force 3D - c285 WingMan Strike Force 3D - c286 Force 3D Pro - c291 WingMan Formula Force - c293 WingMan Formula Force GP - c294 Driving Force - c295 Momo Force Steering Wheel - c298 Driving Force Pro - c2a0 Wingman Force Feedback Mouse - c2a1 WingMan Force Feedback Mouse - c301 iTouch Keyboard - c302 iTouch Pro Keyboard - c303 iTouch Keyboard - c305 Internet Keyboard - c307 Internet Keyboard - c308 Internet Navigator Keyboard - c309 Internet Keyboard - c30a iTouch Composite - c30c Internet Keys (X) - c30d Internet Keys - c30e UltraX Keys (X) - c30f Logicool HID-Compliant Keyboard (106 key) - c315 Classic New Touch Keyboard - c316 HID-Compliant Keyboard - c401 TrackMan Marble Wheel - c402 Marble Mouse (2-button) - c403 Turbo TrackMan Marble FX - c404 TrackMan Wheel - c408 Marble Mouse (4-button) - c501 Cordless Mouse Receiver - c502 Cordless Mouse & iTouch Keys - c503 Cordless Mouse+Keyboard Receiver - c504 Cordless Mouse+Keyboard Receiver - c505 Cordless Mouse+Keyboard Receiver - c506 MX-700 Cordless Mouse Receiver - c508 Cordless Trackball - c509 Cordless Keyboard - c50a Cordless Mouse - c50b Cordless Desktop Optical - c50d Cordless Mouse - c50e MX-1000 Cordless Mouse Receiver - c510 Cordless Mouse - c512 LX-700 Cordless Desktop Receiver - c513 MX3000 Cordless Desktop Receiver - c514 Cordless Mouse - c517 LX710 Cordless Desktop Laser - c518 MX610 Laser Cordless Mouse - c51a MX Revolution/G7 Cordless Mouse - c521 MX620 Laser Cordless Mouse - c625 3Dconnexion Space Pilot 3D Mouse - c626 3DConnexion Space Navigator 3D Mouse - c627 3DConnexion Space Explorer 3D Mouse - c702 Cordless Presenter - c703 Elite Keyboard Y-RP20 + Mouse MX900 (Bluetooth) - c707 Bluetooth wireless hub - c708 Bluetooth wireless hub - c709 BT Mini-Receiver (HCI mode) - c70a MX5000 Cordless Desktop - c70b BT Mini-Receiver (HID proxy mode) - c70c BT Mini-Receiver (HID proxy mode) - c70d Bluetooth wireless hub - c70e MX1000 Bluetooth Laser Mouse - c70f Bluetooth wireless hub - c712 Bluetooth wireless hub - c715 Bluetooth wireless hub - c71a Bluetooth wireless hub - c71d Bluetooth wireless hub - c720 Bluetooth wireless hub - ca03 MOMO Racing - ca04 Formula Vibration Feedback Wheel - d001 QuickCam Pro -046e Behavior Tech. Computer Corp. - 0100 Keyboard - 3001 Mass Storage Device - 3002 Mass Storage Device - 3003 Mass Storage Device - 3005 Mass Storage Device - 3008 Mass Storage Device - 5250 KeyMaestro Multimedia Keyboard - 5273 KeyMaestro Multimedia Keyboard - 5308 KeyMaestro Keyboard - 5408 KeyMaestro Multimedia Keyboard/Hub - 5720 Smart Card Reader - 6782 BTC 7932 mouse+keyboard -046f Crystal Semiconductor -0471 Philips - 0101 DSS350 Digital Speaker System - 0104 DSS330 Digital Speaker System [uda1321] - 0105 UDA1321 - 0160 MP3 Player - 0161 MP3 Player - 0201 Hub - 0222 Creative Nomad Jukebox - 0302 PCA645VC WebCam [pwc] - 0303 PCA646VC WebCam [pwc] - 0304 Askey VC010 WebCam [pwc] - 0307 PCVC675K WebCam [pwc] - 0308 PCVC680K WebCam [pwc] - 030b PC VGA Camera (Vesta Fun) - 030c PCVC690K WebCam [pwc] - 0310 PCVC730K WebCam [pwc] - 0311 PCVC740K ToUcam Pro [pwc] - 0312 PCVC750K WebCam [pwc] - 0314 DMVC 1000K - 0316 DMVC 2000K Video Capture - 0321 FunCam - 0325 SPC 200NC PC Camera - 0326 SPC 300NC PC Camera - 0327 WebCam SPC 6000 NC (WebCam w/ mic) - 0329 ORITE CCD Webcam(PC370R) - 0401 Semiconductors CICT Keyboard - 0402 PS/2 Mouse on Semiconductors CICT Keyboard - 0406 15 inch Detachable Monitor - 0407 10 inch Mobile Monitor - 0471 Digital Speaker System - 0601 OVU1020 IR Dongle (Kbd+Mouse) - 0602 ATI Remote Wonder II Input Device - 0603 ATI Remote Wonder II Controller - 0608 eHome Infrared Receiver - 060a TSU9600 Remote Control - 060e RF Dongle - 0619 TSU9400 Remote Control - 0700 Semiconductors CICT Hub - 0701 150P1 TFT Display - 0809 AVNET Bluetooth Device - 0811 JR24 CDRW - 0815 eHome Infrared Receiver - 1120 Creative Rhomba MP3 player - 1125 Nike psa[128max Player - 1137 HDD065 MP3 player - 1201 Arima Bluetooth Device - 1230 Wireless Adapter 11g - 1232 SNU6500 Wireless Adapter - 1233 Wireless Adapter Bootloader Download - 1236 SNU5600 - 1237 TalkTalk SNU5630NS/05 Wireless Adapter - 1552 ISP 1581 Hi-Speed USB MPEG2 Encoder Reference Kit - 1801 Diva MP3 player - 200a Wireless Network Adapter - 200f 802.11n Wireless Adapter - 485d Senselock SenseIV v2.x -0472 Chicony Electronics Co., Ltd - 0065 PFU-65 Keyboard -0473 Sanyo Information Business Co., Ltd -0474 Sanyo Electric Co., Ltd - 0110 Digital Voice Recorder R200 - 0217 Xacti J2 - 022f C5 Digital Media Camera (mass storage mode) - 0230 C5 Digital Media Camera (PictBridge mode) - 0231 C5 Digital Media Camera (PC control mode) - 0401 Optical Drive - 0701 SCP-4900 Cellphone - 071f Usb Com Port Enumerator -0475 Relisys/Teco Information System - 0100 NEC Petiscan - 0103 Eclipse 1200U/Episode - 0210 Scorpio Ultra 3 -0476 AESP -0477 Seagate Technology, Inc. -0478 Connectix Corp. - 0001 QuickCam - 0002 QuickClip - 0003 QuickCam Pro -0479 Advanced Peripheral Laboratories -047a Semtech Corp. - 0004 ScreenCoder UR7HCTS2-USB -047b Silitek Corp. - 0001 Keyboard - 0002 Keyboard and Mouse - 00f9 SK-1789u Keyboard - 0101 BlueTooth Keyboard and Mouse - 020b SK-3105 SmartCard Reader - 050e Internet Compact Keyboard - 1000 Trust Office Scan USB 19200 - 1002 HP ScanJet 4300c Parallel Port -047c Dell Computer Corp. -047d Kensington - 1001 Mouse*in*a*Box - 1002 Expert Mouse Pro - 1003 Orbit TrackBall - 1004 MouseWorks - 1005 TurboBall - 1006 TurboRing - 1009 Orbit TrackBall for Mac - 1012 PocketMouse - 1013 Mouse*in*a*Box Optical Pro - 1014 Expert Mouse Pro Wireless - 1015 Expert Mouse - 1016 ADB/USB Orbit - 1018 Studio Mouse - 101d Mouse*in*a*Box Optical Pro - 101e Studio Mouse Wireless - 101f PocketMouse Pro - 1020 Expert Mouse Trackball - 1021 Expert Mouse Wireless - 1022 Orbit Optical - 1023 Pocket Mouse Pro Wireless - 1024 PocketMouse - 1025 Mouse*in*a*Box Optical Elite Wireless - 1026 Pocket Mouse Pro - 1027 StudioMouse - 1028 StudioMouse Wireless - 1029 Mouse*in*a*Box Optical Elite - 102a Mouse*in*a*Box Optical - 102b PocketMouse - 102c Iridio - 102d Pilot Optical - 102e Pilot Optical Pro - 102f Pilot Optical Pro Wireless - 104a PilotMouse Mini Retractable - 105d PocketMouse Bluetooth - 105e Bluetooth EDR Dongle - 1061 PocketMouse Grip - 1062 PocketMouse Max - 1063 PocketMouse Max Wireless - 1064 PocketMouse 2.0 Wireless - 1065 PocketMouse 2.0 - 1066 PocketMouse Max Glow - 1067 ValueMouse - 1068 ValueOpt White - 1069 ValueOpt Black - 106a PilotMouse Laser Wireless Mini - 106b PilotMouse Laser - 3 Button - 106c PilotMouse Laser - Gaming - 106d PilotMouse Laser - Wired - 106e PilotMouse Micro Laser - 1070 ValueOpt Travel - 1071 ValueOpt RF TX - 1072 PocketMouse Colour - 1073 PilotMouse Laser - 6 Button - 1074 PilotMouse Laser Wireless Mini - 1075 SlimBlade Presenter Media Mouse - 1076 SlimBlade Media Mouse - 1077 SlimBlade Presenter Mouse - 1152 Bluetooth EDR Dongle - 2002 Optical Elite Wireless - 2010 Wireless Presentation Remote - 2021 PilotBoard Wireless - 2030 PilotBoard Wireless - 2034 SlimBlade Media Notebook Set - 4003 Gravis Xterminator Digital Gamepad - 4005 Gravis Eliminator GamePad Pro - 4006 Gravis Eliminator AfterShock - 4007 Gravis Xterminator Force - 4008 Gravis Destroyer TiltPad - 5001 Cabo I Camera - 5002 VideoCam CABO II - 5003 VideoCam -047e Agere Systems, Inc. (Lucent) - 0300 ORiNOCO Card - 1001 USS720 Parallel Port - 2892 Systems Soft Modem - bad1 Lucent 56k Modem - f101 Atlas Modem -047f Plantronics, Inc. - 0101 Bulk Driver - 0301 Bulk Driver - 0ca1 USB DSP v4 Audio Interface -0480 Toshiba America Info. Systems, Inc. - 0001 InTouch Module - 0004 InTouch Module - 0011 InTouch Module - 0014 InTouch Module -0481 Zenith Data Systems -0482 Kyocera Corp. - 000e FS-1020D Printer - 0100 Finecam S3x - 0101 Finecam S4 - 0103 Finecam S5 - 0105 Finecam L3 - 0106 Finecam - 0107 Digital Camera Device - 0108 Digital Camera Device - 0203 AH-K3001V - 0204 iBurst Terminal -0483 SGS Thomson Microelectronics - 0137 BeWAN ADSL USB ST (blue or green) - 1307 Cytronix 6in1 card reader - 163d Cool Icam Digi-MP3 - 2015 TouchChip® Fingerprint Reader - 2016 Fingerprint Reader - 2017 Biometric Smart Card Reader - 2018 BioSimKey - 2302 Portable Flash Device (PFD) - 4810 ISDN adapter - 481d BT Digital Access adapter - 5000 ST Micro Bluetooth Device - 5001 ST Micro Bluetooth Device - 7270 ST Micro Serial Bridge - 7554 56k SoftModem - ff10 Swann ST56 Modem -0484 Specialix -0485 Nokia Monitors -0486 ASUS Computers, Inc. -0487 Stewart Connector -0488 Cirque Corp. -0489 Foxconn / Hon Hai - 0502 SmartMedia Card Reader Firmware Loader - 0503 SmartMedia Card Reader -048a S-MOS Systems, Inc. -048c Alps Electric Ireland, Ltd -048d Integrated Technology Express, Inc. -048f Eicon Tech. -0490 United Microelectronics Corp. -0491 Capetronic - 0003 Taxan Monitor Control -0492 Samsung SemiConductor, Inc. -0493 MAG Technology Co., Ltd -0495 ESS Technology, Inc. -0496 Micron Electronics -0497 Smile International -0498 Capetronic (Kaohsiung) Corp. -0499 Yamaha Corp. - 1000 UX256 MIDI I/F - 1001 MU1000 - 1002 MU2000 - 1003 MU500 - 1004 UW500 - 1005 MOTIF6 - 1006 MOTIF7 - 1007 MOTIF8 - 1008 UX96 MIDI I/F - 1009 UX16 MIDI I/F - 100a EOS BX - 100c UC-MX - 100d UC-KX - 100e S08 - 100f CLP-150 - 1010 CLP-170 - 1011 P-250 - 1012 TYROS - 1013 PF-500 - 1014 S90 - 1015 MOTIF-R - 1016 MDP-5 - 1017 CVP-204 - 1018 CVP-206 - 1019 CVP-208 - 101a CVP-210 - 101b PSR-1100 - 101c PSR-2100 - 101d CLP-175 - 101e PSR-K1 - 101f EZ-J24 - 1020 EZ-250i - 1021 MOTIF ES 6 - 1022 MOTIF ES 7 - 1023 MOTIF ES 8 - 1024 CVP-301 - 1025 CVP-303 - 1026 CVP-305 - 1027 CVP-307 - 1028 CVP-309 - 1029 CVP-309GP - 102a PSR-1500 - 102b PSR-3000 - 102e ELS-01/01C - 1030 PSR-295/293 - 1031 DGX-205/203 - 1032 DGX-305 - 1033 DGX-505 - 2000 DGP-7 - 2001 DGP-5 - 3001 YST-MS55D USB Speaker - 4000 NetVolante RTA54i Broadband&ISDN Router - 4001 NetVolante RTW65b Broadband Wireless Router - 4002 NetVolante RTW65i Broadband&ISDN Wireless Router - 4004 NetVolante RTA55i Broadband VoIP Router - 5000 CS1D - 5001 DSP1D - 5002 DME32 - 5003 DM2000 - 5004 02R96 - 5005 ACU16-C - 5006 NHB32-C - 5007 DM1000 - 5008 01V96 - 5009 SPX2000 - 500a PM5D - 500b DME64N - 500c DME24N - 6001 CRW2200UX Lightspeed 2 External CD-RW Drive - 7000 DTX - 7010 UB99 -049a Gandalf Technologies, Ltd -049b Curtis Computer Products -049c Acer Advanced Labs, Inc. - 0002 Keyboard (???) -049d VLSI Technology -049f Compaq Computer Corp. - 0002 InkJet Color Printer - 0003 iPAQ PocketPC - 000e Internet Keyboard - 0012 InkJet Color Printer - 0018 PA-1/PA-2 MP3 Player - 0019 InkJet Color Printer - 001a S4 100 Scanner - 001e IJ650 Inkjet Printer - 001f WL215 Adapter - 0021 S200 Scanner - 0027 Bluetooth Multiport Module by Compaq - 002a 1400P Inkjet Printer - 002b A3000 - 002c Lexmark X125 - 0032 802.11b Adapter [ipaq h5400] - 0033 802.11b Adapter [orinoco] - 0036 Bluetooth Multiport Module - 0051 KU-0133 Easy Access Interner Keyboard - 0076 Wireless LAN MultiPort W200 - 0080 GPRS Multiport - 0086 Bluetooth Device - 504a Personal Jukebox PJB100 - 505a Linux-USB "CDC Subset" Device, or Itsy (experimental) - 8511 iPAQ Networking 10/100 Ethernet [pegasus2] -04a0 Digital Equipment Corp. -04a1 SystemSoft Corp. - fff0 Telex Composite Device -04a2 FirePower Systems -04a3 Trident Microsystems, Inc. -04a4 Hitachi, Ltd - 0004 DVD-CAM DZ-MV100A Camcorder - 001e DVDCAM USB HS Interface -04a5 Acer Peripherals Inc. (now BenQ Corp.) - 0001 Keyboard - 0002 API Ergo K/B - 0003 API Generic K/B Mouse - 12a6 AcerScan C310U - 1a20 Prisa 310U - 1a2a Prisa 620U - 2022 Prisa 320U/340U - 2040 Prisa 620UT - 205e ScanPrisa 640BU - 2060 Prisa 620U+/640U - 207e Prisa 640BU - 209e ScanPrisa 640BT - 20ae S2W 3000U - 20b0 S2W 3300U/4300U - 20be Prisa 640BT - 20c0 Prisa 1240UT - 20de S2W 4300U+ - 20f8 Benq 5000 - 20fc Benq 5000 - 20fe SW2 5300U - 2137 Benq 5150/5250 - 2202 Benq 7400UT - 3003 Benq WebCam - 3008 Benq 1500 - 300a Benq 3410 - 300c Benq 1016 - 3019 Benq DC C40 - 4000 P30 Composite Device - 6001 Mass Storage Device - 6002 Mass Storage Device - 6003 ATA/ATAPI Adapter - 6004 Mass Storage Device - 6005 Mass Storage Device - 6006 Mass Storage Device - 6007 Mass Storage Device - 6008 Mass Storage Device - 6009 Mass Storage Device - 600a Mass Storage Device - 600b Mass Storage Device - 600c Mass Storage Device - 600d Mass Storage Device - 600e Mass Storage Device - 600f Mass Storage Device - 6010 Mass Storage Device - 6011 Mass Storage Device - 6012 Mass Storage Device - 6013 Mass Storage Device - 6014 Mass Storage Device - 6015 Mass Storage Device - 6125 MP3 Player - 6180 MP3 Player - 6200 MP3 Player - 7500 Hi-Speed Mass Storage Device - 9000 AWL300 Wireless Adapter - 9001 AWL400 Wireless Adapter - 9213 Kbd Hub -04a6 Nokia Display Products - 00b9 Audio - 0180 Hub Type P - 0181 HID Monitor Controls -04a7 Visioneer - 0100 StrobePro - 0101 Strobe Pro Scanner (1.01) - 0102 StrobePro Scanner - 0211 OneTouch 7600 Scanner - 0221 OneTouch 5300 Scanner - 0223 OneTouch 8200 - 0224 OneTouch 4800 USB/Microtek Scanport 3000 - 0225 VistaScan Astra 3600(ENG) - 0226 OneTouch 5300 USB - 0229 OneTouch 7100 - 022a OneTouch 6600 - 022c OneTouch 9000/9020 - 0231 6100 Scanner - 0311 6200 EPP/USB Scanner - 0321 OneTouch 8100 EPP/USB Scanner - 0331 OneTouch 8600 EPP/USB Scanner - 0341 6400 - 0361 VistaScan Astra 3600(ENG) - 0362 OneTouch 9320 - 0371 OneTouch 8700/8920 - 0380 OneTouch 7700 - 0382 Photo Port 7700 - 0390 9650 - 03a0 Xerox 4800 One Touch - 0410 OneTouch Pro 8800/8820 - 0421 9450 USB - 0423 9750 Scanner - 0424 Strobe XP 450 - 0425 Strobe XP 100 - 0426 Strobe XP 200 - 0427 Strobe XP 100 - 0444 OneTouch 7300 - 0445 CardReader 100 - 0446 Xerox DocuMate 510 - 0447 XEROX DocuMate 520 - 0448 XEROX DocuMate 250 - 0449 Xerox DocuMate 252 - 044a Xerox 6400 - 044c Xerox DocuMate 262 - 0474 Strobe XP 300 - 0475 Xerox DocuMate 272 - 0478 Strobe XP 220 - 0479 Strobe XP 470 - 047a 9450 - 047b 9650 - 047d 9420 - 0480 9520 - 048f Strobe XP 470 - 0491 Strobe XP 450 - 0493 9750 - 0494 Strobe XP 120 - 0497 Patriot 430 - 0498 Patriot 680 - 0499 Patriot 780 - 049b Strobe XP 100 - 04a0 7400 -04a8 Multivideo Labs, Inc. - 0101 Hub - 0303 Peripheral Switch - 0404 Peripheral Switch -04a9 Canon, Inc. - 1005 BJ Printer Hub - 1035 PD Printer Storage - 1050 BJC-8200 - 1051 BJC-3000 Color Printer - 1052 BJC-6100 - 1053 BJC-6200 - 1054 BJC-6500 - 1055 BJC-85 - 1056 BJC-2110 Color Printer - 1057 LR1 - 105a BJC-55 - 105b S600 Printer - 105c S400 - 105d S450 Printer - 105e S800 - 1062 S500 Printer - 1063 S4500 - 1064 S300 Printer - 1065 S100 - 1066 S630 - 1067 S900 - 1068 S9000 - 1069 S820 - 106a S200 Printer - 106b S520 Printer - 106d S750 Printer - 106e S820D - 1070 S530D - 1072 I850 Printer - 1073 I550 Printer - 1074 S330 Printer - 1076 i70 - 1077 i950 - 107a S830D - 107b i320 - 107c i470D - 107d i9100 - 107e i450 - 107f i860 - 1082 i350 - 1084 i250 - 1085 i255 - 1086 i560 - 1088 i965 - 108a i455 - 108b i900D - 108c i475D - 108d PIXMA iP2000 - 108f i80 - 1090 i9900 Photo Printer - 1091 PIXMA iP1500 - 1093 PIXMA iP4000 - 1094 PIXMA iP3000x Printer - 1095 PIXMA iP6000D - 1097 PIXMA iP5000 - 1098 PIXMA iP1000 - 1099 PIXMA iP8500 - 109c PIXMA iP4000R - 109d iP90 - 10a0 PIXMA iP1600 Printer - 10a2 iP4200 - 10a4 iP5200R - 10a5 iP5200 - 10a7 iP6210D - 10a8 iP6220D - 10a9 iP6600D - 10b6 PIXMA iP4300 Printer - 1404 W6400PG - 1405 W8400PG - 150f BIJ2350 PCL - 1510 BIJ1350 PCL - 1512 BIJ1350D PCL - 1601 DR-2080C Scanner - 1607 DR-6080 Scanner - 1700 PIXMA MP110 Scanner - 1701 PIXMA MP130 Scanner - 1702 MP410 Composite - 1703 MP430 Composite - 1704 MP330 Composite - 1706 PIXMA MP750 Scanner - 1707 PIXMA MP780 Scanner - 1708 PIXMA MP760 Scanner - 1709 PIXMA MP150 Scanner - 170a PIXMA MP170 Scanner - 170b PIXMA MP450 Scanner - 170c PIXMA MP500 Scanner - 170d PIXMA MP800 Scanner - 170e MP800R - 1710 MP950 - 1712 MP530 - 1713 PIXMA MP830 Scanner - 1714 MP160 - 1715 MP180 Storage - 1716 MP460 Composite - 1717 MP510 - 1718 MP600 Storage - 171a MP810 Storage - 171b MP960 - 1721 MP210 ser - 1723 MP470 ser - 1725 MP610 ser - 1726 MP970 ser - 1727 MX300 ser - 1728 MX310 ser - 1729 MX700 ser - 172b MP140 ser - 2200 CanoScan LiDE 25 - 2201 CanoScan FB320U - 2202 CanoScan FB620U - 2204 CanoScan FB630U - 2205 CanoScan FB1210U - 2206 CanoScan N650U/N656U - 2207 CanoScan 1220U - 2208 CanoScan D660U - 220a CanoScan D2400UF - 220b CanoScan D646U - 220c CanoScan D1250U2 - 220d CanoScan N670U/N676U/LiDE 20 - 220e CanoScan N1240U/LiDE 30 - 220f CanoScan 8000F - 2210 CanoScan 9900F - 2212 CanoScan 5000F - 2213 CanoScan LiDE 50/LiDE 35/LiDE 40 - 2214 CanoScan LiDE 80 - 2215 CanoScan 3000/3000F/3000ex - 2216 CanoScan 3200F - 2217 CanoScan 5200F - 2219 CanoScan 9950F - 221b CanoScan 4200F - 221c CanoScan LiDE 60 - 221e CanoScan 8400F - 221f CanoScan LiDE 500F - 2220 CanoScan LIDE 25 - 2225 CanoScan LiDE 70 - 2228 CanoScan 4400F - 2602 MultiPASS C555 - 2603 MultiPASS C755 - 260a CAPT Printer - 260e LBP-2000 - 2610 MPC600F - 2611 SmartBase MPC400 - 2612 MultiPASS C855 - 2617 CAPT Printer - 261a iR1600 - 261b iR1610 - 261c iC2300 - 261f MPC200 Printer - 2621 iR2000 - 2622 iR2010 - 2623 FAX-B180C - 2629 FAXPHONE L75 - 262b LaserShot LBP-1120 Printer - 262d iR C3200 - 262f MultiPASS MP730 - 2630 MultiPASS MP700 - 2631 LASER CLASS 700 - 2632 FAX-L2000 - 2635 MPC190 - 2637 iR C6800 - 2638 iR C3100 - 263c Smartbase MP360 - 263d MP370 - 263e MP390 FAX - 263f MP375 - 2646 MF5530 Scanner Device V1.9.1 - 2647 MF5550 Composite - 264e MF5630 - 264f MF5650 (FAX) - 2650 iR 6800C EUR - 2651 iR 3100C EUR - 2655 FP-L170/MF350/L380/L398 - 2659 MF8100 - 265b CAPT Printer - 265c iR C3220 - 265d MF5730 - 265e MF5750 - 265f MF5770 - 2660 MF3110 - 2663 iR3570/iR4570 - 2664 iR2270/iR2870 - 2665 iR C2620 - 2666 iR C5800 - 2667 iR85PLUS - 2669 iR105PLUS - 266a CAPT Device - 266b iR8070 - 266c iR9070 - 266d iR 5800C EUR - 266e CAPT Device - 266f iR2230 - 2670 iR3530 - 2671 iR5570/iR6570 - 2672 iR C3170 - 2673 iR 3170C EUR - 2674 L120 - 2675 iR2830 - 2676 CAPT Device - 2677 iR C2570 - 2678 iR 2570C EUR - 2679 CAPT Device - 267a iR2016 - 267b iR2020 - 267d MF7100 Series - 2684 MF3200 Series - 2687 iR4530 - 2688 LBP3460 - 268c iR C6870 - 268d iR 6870C EUR - 268e iR C5870 - 268f iR 5870C EUR - 2691 iR7105 - 26a3 MF4100 Series - 26b5 MF4200 Series - 3041 PowerShot S10 - 3042 CanoScan FS4000US Film Scanner - 3043 PowerShot S20 - 3044 EOS D30 - 3045 PowerShot S100 - 3046 IXY Digital - 3047 Digital IXUS - 3048 PowerShot G1 - 3049 PowerShot Pro90 IS - 304a CP-10 - 304b IXY Digital 300 - 304c PowerShot S300 - 304d Digital IXUS 300 - 304e PowerShot A20 - 304f PowerShot A10 - 3050 PowerShot unknown 1 - 3051 PowerShot S110 - 3052 Digital IXUS V - 3055 PowerShot G2 - 3056 PowerShot S40 - 3057 PowerShot S30 - 3058 PowerShot A40 - 3059 PowerShot A30 - 305b ZR45MC Digital Camcorder - 305c PowerShot unknown 2 - 3060 EOS D60 - 3061 PowerShot A100 - 3062 PowerShot A200 - 3063 CP-100 - 3065 PowerShot S200 - 3066 Digital IXUS 330 - 3067 MV550i Digital Video Camera - 3069 PowerShot G3 - 306a Digital unknown 3 - 306b MVX2i Digital Video Camera - 306c PowerShot S45 - 306d PowerShot S45 PtP Mode - 306e PowerShot G3 (normal mode) - 306f PowerShot G3 (ptp) - 3070 PowerShot S230 - 3071 PowerShot S230 (ptp) - 3072 PowerShot SD100 / Digital IXUS II (ptp) - 3073 PowerShot A70 (ptp) - 3074 PowerShot A60 (ptp) - 3075 IXUS 400 Camera - 3076 PowerShot A300 - 3077 PowerShot S50 - 3078 ZR70MC Digital Camcorder - 307a MV650i (normal mode) - 307b MV630i Digital Video Camera - 307c MV630i (normal mode) - 307d CP-300 - 307f Optura 20 - 3080 MVX150i (normal mode) / Optura 20 (normal mode) - 3081 Optura 10 - 3082 MVX100i / Optura 10 - 3083 EOS 10D - 3084 EOS 300D / EOS Digital Rebel - 3085 PowerShot G5 - 3087 Elura 50 (PTP mode) - 3088 Elura 50 (normal mode) - 308d MVX3i - 308e FV M1 (normal mode) / MVX 3i (normal mode) / Optura Xi (normal mode) - 3093 Optura 300 - 3096 IXY DV M2 (normal mode) / MVX 10i (normal mode) - 3099 EOS 300D (ptp) - 309a PowerShot A80 - 309b Digital IXUS (ptp) - 309c PowerShot S1 IS - 309d Camera - 309f Camera - 30a0 Camera - 30a1 Camera - 30a2 Camera - 30a8 Elura 60E/Optura 40 (ptp) - 30a9 MVX25i (normal mode) / Optura 40 (normal mode) - 30b1 PowerShot S70 (normal mode) / PowerShot S70 (PTP mode) - 30b2 PowerShot S60 (normal mode) / PowerShot S60 (PTP mode) - 30b3 PowerShot G6 (normal mode) / PowerShot G6 (PTP mode) - 30b4 PowerShot S500 - 30b5 PowerShot A75 - 30b6 Digital IXUS II2 / Digital IXUS II2 (PTP mode) / PowerShot SD110 (PTP mode) / PowerShot SD110 Digital ELPH - 30b7 PowerShot A400 / PowerShot A400 (PTP mode) - 30b8 PowerShot A310 / PowerShot A310 (PTP mode) - 30b9 Powershot A85 - 30ba PowerShot S410 Digital Elph - 30bb PowerShot A95 - 30bd CP-220 - 30be CP-330 - 30bf Digital IXUS 40 - 30c0 Digital IXUS 30 (PTP mode) / PowerShot SD200 (PTP mode) - 30c1 Digital IXUS 50 (normal mode) / IXY Digital 55 (normal mode) / PowerShot A520 (PTP mode) / PowerShot SD400 (normal mode) - 30c2 PowerShot A510 (normal mode) / PowerShot A510 (PTP mode) - 30c4 Digital IXUS i5 (normal mode) / IXY Digital L2 (normal mode) / PowerShot SD20 (normal mode) - 30ea EOS 1D Mark II (PTP mode) - 30eb EOS 20D - 30ec EOS 20D (ptp) - 30ee EOS 350D - 30ef EOS 350D (ptp) - 30f0 PowerShot S2 IS (PTP mode) - 30f2 Digital IXUS 700 (normal mode) / Digital IXUS 700 (PTP mode) / IXY Digital 600 (normal mode) / PowerShot SD500 (normal mode) / PowerShot SD500 (PTP mode) - 30f6 SELPHY CP400 - 30f8 Powershot A430 - 30f9 PowerShot A410 (PTP mode) - 30fc PowerShot A620 (PTP mode) - 30fd PowerShot A610 (normal mode)/PowerShot A610 (PTP mode) - 30ff Digital IXUS 55 (PTP mode)/PowerShot SD450 (PTP mode) - 310b SELPHY CP600 - 310e Digital IXUS 50 (PTP mode) - 3116 Digital IXUS 750 (PTP mode) - 3117 PowerShot A700 - 3138 PowerShot A710 IS - 315a PowerShot G9 - 3176 PowerShot A590 - 31ff Digital IXUS 55 -04aa DaeWoo Telecom, Ltd -04ab Chromatic Research -04ac Micro Audiometrics Corp. -04ad Dooin Electronics - 2501 Bluetooth Device -04af Winnov L.P. -04b0 Nikon Corp. - 0102 Coolpix 990 - 0103 Coolpix 880 - 0104 Coolpix 995 - 0106 Coolpix 775 - 0107 Coolpix 5000 - 0108 Coolpix 2500 - 0109 Coolpix 2500 (ptp) - 010a Coolpix 4500 - 010b Coolpix 4500 (ptp) - 010d Coolpix 5700 (ptp) - 010e Coolpix 4300 (storage) - 010f Coolpix 4300 (ptp) - 0110 Coolpix 3500 (Sierra Mode) - 0111 Coolpix 3500 (ptp) - 0112 Coolpix 885 (ptp) - 0113 Coolpix 5000 (ptp) - 0114 Coolpix 3100 (storage) - 0115 Coolpix 3100 (ptp) - 0117 Coolpix 2100 (ptp) - 0119 Coolpix 5400 (ptp) - 011d Coolpix 3700 (ptp) - 0121 Coolpix 3200 (ptp) - 0122 Coolpix 2200 (ptp) - 0126 Coolpix 8800 - 0129 Coolpix 4800 (ptp) - 012c Coolpix 4100 (storage) - 012d Coolpix 4100 (ptp) - 012e Coolpix 5600 (ptp) - 0130 Coolpix 4600 (ptp) - 0135 Coolpix 5900 (ptp) - 0136 Coolpix 7900 (storage) - 0137 Coolpix 7900 (ptp) - 0141 Coolpix P2 (storage) - 0142 Coolpix P2 (ptp) - 0163 Coolpix P5100 (ptp) - 0169 Coolpix P50 (ptp) - 0202 Coolpix SQ (ptp) - 0203 Coolpix 4200 (mass storage mode) - 0204 Coolpix 4200 (ptp) - 0205 Coolpix 5200 (storage) - 0206 Coolpix 5200 (ptp) - 0301 Coolpix 2000 (storage) - 0302 Coolpix 2000 (ptp) - 0402 DSC D100 (ptp) - 0403 D2H (mass storage mode) - 0404 D2H SLR (ptp) - 0405 D70 (mass storage mode) - 0406 DSC D70 (ptp) - 0408 D2X SLR (ptp) - 0409 D50 digital camera - 040a D50 (ptp) - 040c D2Hs - 040e DSC D70s (ptp) - 0413 D40 (mass storage mode) - 4000 Coolscan LS 40 ED - 4001 LS 50 ED/Coolscan V ED - 4002 Super Coolscan LS-5000 ED -04b1 Pan International -04b3 IBM Corp. - 3003 Rapid Access III Keyboard - 3004 Media Access Pro Keyboard - 300a Rapid Access IIIe Keyboard - 3016 UltraNav Keyboard Hub - 3018 UltraNav Keyboard - 301b SK-8815 Keyboard - 301c Enhanced Performance Keyboard - 3020 Enhanced Performance Keyboard - 3100 NetVista Mouse - 3103 ScrollPoint Pro Mouse - 3104 ScrollPoint Wireless Mouse - 3105 ScrollPoint Optical (HID) - 3107 ThinkPad 800dpi Optical Travel Mouse - 3108 800dpi Optical Mouse w/ Scroll Point - 3109 Optical ScrollPoint Pro Mouse - 310b Red Wheel Mouse - 4427 Portable CD ROM - 4482 Serial Converter - 4525 Double sided CRT - 4550 NVRAM (128 KB) - 4554 Cash Drawer - 4580 Hub w/ NVRAM - 4581 4800-2xx Hub w/ Cash Drawer - 4604 Keyboard w/ Card Reader - 4671 4820 LCD w/ MSR/KB -04b4 Cypress Semiconductor Corp. - 0000 Dacal DC-101 CD Library - 0001 Mouse - 0002 CY7C63x0x Thermometer - 0101 Keyboard/Hub - 0102 Keyboard with APM - 0130 MyIRC Remote Receiver - 0bad MetaGeek Wi-Spy - 1002 CY7C63001 R100 FM Radio - 1006 Human Interface Device - 4381 SCAPS USC-1 Scanner Controller - 4611 Storage Adapter FX2 (CY) - 4616 Flash Disk (TPP) - 5500 HID->COM RS232 Adapter - 6370 ViewMate Desktop Mouse CC2201 - 6560 CY7C65640 USB-2.0 "TetraHub" - 6830 CY7C68300A EZ-USB AT2 USB 2.0 to ATA/ATAPI - 6831 Storage Adapter ISD-300LP (CY) - 7417 Wireless PC Lock - 8613 CY7C68013 EZ-USB FX2 USB 2.0 Development Kit - 8614 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) - cc04 Centor USB RACIA-ALVAR USB PORT - cc06 Centor-P RACIA-ALVAR USB PORT - d5d5 CY7C63x0x Zoltrix Z-Boxer GamePad - f000 CY30700 Licorice evaluation board -04b5 ROHM LSI Systems USA, LLC -04b6 Hint Corp. -04b7 Compal Electronics, Inc. -04b8 Seiko Epson Corp. - 0001 Stylus Color 740 / Photo 750 - 0002 ISD Smart Cable for Mac - 0003 ISD Smart Cable - 0004 Printer - 0005 Stylus D88+ - 0006 Printer - 0007 Printer - 0101 Perfection 636 - 0102 GT-2200 - 0103 Perfection 610 - 0104 Perfection 1200 - 0105 StylusScan 2000 - 0106 Stylus Scan 2500 - 0107 Expression 1600U - 0109 Expression 1640 XL - 010a Perfection 1640SU - 010b Perfection 1240 - 010c Perfection 640 - 010e Perfection 1680 - 010f Perfection 1250 - 0110 Perfection 1650 - 0112 Perfection 2450 - 0114 Perfection 660 - 0116 Perfection 3170 (GT-9400) - 0118 Perfection 4180 (GF-F600) - 0119 Perfection 4490 Photo - 011a 1000 ICS - 011b Perfection 2400 Photo - 011c Perfection 3200 - 011d Perfection 1260 Photo - 011e Perfection 1660 Photo - 011f Perfection 1670 - 0120 Perfection 1270 scanner - 0121 Perfection 2480 Photo - 0122 Perfection 3590 scanner - 0126 GT-15000 (ES-7000) - 0128 Perfection 4870 (GT-X700) - 0129 Expression 10000XL (ES-10000G) - 012a Perfection 4990 Photo scanner - 012b GT-2500 (ES-H300) - 012c Perfection V350 (GT-F700) - 012d Perfection V10/V100 (GT-S600/F650) - 012f Perfection V350 (GT-F700) - 0202 Receipt Printer M129C - 0401 CP 800 Digital Camera - 0402 PhotoPC 850z - 0403 PhotoPC 3000z - 0509 JVC PIX-MC10 - 0601 Stylus Photo 875DC Card Reader - 0602 Stylus Photo 895 Card Reader - 0801 Stylus CX5200/CX5400/CX6600 - 0802 Stylus CX3200 - 0803 Printer (Composite Device) - 0804 Storage Device - 0805 Stylus CX6400 - 0806 Stylus Photo RX600/610 - 0807 Stylus Photo RX500/510 - 0808 Stylus CX5200 - 0809 Storage Device - 080a Storage Device - 080c ME100 - 080d Stylus CX4500/4600 - 080e CX-3500/3600/3650 MFP - 080f Stylus Photo RX425 scanner - 0810 Stylus Photo RX700 (PM-A900) - 0811 Stylus Photo RX620 all-in-one - 0812 MFP Composite Device - 0813 Stylus CX6500/6600 - 0814 (PM-A700) - 0815 AcuLaser CX11 (LP-A500) - 0816 Printer (Composite Device) - 0817 (LP-M5500) - 0818 Stylus CX3700/CX3800/DX3800 - 0819 Stylus CX4700/CX4800/DX4800 (PX-A750) - 081a Stylus Photo RX520/RX530 (PM-A750) - 081b MFP Composite Device - 081c Stylus Photo RX640/RX650 (PM-A890) - 081d (PM-A950) - 081e MFP Composite Device - 081f Stylus CX7700/7800 - 0820 CX4200 MP scanner - 0821 MFP Composite Device - 0822 Storage Device - 0823 MFP Composite Device - 0824 Storage Device - 0825 MFP Composite Device - 0826 Storage Device - 0827 Stylus Photo RX560/580/590 (PM-A820) - 0828 (PM-A970) - 0829 (PM-T990) - 082a (PM-A920) - 082b Stylus DX5050 - 082c Storage Device - 082d Storage Device - 082e 0x082e DX-60x0 MFP scanner - 082f Stylus DX4050 - 0830 Stylus CX2800/CX2900/ME200 - 0831 MFP Composite Device - 0832 MFP Composite Device - 0833 (LP-M5600) - 0834 MFP Composite Device - 0835 AcuLaser CX21 - 0836 MFP Composite Device - 0837 MFP Composite Device - 0838 CX7300/CX7400/DX7400 - 0839 CX8300/CX8400/DX8400 - 083a CX9300F/CX9400Fax/DX9400F - 083b MFP Composite Device - 083c MFP Composite Device - 083d MFP Composite Device - 083e MFP Composite Device - 083f Stylus DX4450 -04b9 Rainbow Technologies, Inc. - 0300 SafeNet USB SuperPro/UltraPro - 1000 iKey 1000 Token - 1001 iKey 1200 Token - 1002 iKey Token - 1003 iKey Token - 1004 iKey Token - 1005 iKey Token - 1006 iKey Token - 1200 iKey 2000 Token - 1201 iKey Token - 1202 iKey 2032 Token - 1203 iKey Token - 1204 iKey Token - 1205 iKey Token - 1206 iKey Token - 1300 iKey 3000 Token - 1301 iKey 3000 - 1302 iKey Token - 1303 iKey Token - 1304 iKey Token - 1305 iKey Token - 1306 iKey Token -04ba Toucan Systems, Ltd -04bb I-O Data Device, Inc. - 0101 USB2-IDE/ATAPI Bridge Adapter - 0201 USB2-IDE/ATAPI Bridge Adapter - 0204 DVD Multi-plus unit iU-CD2 - 0206 DVD Multi-plus unit DVR-UEH8 - 0301 Storage Device - 0314 USB-SSMRW SD-card - 0319 USB2-IDE/ATAPI Bridge Adapter - 031a USB2-IDE/ATAPI Bridge Adapter - 031b USB2-IDE/ATAPI Bridge Adapter - 031e USB-SDRW SD-card - 0502 Nogatech Live! (BT) - 0901 USB ETT - 0904 ET/TX Ethernet [pegasus] - 0913 ET/TX-S Ethernet [pegasus2] - 0919 USB WN-B11 - 0922 IOData AirPort WN-B11/USBS 802.11b - 0930 ETG-US2 - 0937 WN-WAG/USL Wireless LAN Adapter - 0938 WN-G54/USL Wireless LAN Adapter - 0a03 Serial USB-RSAQ1 - 0a07 USB2-iCN Adapter - 0a08 USB2-iCN Adapter - 0c01 FM-10 Pro Disk -04bd Toshiba Electronics Taiwan Corp. -04be Telia Research AB -04bf TDK Corp. - 0100 MediaReader CF - 0115 USB-PDC Adapter UPA9664 - 0116 USB-cdmaOne Adapter UCA1464 - 0117 USB-PHS Adapter UHA6400 - 0118 USB-PHS Adapter UPA6400 - 0135 MediaReader Dual - 0202 73S1121F Smart Card Reader- - 0309 Bluetooth USB dongle - 030a IBM Bluetooth Ultraport Module - 030b Bluetooth Device - 030c Ultraport Bluetooth Device - 0310 Integrated Bluetooth - 0311 Integrated Bluetooth Device - 0317 Bluetooth UltraPort Module from IBM - 0318 IBM Integrated Bluetooth - 0319 Bluetooth Adapter - 0320 Bluetooth Adapter - 0321 Bluetooth Device - 0a28 INDI AV-IN Device -04c1 U.S. Robotics (3Com) - 0020 56K Voice Pro - 0022 56K Voice Pro - 007e ISDN TA - 0082 OfficeConnect Analog Modem - 008f Pro ISDN TA - 0097 OfficeConnect Analog - 009d HomeConnect WebCam [vicam] - 00a9 ISDN Pro TA-U - 00b9 HomeConnect IDSL Modem - 3021 56k Voice FaxModem Pro -04c2 Methode Electronics Far East PTE, Ltd -04c3 Maxi Switch, Inc. - 1102 Mouse - 2102 Mouse -04c4 Lockheed Martin Energy Research -04c5 Fujitsu, Ltd - 1029 fi-4010c Scanner - 1033 fi-4110CU - 1041 fi-4120c Scanner - 1042 fi-4220c Scanner - 105b AH-F401U Air H device - 1096 fi-5110EOX - 1097 fi-5110C - 10ae fi-4120C2 - 10af fi-4220C2 - 10e0 fi-5120c Scanner - 10e1 fi-5220C - 10e7 fi-5900C - 10fe S500 -04c6 Toshiba America Electronic Components -04c7 Micro Macro Technologies -04c8 Konica Corp. - 0720 Digital Color Camera - 0721 e-miniD Camera - 0722 e-mini - 0723 KD-200Z Camera - 0726 KD-310Z Camera - 0728 Revio C2 Mass Storage Device - 0729 Revio C2 Digital Camera - 072c Revio KD20M - 072d Revio KD410Z -04ca Lite-On Technology Corp. - 1766 HID Monitor Controls - 9304 Hub -04cb Fuji Photo Film Co., Ltd - 0100 FinePix 30i/40i/50i, A101/201, 1300/2200, 1400/2400/2600/2800/4500/4700/4800/4900/6800/6900 Zoom - 0103 FinePix NX-500/NX-700 printer - 0104 FinePix A101, 2600/2800/4800/6800 Zoom (PC CAM) - 0108 FinePix F601 Zoom (DSC) - 0109 FinePix F601 Zoom (PC CAM) - 010a FinePix S602 (Pro) Zoom (DSC) - 010b FinePix S602 (Pro) Zoom (PC CAM) - 010d FinePix Digital Camera 020531 - 010e FinePix F402 Zoom (DSC) - 010f FinePix F402 Zoom (PC CAM) - 0110 FinePix M603 Zoom (DSC) - 0111 FinePix M603 Zoom (PC CAM) - 0112 FinePix A202, A200 Zoom (DSC) - 0113 FinePix A202, A200 Zoom (PC CAM) - 0114 FinePix F401 Zoom (DSC) - 0115 FinePix F401 Zoom (PC CAM) - 0116 FinePix A203 Zoom (DSC) - 0117 FinePix A203 Zoom (PC CAM) - 0118 FinePix A303 Zoom (DSC) - 0119 FinePix A303 Zoom (PC CAM) - 011a FinePix S304/3800 Zoom (DSC) - 011b FinePix S304/3800 Zoom (PC CAM) - 011c FinePix A204/2650 Zoom (DSC) - 011d FinePix A204/2650 Zoom (PC CAM) - 0120 FinePix F700 Zoom (DSC) - 0121 FinePix F700 Zoom (PC CAM) - 0122 FinePix F410 Zoom (DSC) - 0123 FinePix F410 Zoom (PC CAM) - 0124 FinePix A310 Zoom (DSC) - 0125 FinePix A310 Zoom (PC CAM) - 0126 FinePix A210 Zoom (DSC) - 0127 FinePix A210 Zoom (PC CAM) - 0128 FinePix A205(S) Zoom (DSC) - 0129 FinePix A205(S) Zoom (PC CAM) - 012a FinePix F610 Zoom (DSC) - 012b FinePix Digital Camera 030513 - 012c FinePix S7000 Zoom (DSC) - 012d FinePix S7000 Zoom (PC CAM) - 012f FinePix Digital Camera 030731 - 0130 FinePix S5000 Zoom (DSC) - 0131 FinePix S5000 Zoom (PC CAM) - 013b FinePix Digital Camera 030722 - 013c FinePix S3000 Zoom (DSC) - 013d FinePix S3000 Zoom (PC CAM) - 013e FinePix F420 Zoom (DSC) - 013f FinePix F420 Zoom (PC CAM) - 0142 FinePix S7000 Zoom (PTP) - 0148 FinePix A330 Zoom (DSC) - 0149 FinePix A330 Zoom (UVC) - 014a FinePix A330 Zoom (PTP) - 014b FinePix A340 Zoom (DSC) - 0159 FinePix F710 Zoom (DSC) - 0165 FinePix S3500 Zoom (DSC) - 0168 FinePix E500 Zoom (DSC) - 0169 FinePix E500 Zoom (UVC) - 016b FinePix E510 Zoom (DSC) - 016c FinePix E510 Zoom (PC CAM) - 016e FinePix S5500 Zoom (DSC) - 016f FinePix S5500 Zoom (UVC) - 0171 FinePix E550 Zoom (DSC) - 0172 FinePix E550 Zoom (PTP) - 0177 FinePix F10 (DSC) - 0179 Finepix F10 (PTP) - 0186 FinePix S5200/S5600 Zoom (DSC) - 0188 FinePix S5200/S5600 Zoom (PTP) - 018e FinePix S9500 Zoom (DSC) - 018f FinePix S9500 Zoom (PTP) - 0192 FinePix E900 Zoom (DSC) - 0193 FinePix E900 Zoom (PTP) - 019b FinePix F30 (PTP) - 01bf FinePix F6000fd/S6500fd Zoom (PTP) - 01c0 FinePix F20 (PTP) - 01c1 FinePix F31fd (PTP) - 01c4 FinePix S5700 Zoom (PTP) - 01c5 FinePix F40fd (PTP) - 01c6 FinePix A820 Zoom (PTP) - 01d2 FinePix A800 Zoom (PTP) - 01d5 FinePix F47 (PTP) -04cc Philips Semiconductors - 1122 Hub - 1521 USB 2.0 Hub - 8116 Camera -04cd Tatung Co. Of America -04ce ScanLogic Corp. - 0002 SL11R-IDE IDE Bridge - 0100 USB2PRN Printer Class - 0300 Phantom 336CX - C3 scanner - 04ce SL11DEMO, VID: 0x4ce, PID: 0x4ce - 07d1 SL11R, VID: 0x4ce, PID: 0x07D1 -04cf Myson Century, Inc. - 0800 MTP800 Mass Storage Device - 8810 CS8810 Mass Storage Device - 8811 CS8811 Mass Storage Device - 8813 CS8813 Mass Storage Device - 8818 USB2.0 to ATAPI Bridge Controller -04d0 Digi International -04d1 ITT Canon -04d2 Altec Lansing Technologies - 0070 ADA70 Speakers - 0305 Non-Compliant Audio Device - 0311 ADA-310 Speakers - 2060 Claritel-i750 - vp - ff05 ADA-305 Speakers - ff47 Lansing HID Audio Controls - ff49 Lansing HID Audio Controls -04d3 VidUS, Inc. -04d4 LSI Logic, Inc. -04d5 Forte Technologies, Inc. -04d6 Mentor Graphics -04d7 Oki Semiconductor - 1be4 Bluetooth Device -04d8 Microchip Technology, Inc. - 0002 USB-LCD 2x20 - 8000 In-Circuit Debugger - 8001 ICD2 in-circuit debugger -04d9 Holtek Semiconductor, Inc. - 1203 MC Industries Keyboard -04da Panasonic (Matsushita) - 0901 LS-120 Camera - 0b01 CD-R/RW Drive - 0b03 SuperDisk 240MB - 0d01 CD-R Drive KXL-840AN - 0d09 CD-R Drive KXL-RW32AN - 0d0a CD-R Drive KXL-CB20AN - 0d0d CDRCB03 - 0d0e DVD-ROM & CD-R/RW - 0f40 Printer - 1500 MFSUSB Driver - 1b00 MultiMediaCard - 2121 EB-VS6 - 2317 DVC USB-SERIAL Driver for WinXP - 2319 NV-GS15 (webcam mode) - 231d DVC Web Camera Device - 231e DVC DV Stream Device - 2372 Lumix DMC-FZ10 Camera - 2374 DMC-FZ20 -04db Hypertec Pty, Ltd -04dc Huan Hsin Holdings, Ltd -04dd Sharp Corp. - 13a6 MFC2000 - 6006 AL-1216 - 6007 AL-1045 - 6008 AL-1255 - 6009 AL-1530CS - 600a AL-1540CS - 600b AL-1456 - 600c AL-1555 - 600d AL-1225 - 600e AL-1551CS - 600f AR-122E - 6010 AR-152E - 6011 AR-157E - 6012 SN-1045 - 6013 SN-1255 - 6014 SN-1456 - 6015 SN-1555 - 6016 AR-153E - 6017 AR-122E N - 6018 AR-153E N - 6019 AR-152E N - 601a AR-157E N - 601b AL-1217 - 601c AL-1226 - 601d AR-123E - 7002 DVC Ver.1.0 - 7004 VE-CG40U Digital Still Camera - 7005 VE-CG30 Digital Still Camera - 7007 VL-Z7S Digital Camcorder - 8004 Zaurus SL-5000D/SL-5500 PDA - 8005 Zaurus A-300 - 8006 Zaurus SL-B500/SL-5600 PDA - 8007 Zaurus C-700 PDA - 9014 IM-DR80 Portable NetMD Player - 9031 Zaurus C-750/C-760/C-860/SL-C3000 PDA - 9032 Zaurus SL-6000 - 903a GSM GPRS - 9050 Zaurus C-860 PDA - 9056 Viewcam Z - 9073 AM-900 - 9074 GSM GPRS - 90a9 Sharp Composite - 90d0 USB-to-Serial Comm. Port - 90f2 Sharp 3G GSM USB Control - 9120 WS004SH - 9122 WS007SH - 9123 W-ZERO3 ES Smartphone - 91a3 922SH Internet Machine -04de MindShare, Inc. -04df Interlink Electronics -04e1 Iiyama North America, Inc. - 0201 Monitor Hub -04e2 Exar Corp. -04e3 Zilog, Inc. -04e4 ACC Microelectronics -04e5 Promise Technology -04e6 SCM Microsystems, Inc. - 0001 E-USB ATA Bridge - 0002 eUSCSI SCSI Bridge - 0003 eUSB SmartMedia Card Reader - 0005 eUSB SmartMedia/CompactFlash Card Reader - 0006 eUSB SmartMedia Card Reader - 0007 Hifd - 0009 eUSB ATA/ATAPI Adapter - 000a eUSB CompactFlash Adapter - 000b eUSCSI Bridge - 000c eUSCSI Bridge - 000d Dazzle MS - 0012 Dazzle SD/MMC - 0101 eUSB ATA Bridge - 0311 Dazzle DM-CF - 0312 Dazzle DM-SD/MMC - 0313 Dazzle SM - 0314 Dazzle MS - 0322 e-Film Reader-5 - 0325 eUSB ORCA Quad Reader - 0327 Digital Media Reader - 03fe DMHS2 DFU Adapter - 0406 eUSB SmartDM Reader - 04e6 eUSB DFU Adapter - 04e7 STCII DFU Adapter - 04e8 eUSBDM DFU Adapter - 04e9 DM-E DFU Adapter - 0500 Veridicom 5thSense Fingerprint Sensor and eUSB SmartCard - 0701 DCS200 Loader Device - 0702 DVD Creation Station 200 - 0703 DVC100 Loader Device - 0704 Digital Video Creator 100 - 1001 SCR300 Smart Card Reader - 1010 USBAT-2 CompactFlash Card Reader - 1014 e-Film Reader-3 - 1020 USBAT ATA/ATAPI Adapter - 2007 RSA SecurID ComboReader - 2009 Citibank Smart Card Reader - 200a Reflex v.2 Smart Card Reader - 200d STR391 Reader - 5111 SCR331-DI SmartCard Reader - 5113 SCR333 SmartCard Reader - 5114 SCR331-DI SmartCard Reader - 5115 SCR335 SmartCard Reader - 5116 SCR331-LC1 SmartCard Reader - 5117 SCR3320 - Smart Card Reader - 5118 Expresscard SIM Card Reader - 5119 SCR3340 - ExpressCard54 Smart Card Reader - 511b SmartCard Reader - 511d SCR3311 Smart Card Reader - 5120 SCR331-DI SmartCard Reader - 5121 SDI010 Smart Card Reader - 5151 SCR338 Keyboard Smart Card Reader - 5410 SCR35xx Smart Card Reader - e000 SCRx31 Reader - e001 SCR331 SmartCard Reader - e003 SPR532 PinPad SmartCard Reader -04e7 Elo TouchSystems - 0001 TouchScreen - 0002 Touchmonitor Interface 2600 Rev 2 - 0004 4000U CarrollTouch® Touchmonitor Interface - 0007 2500U IntelliTouch® Touchmonitor Interface - 0008 3000U AccuTouch® Touchmonitor Interface - 0009 4000U CarrollTouch® Touchmonitor Interface - 0020 Touchscreen Interface (2700) - 0021 Touchmonitor Interface - 0030 4500U CarrollTouch® Touchmonitor Interface - 0032 Touchmonitor Interface - 0033 Touchmonitor Interface - 0041 5010 Surface Capacitive Touchmonitor Interface - 0042 Touchmonitor Interface - 0050 2216 AccuTouch® Touchmonitor Interface - 0071 Touchmonitor Interface - 0072 Touchmonitor Interface - 0081 Touchmonitor Interface - 0082 Touchmonitor Interface - 00ff Touchmonitor Interface -04e8 Samsung Electronics Co., Ltd - 0110 Connect3D Flash Drive - 0111 Connect3D Flash Drive - 1003 MP3 Player and Recorder - 1006 SDC-200Z - 3004 ML-4600 - 3005 Docuprint P1210 - 3008 ML-6060 laser printer - 300c ML-1210 Printer - 300e Laser Printer - 3104 ML-3550N - 3226 Laser Printer - 3228 Laser Printer - 322a Laser Printer - 322c Laser Printer - 3230 ML-1440 - 3232 Laser Printer - 3236 ML-1450 - 3238 ML-1430 - 323a ML-1710 Printer - 323b Phaser 3130 - 323c Laser Printer - 323d Phaser 3120 - 323e Laser Printer - 3240 Laser Printer - 3242 Laser Printer - 3248 Color Laser Printer - 324a Laser Printer - 324c ML-1740 Printer - 324d Phaser 3121 - 325f Phaser 3425 Laser Printer - 3260 CLP-510 Color Laser Printer - 3268 ML-1610 Mono Laser Printer - 326c ML-2010P Mono Laser Printer - 3409 SCX-4216F Scanner - 340c SCX-5x15 Series - 340d SCX-6x20 Series - 340e MFP 560 Series - 340f Printing Support - 3412 SCX-4x20 Series - 3413 SCX-4100 Scanner - 3415 Composite Device - 3419 Composite Device - 341a Printing Support - 341b SCX-4200 Series - 341c Composite Device - 341d Composite Device - 341f Composite Device - 3420 Composite Device - 3605 InkJet Color Printer - 3606 InkJet Color Printer - 3609 InkJet Color Printer - 3902 InkJet Color Printer - 3903 Xerox WorkCentre XK50cx - 390f InkJet Color Printer - 3911 SCX-1020 Series - 5000 YP-MF Series - 5001 YP-100 - 5002 YP-30 - 5003 YP-700 - 5004 YP-30 - 5005 YP-300 - 5006 YP-750 - 500d MP3 Player - 5010 MP3 Player - 5011 YP-780 - 5013 YP-60 - 5015 yepp upgrade - 501b MP3 Player - 503b YP-U1 MP3 Player - 5050 YP-U2 MP3 Player - 507d YP-U3 MP3 Player - 508b YP-S5 MP3 Player - 5a00 YP-NEU - 5a01 YP-NDU - 5a03 Yepp MP3 Player - 5a04 YP-800 - 5a08 YP-90 - 5a0f MTP Device - 5b01 Memory Stick Reader/Writer - 5b02 Memory Stick Reader/Writer - 5b03 Memory Stick Reader/Writer - 5b04 Memory Stick Reader/Writer - 5b05 Memory Stick Reader/Writer - 5b11 SEW-2001u Card - 5f00 NEXiO Sync - 5f01 NEXiO Sync - 5f02 NEXiO Sync - 5f03 NEXiO Sync - 5f04 NEXiO Sync - 6601 Z100 Mobile Phone - 6611 MITs Sync - 6613 MITs Sync - 6615 MITs Sync - 6617 MITs Sync - 6619 MITs Sync - 661b MITs Sync - 661e Handheld - 6620 Handheld - 6622 Handheld - 6624 Handheld - 662e MITs Sync - 6630 MITs Sync - 6632 MITs Sync - 663f SGH-E720/SGH-E840 - 6640 Usb Modem Enumerator - 7011 SEW-2003U Card - 7021 Bluetooth Device - 7061 eHome Infrared Receiver - 7081 Human Interface Device - 8001 Handheld - e020 SERI E02 SCOM 6200 UMTS Phone - e021 SERI E02 SCOM 6200 Virtual UARTs - e022 SERI E02 SCOM 6200 Flash Load Disk - ff30 SG_iMON -04e9 PC-Tel, Inc. -04ea Brooktree Corp. -04eb Northstar Systems, Inc. -04ec Tokyo Electron Device, Ltd -04ed Annabooks -04ef Pacific Electronic International, Inc. -04f0 Daewoo Electronics Co., Ltd -04f1 Victor Company of Japan, Ltd - 0001 GC-QX3 Digital Still Camera - 0004 GR-DVL815U Digital Video Camera - 0006 DV Camera Storage - 0008 GZ-MG30AA/MC500E Digital Video Camera - 0009 GR-DX25EK Digital Video Camera - 000a GR-D72 Digital Video Camera - 3008 MP-PRX1 Ethernet -04f2 Chicony Electronics Co., Ltd - 0001 KU-8933 Keyboard - 0002 NT68P81 Keyboard - 0110 KU-2971 Keyboard - 0111 KU-9908 Keyboard - 0112 KU-8933 Keyboard with PS/2 Mouse port - 0116 KU-2971 German Keyboard - 0403 KU-0420 keyboard - a001 E-Video DC-100 Camera - a120 ORITE CCD Webcam(PC370R) - a121 ORITE CCD Webcam(PC370R) - a122 ORITE CCD Webcam(PC370R) - a123 ORITE CCD Webcam(PC370R) - a124 ORITE CCD Webcam(PC370R) - a133 Gateway Webcam - a204 DSC WIA Device (1300) - a208 DSC WIA Device (2320) - a209 Labtec DC-2320 - a20a DSC WIA Device (3310) - a20c DSC WIA Device (3320) - a210 Audio Device - b009 Integrated Camera - b010 Integrated Camera - b012 1.3 MPixel UVC webcam - b018 Video Device - b022 Camera - b025 Camera - b027 Gateway Webcam - b028 VGA UVC WebCam -04f3 Elan Microelectronics Corp. - 0210 AM-400 Hama Optical Mouse -04f4 Harting Elektronik, Inc. -04f5 Fujitsu-ICL Systems, Inc. -04f6 Norand Corp. -04f7 Newnex Technology Corp. -04f8 FuturePlus Systems -04f9 Brother Industries, Ltd - 0002 HL-1050 Laser Printer - 0005 Printer - 0006 HL-1240 Laser Printer - 0007 HL-1250 Laser Printer - 0008 HL-1270 Laser Printer - 0009 Printer - 000a P2500 Series - 000b Printer - 000c Printer - 000d HL-1440 Laser Printer - 000e HL-1450 series - 000f HL-1470N series - 0010 Printer - 0011 Printer - 0012 Printer - 0013 Printer - 0014 Printer - 0015 Printer - 0016 Printer - 0017 Printer - 0018 Printer - 001c Printer - 001e Printer - 0020 HL-5130 series - 0021 HL-5140 series - 0022 HL-5150D series - 0023 HL-5170DN series - 0024 Printer - 0025 Printer - 0027 HL-2030 Laser Printer - 0028 Printer - 0029 Printer - 002a Printer - 002b Printer - 002c Printer - 002d Printer - 0100 MFC8600/9650 Series - 0101 MFC9600/9870 Series - 0102 MFC9750/1200 Series - 0104 MFC-8300J - 0105 MFC-9600J - 0106 MFC-7300C - 0107 MFC-7400C - 0108 MFC-9200C - 0109 MFC-830 - 010a MFC-840 - 010b MFC-860 - 010c MFC-7400J - 010d MFC-9200J - 010e MFC3100C Scanner - 010f MFC 5100C - 0110 MFC4800 Scanner - 0111 MFC 6800 - 0112 DCP1000 Port(FaxModem) - 0113 MFC-8500 - 0114 MFC9700 Port(FaxModem) - 0115 MFC9800 Scanner - 0116 DCP1400 Scanner - 0119 MFC-9660 - 011b MFC-9880 - 011c MFC-9760 - 011d MFC-9070 - 011e MFC-9180 - 011f MFC-9160 - 0120 MFC580 Port(FaxModem) - 0121 MFC-590 - 0122 MFC-5100J - 0129 Imagistics 2500 (MFC-8640D clone) - 012f FAX-4750e - 0132 MFC-5200C RemovableDisk - 0135 MFC-100 Scanner - 0136 MFC-150CL Scanner - 013c MFC-890 Port - 013d MFC-5200J Printer - 013e MFC-4420C RemovableDisk - 013f MFC-4820C RemovableDisk - 0140 DCP-8020 - 0141 DCP-8025D - 0142 MFC-8420 - 0143 MFC-8820D - 0144 DCP-4020C RemovableDisk - 0146 MFC-3220C - 0147 FAX-1820C Printer - 0148 MFC-3320CN Printer - 0149 FAX-1920CN Printer - 014a MFC-3420C - 014b MFC-3820CN - 014d FAX-1815C Printer - 014e MFC-8820J - 0150 MFC-8220 Port(FaxModem) - 0151 MFC-8210J - 0157 MFC-3420J Printer - 0158 MFC-3820JN Port(FaxModem) - 015d MFC Composite Device - 015e DCP-8045D - 015f MFC-8440 - 0160 MFC-8840D - 0161 MFC-210C - 0162 MFC-420CN Remote Setup Port - 0163 MFC-410CN RemovableDisk - 0165 MFC-620CN - 0166 MFC-610CLN RemovableDisk - 0168 MFC-620CLN - 0169 DCP-110C RemovableDisk - 016b DCP-310CN RemovableDisk - 016c FAX-2440C Printer - 016d MFC-5440CN - 016e MFC-5840CN Remote Setup Port - 0170 FAX-1840C Printer - 0171 FAX-1835C Printer - 0172 FAX-1940CN Printer - 0173 MFC-3240C Remote Setup Port - 0174 MFC-3340CN RemovableDisk - 017b Imagistics sx2100 - 0180 MFC-7420 - 0181 MFC-7820N Port(FaxModem) - 0182 Composite Device - 0183 DCP-7020 - 0184 DCP-7025 Printer - 0185 MFC-7220 Printer - 0186 Composite Device - 0187 FAX-2820 Printer - 0188 FAX-2920 Printer - 018a MFC-9420CN - 018c DCP-115C - 018d DCP-116C - 018e DCP-117C - 018f DCP-118C - 0190 DCP-120C - 0191 DCP-315CN - 0192 DCP-340CW - 0193 MFC-215C - 0194 MFC-425CN - 0195 MFC-820CW Remote Setup Port - 0196 MFC-820CN Remote Setup Port - 0197 MFC-640CW - 019a MFC-840CLN Remote Setup Port - 01a2 MFC-8640D - 01a3 Composite Device - 01a4 DCP-8065DN Printer - 01a5 MFC-8460N Port(FaxModem) - 01a6 MFC-8860DN Port(FaxModem) - 01a7 MFC-8870DW Printer - 01a8 DCP-130C - 01a9 DCP-330C - 01aa DCP-540CN - 01ab MFC-240C - 01ae DCP-750CW RemovableDisk - 01af MFC-440CN - 01b0 MFC-660CN - 01b1 MFC-665CW Remote Setup Port - 01b2 MFC-845CW Remote Setup Port - 01b4 MFC-460CN Remote Setup Port - 01b5 MFC-630CD - 01b6 MFC-850CDN - 01b7 MFC-5460CN Remote Setup Port - 01b8 MFC-5860CN - 01ba MFC-3360C - 01bd MFC-8660DN - 01be DCP-750CN RemovableDisk - 01bf MFC-860CDN Remote Setup Port - 01c0 DCP-128C - 01c1 DCP-129C - 01c2 DCP-131C - 01c3 DCP-329C - 01c4 DCP-331C - 01c5 MFC-239C - 01ca MFC-9440CN Remote Setup Port - 01ce DCP-135C - 01cf DCP-150C - 01d0 DCP-350C - 01d1 DCP-560CN - 01d4 MFC-230C - 01d5 MFC-235C - 01d6 MFC-260C - 01df DCP-155C - 01e0 MFC-265C - 01e1 DCP-153C - 01e2 DCP-157C - 01e3 DCP-353C - 01e4 DCP-357C - 1000 Printer - 1002 Printer - 2002 PTUSB Printing - 2004 PT-2300/2310 p-Touch Laber Printer - 2015 QL-500 P-touch label printer - 2100 Card Reader Writer -04fa Dallas Semiconductor - 2490 DS1490F 2-in-1 Fob, 1-Wire adapter - 4201 DS4201 Audio DAC -04fb Biostar Microtech International Corp. -04fc Sunplus Technology Co., Ltd - 0003 CM1092 Optical Scroller Mouse - 0013 ViewMate Desktop Mouse CC2201 - 0015 ViewMate Desktop Mouse CC2201 - 0232 Fingerprint - 0561 Flexcam 100 - 1533 Mass Storage - 504a SPCA504a Digital Camera - 504b Aiptek, 1.3 mega PockerCam - 5330 Digitrex 2110 - 5331 Vivitar Vivicam 10 - 5720 Card Reader Driver - 7333 Finet Technology Palmpix DC-85 - 757a Aiptek, MP315 MP3 Player - ffff PureDigital Ritz Disposable -04fd Soliton Systems, K.K. - 0003 Smart Card Reader II -04fe PFU, Ltd -04ff E-CMOS Corp. -0500 Siam United Hi-Tech - 0001 DART Keyboard Mouse - 0002 DART-2 Keyboard -0501 Fujikura DDK, Ltd -0502 Acer, Inc. - 0001 Handheld - 0736 Handheld - 15b1 PDA n311 - 1631 c10 Series - 1632 c20 Series - 16e1 n10 Handheld Sync - 16e2 n20 Pocket PC Sync - 16e3 n30 Handheld Sync - d001 Divio NW801/DVC-V6+ Digital Camera -0503 Hitachi America, Ltd -0504 Hayes Microcomputer Products -0506 3Com Corp. - 009d HomeConnect Camera - 00a0 3CREB96 Bluetooth Adapter - 00a1 Bluetooth Device - 00a2 Bluetooth Device - 00df 3Com Home Connect lite - 0100 HomeConnect ADSL Modem Driver - 03e8 3C19250 Ethernet [klsi] - 0a01 3CRSHEW696 Wireless Adapter - 0a11 3CRWE254G72 802.11g Adapter - 11f8 HomeConnect 3C460 - 2922 HomeConnect Cable Modem External with - 3021 U.S.Robotics 56000 Voice FaxModem Pro - 4601 3C460B 10/100 Ethernet Adapter - f002 3CP4218 ADSL Modem (pre-init) - f003 3CP4218 ADSL Modem - f100 3CP4218 ADSL Modem (pre-init) -0507 Hosiden Corp. - 0011 Konami ParaParaParadise Controller -0508 Clarion Co., Ltd -0509 Aztech Systems, Ltd - 0801 ADSL Modem - 0802 ADSL Modem (RFC1483) - 0806 DSL Modem - 080f Binatone ADSL500 Modem Network Interface - 0812 Pirelli ADSL Modem Network Interface -050a Cinch Connectors -050b Cable System International -050c InnoMedia, Inc. -050d Belkin Components - 0004 Direct Connect - 0012 F8T012 Bluetooth Adapter - 0013 F8T013 Bluetooth Adapter - 0050 F5D6050 802.11b Wireless Adapter - 0081 F8T001v2 Bluetooth - 0083 Bluetooth Device - 0084 F8T003v2 Bluetooth - 0102 Flip KVM - 0103 F5U103 Serial Adapter [etek] - 0106 VideoBus II Adapter, Video - 0108 F1DE108B KVM - 0109 F5U109/F5U409 PDA Adapter - 0115 SCSI Adapter - 0119 F5U120-PC Dual PS/2 Ports - 0121 F5D5050 100Mbps Ethernet - 0122 Ethernet Adapter - 0131 Bluetooth Device with trace filter - 0201 Peripheral Switch - 0208 USBView II Video Adapter [nt1004] - 0210 F5U228 Hi-Speed USB 2.0 DVD Creator - 0211 F5U211 USB 2.0 15-in-1 Media Reader & Writer - 0224 F5U224 USB 2.0 4-Port Hub - 0234 F5U234 USB 2.0 4-Port Hub - 0237 F5U237 USB 2.0 7-Port Hub - 0240 F5U240 USB 2.0 CF Card Reader - 0257 F5U257 Serial - 0409 F5U409 Serial - 0551 F6C550-AVR UPS - 0802 Nostromo n40 Gamepad - 0803 Nostromo 1745 GamePad - 0805 Nostromo N50 GamePad - 0815 Nostromo n52 HID SpeedPad Mouse Wheel - 0826 ErgoFit Wireless Optical Mouse (HID) - 0980 HID UPS Battery - 1202 F5U120-PC Parallel Printer Port - 1203 F5U120-PC Serial Port - 258a F5U258 Host to Host cable - 3101 F1DF102U/F1DG102U Flip Hub - 3201 F1DF102U/F1DG102U Flip KVM - 4050 ZD1211B - 5055 F5D5055 - 6051 11Mbps Wireless Network Adapter - 7050 F5D7050 ver 1000 WiFi - 7051 F5D7051 54g USB Network Adapter - 705a F5D7050A Wireless Adapter - 705b Wireless G Adapter - 705c F5D7050 v4000 Wireless Adapter - 905b F5D9050 ver 3 Wireless Adapter - 905c Wireless G Plus MIMO Network Adapter -050e Neon Technology, Inc. -050f KC Technology, Inc. - 0001 Hub - 0003 KC82C160S Hub - 0180 KC-180 IrDA Dongle - 0190 KC2190 USB Host-to-Host cable -0510 Sejin Electron, Inc. - 0001 Keyboard - 1000 Keyboard with PS/2 Mouse Port - e001 Mouse -0511 N'Able (DataBook) Technologies, Inc. -0512 Hualon Microelectronics Corp. -0513 digital-X, Inc. -0514 FCI Electronics -0515 ACTC -0516 Longwell Electronics -0517 Butterfly Communications -0518 EzKEY Corp. - 0001 USB to PS2 Adaptor v1.09 - 0002 EZ-9900C Keyboard -0519 Star Micronics Co., Ltd - c002 Xlive Bluetooth XBM-100S MP3 Player -051a WYSE Technology - a005 Smart Display Version 9973 -051b Silicon Graphics -051c Shuttle, Inc. - c001 eHome Infrared Receiver - c002 eHome Infrared Receiver -051d American Power Conversion - 0001 UPS - 0002 Uninterruptible Power Supply - 0003 UPS -051e Scientific Atlanta, Inc. -051f IO Systems (Elite Electronics), Inc. -0520 Taiwan Semiconductor Manufacturing Co. -0521 Airborn Connectors -0522 Advanced Connectek, Inc. -0523 ATEN GmbH -0524 Sola Electronics -0525 Netchip Technology, Inc. - 100d RFMD Bluetooth Device - 1080 NET1080 USB-USB Bridge - a140 USB Clik! 40 - a141 (OME) PocketZip 40 MP3 Player Driver - a220 GVC Bluetooth Wireless Adapter - a4a0 Linux-USB "Gadget Zero" - a4a1 Linux-USB Ethernet Gadget - a4a2 Linux-USB Ethernet/RNDIS Gadget - a4a3 Linux-USB user-mode isochronous source/sink - a4a4 Linux-USB user-mode bulk source/sink - a4a5 Linux-USB File Storage Gadget - a4a6 Linux-USB Serial Gadget - a4a7 Linux-USB Serial Gadget (CDC ACM mode) - a4a8 Linux-USB Printer Gadget -0526 Temic MHS S.A. -0527 ALTRA -0528 ATI Technologies, Inc. - 7561 TV Wonder - 7562 TV Wonder, Edition (FN5) - 7563 TV Wonder, Edition (FI) - 7564 TV Wonder, Edition (FQ) - 7565 TV Wonder, Edition (NTSC+) - 7566 TV Wonder, Edition (FN5) - 7567 TV Wonder, Edition (FI) - 7568 TV Wonder, Edition (FQ) - 7569 Live! Pro (A) - 756a Live! Pro Audio (O) -0529 Aladdin Knowledge Systems - 0001 HASP v0.06 - 030b eToken R1 v3.1.3.x - 0313 eToken R1 v3.2.3.x - 031b eToken R1 v3.3.3.x - 0323 eToken R1 v3.4.3.x - 0412 eToken R2 v2.2.4.x - 041a eToken R2 v2.2.4.x - 0422 eToken R2 v2.4.4.x - 042a eToken R2 v2.5.4.x - 050c eToken Pro v4.1.5.x - 0514 eToken Pro v4.2.5.4 - 0600 eToken Pro 64k (4.2) -052a Crescent Heart Software -052b Tekom Technologies, Inc. - 0102 Ca508A HP1020 Camera v.1.3.1.6 - 0801 Yakumo MegaImage 37 - 1512 Yakumo MegaImage IV - 1513 Aosta CX100 WebCam - 1514 Aosta CX100 WebCam Storage - 1905 Yakumo MegaImage 47 - 1911 Yakumo MegaImage 47 SL - 2202 WDM Still Image Capture - 2203 Sound Vision Stream Driver - 3a06 DigiLife DDV-5120A - d001 P35U Camera Capture -052c Canon Information Systems, Inc. -052d Avid Electronics Corp. -052e Standard Microsystems Corp. -052f Unicore Software, Inc. -0530 American Microsystems, Inc. -0531 Wacom Technology Corp. -0532 Systech Corp. -0533 Alcatel Mobile Phones -0534 Motorola, Inc. -0535 LIH TZU Electric Co., Ltd -0536 Hand Held Products (Welch Allyn, Inc.) - 01a0 PDT -0537 Inventec Corp. -0538 Caldera International, Inc. (SCO) -0539 Shyh Shiun Terminals Co., Ltd -053a Preh Werke GmbH & Co. KG -053b Global Village Communication -053c Institut of Microelectronic & Mechatronic Systems -053d Silicon Architect -053e Mobility Electronics -053f Synopsys, Inc. -0540 UniAccess AB - 0101 Panache Surf ISDN TA -0541 Sirf Technology, Inc. -0543 ViewSonic Corp. - 00fe G773 Monitor Hub - 00ff P815 Monitor Hub - 0bf2 airpanel V150 Wireless Smart Display - 0bf3 airpanel V110 Wireless Smart Display - 0ed9 Color Pocket PC V35 - 0f01 airsync Wi-Fi Wireless Adapter - 1527 Color Pocket PC V36 - 1529 Color Pocket PC V37 - 152b Color Pocket PC V38 - 152e Pocket PC - 1921 Communicator Pocket PC - 1922 Smartphone - 1923 Pocket PC V30 - 1a11 Wireless 802.11g Adapter - 1e60 TA310 - ATSC/NTSC/PAL Driver(PCM4) - 4153 ViewSonic G773 Control (?) -0544 Cristie Electronics, Ltd -0545 Xirlink, Inc. - 7333 Trution Web Camera - 8002 IBM NetCamera - 8009 Veo PC Camera - 800c Veo StingRay - 800d Veo PC Camera - 8080 IBM C-It WebCam - 808a Veo PC Camera - 808b Veo PC Camera - 808d Veo PC Camera - 810a Veo Advanced Connect WebCam - 810b Veo PC Camera - 810c Veo PC Camera - 8135 Veo Mobile/Advanced Web Camera - 813a Veo PC Camera - 813b Veo PC Camera - 813c Veo Mobile/Advanced Web Camera - 8333 Veo Stingray/Connect Web Camera - 888c eVision 123 digital camera - 888d eVision 123 digital camera -0546 Polaroid Corp. - 0daf PDC 2300Z - 1bed PDC 1320 Camera - 3097 PDC 310 - 3187 Digital Cam - dccf Sound Vision Stream Driver -0547 Anchor Chips, Inc. - 0001 ICSI Bluetooth Device - 1002 Python2 WDM Encoder - 2131 AN2131 EZUSB Microcontroller - 2235 AN2235 EZUSB-FX Microcontroller - 2710 EZ-Link Loader (EZLNKLDR.SYS) - 2720 AN2720 USB-USB Bridge - 2727 Xircom PGUNET USB-USB Bridge - 2750 EZ-Link (EZLNKUSB.SYS) - 2810 Cypress USB ATAPI Bridge - 7777 Bluetooth Device - 9999 AN2131 uninitialized (?) -0548 Tyan Computer Corp. - 1005 EZ Cart II GameBoy Flash Programmer -0549 Pixera Corp. -054a Fujitsu Microelectronics, Inc. -054b New Media Corp. -054c Sony Corp. - 0001 HUB - 0002 Standard HUB - 0010 DSC-S30/S70/S75/F505V/F505/FD92/W1 Cybershot/Mavica Digital Camera - 0014 Nogatech USBVision (SY) - 0022 Storage Adapter V2 (TPP) - 0023 CD Writer - 0024 Mavica CD-1000 Camera - 0025 NW-MS7 Walkman MemoryStick Reader - 002b Portable USB Harddrive V2 - 002c USB Floppy Disk Drive - 002d MSAC-US1 MemoryStick Reader - 002e Sony HandyCam MemoryStick Reader - 0030 Storage Adapter V2 (TPP) - 0032 MemoryStick MSC-U01 Reader - 0035 Network Walkman (E) - 0036 Net MD - 0037 MG Memory Stick Reader/Writer - 0038 Clie PEG-S300/D PalmOS PDA - 0039 Network Walkman (MS) - 003c VAIO-MX LCD Control - 0045 Digital Imaging Video - 0046 Network Walkman - 004a Memory Stick Hi-Fi System - 004b Memory Stick Reader/Writer - 004e DSC-xxx (ptp) - 0056 MG Memory Stick Reader/Writer - 0058 Clie PEG-N7x0C PalmOS PDA Mass Storage - 0066 Clie PEG-N7x0C/PEG-T425 PalmOS PDA Serial - 0069 Memorystick MSC-U03 Reader - 006d Clie PEG-T425 PDA Mass Storage - 006f Network Walkman (EV) - 0073 Storage CRX1750U - 0075 Net MD - 0076 Storage Adapter ACR-U20 - 007c Net MD - 007f IC Recorder (MS) - 0080 Net MD - 0081 Net MD - 0084 Net MD - 0085 Net MD - 0086 Net MD - 008b Micro Vault 64M Mass Storage - 0095 Sony Clie s360 - 0099 Clie NR70 PDA Mass Storage - 009a Clie NR70 PDA Serial - 00ab Visual Communication Camera (PCGA-UVC10) - 00af DPP-EX Series Digital Photo Printer - 00bf IC Recorder (S) - 00c0 Handycam DCR-30 - 00c6 Net MD - 00c7 Net MD - 00c8 MZ-N710 Minidisc Walkman - 00c9 Net MD - 00ca MZ-DN430 Minidisc Walkman - 00cb MSAC-US20 Memory Stick Reader - 00da Sony Clie nx60 - 00e8 Network Walkman (MS) - 00e9 Handheld - 00eb Net MD - 0101 Net MD - 0103 IC Recorder (ST) - 0105 Micro Vault Hub - 0107 VCC-U01 Visual Communication Camera - 0110 Digital Imaging Video - 0113 Net MD - 0116 IC Recorder (P) - 0144 Clie PEG-TH55 PDA - 0147 Visual Communication Camera (PCGA-UVC11) - 014c Aiwa AM-NX9 Net MD Music Recorder MDLP - 014d Memory Stick Reader/Writer - 0154 Eyetoy Audio Device - 015f IC Recorder (BM) - 0169 Clie PEG-TJ35 PDA Serial - 016a Clie PEG-TJ35 PDA Mass Storage - 016b Mobile HDD - 016d IC Recorder (SX) - 016e DPP-EX50 Digital Photo Printer - 0171 Fingerprint Sensor 3500 - 017e Net MD - 017f Hi-MD WALKMAN - 0180 Net MD - 0181 Hi-MD WALKMAN - 0182 Net MD - 0183 Hi-MD WALKMAN - 0184 Net MD - 0185 Hi-MD WALKMAN - 0186 Net MD - 0187 Hi-MD WALKMAN - 0188 Net MD - 018a Net MD - 018b Hi-MD SOUND GATE - 019e Micro Vault 1.0G Mass Storage - 01ad ATRAC HDD PA - 01bd MRW62E Multi-Card Reader/Writer - 01c3 NW-E55 Network Walkman - 01c6 MEMORY P-AUDIO - 01c7 Printing Support - 01d0 DVD+RW External Drive DRU-700A - 01d5 IC RECORDER - 01de VRD-VC10 [Video Capture] - 01e9 Net MD - 01ea Hi-MD WALKMAN - 01ee IC RECORDER - 01fa Sony IC Recorder (P) - 01fb NW-E405 Network Walkman - 020f Device - 0210 ATRAC HDD PA - 0219 Net MD - 021a Hi-MD WALKMAN - 021b Net MD - 021c Hi-MD WALKMAN - 021d Net MD - 0227 Printing Support - 022c Net MD - 022d Hi-MD AUDIO - 0233 ATRAC HDD PA - 0236 Mobile HDD - 023b DVD+RW External Drive DRU-800UL - 023c Net MD - 023d Hi-MD WALKMAN - 0243 MicroVault Flash Drive - 0257 IFU-WLM2 USB Wireless LAN Module (Wireless Mode) - 0258 IFU-WLM2 USB Wireless LAN Module (Memory Mode) - 0259 IC RECORDER - 0267 Tachikoma Device - 0268 Batoh Device - 0269 HDD WALKMAN - 026a HDD WALKMAN - 0271 IC Recorder (P) - 027c NETWORK WALKMAN - 027e SONY Communicator - 027f IC RECORDER - 0286 Net MD - 0287 Hi-MD WALKMAN - 029b PRS-500 eBook reader - 02ae PlayStation 3 Memory Card Adaptor - 02af Handycam DCR-DVD306E - 02c4 Device - 02d2 PSP -054d Try Corp. -054e Proside Corp. -054f WYSE Technology Taiwan -0550 Fuji Xerox Co., Ltd - 0002 InkJet Color Printer - 0004 InkJet Color Printer - 0005 InkJet Color Printer -0551 CompuTrend Systems, Inc. -0552 Philips Monitors -0553 STMicroelectronics Imaging Division (VLSI Vision) - 0001 TerraCAM - 0002 CPiA WebCam - 0100 STV0672 Camera - 0140 Video Camera - 0150 CDE CAM 100 - 0151 Digital Blue QX5 Microscope - 0200 Dual-mode Camera0 - 0201 Dual-mode Camera1 - 0202 Aiptek PenCam 1 - 0674 Multi-mode Camera - 0679 NMS Video Camera (Webcam) - 1002 Che-ez! Splash -0554 Dictaphone Corp. -0555 ANAM S&T Co., Ltd -0556 Asahi Kasei Microsystems Co., Ltd - 0001 AK5370 I/F A/D Converter -0557 ATEN International Co., Ltd - 2001 UC-1284 Printer Port - 2002 10Mbps Ethernet [klsi] - 2004 UC-100KM PS/2 Mouse and Keyboard adapter - 2006 UC-1284B Printer Port - 2007 UC-110T 100Mbps Ethernet [pegasus] - 2008 UC-232A Serial Port [pl2303] - 2009 UC-210T Ethernet - 2202 CS124U Miniview II KVM Switch - 2600 IDE Bridge - 4000 DSB-650 10Mbps Ethernet [klsi] - 7000 Hub -0558 Truevision, Inc. -0559 Cadence Design Systems, Inc. -055a Kenwood USA -055b KnowledgeTek, Inc. -055c Proton Electronic Ind. -055d Samsung Electro-Mechanics Co. - 0001 Keyboard - 0bb1 Bluetooth Device - 1030 Optical Wheel Mouse (OMS3CB/OMGB30) - 1031 Optical Wheel Mouse (OMA3CB/OMGI30) - 1040 Mouse HID Device - 1050 E-Mail Optical Wheel Mouse (OMS3CE) - 1080 Optical Wheel Mouse (OMS3CH) - 2020 Floppy Disk Drive - 6780 Keyboard V1 - 6781 Keyboard Mouse - 8001 E.M. Hub - 9000 AnyCam [pwc] - 9001 MPC-C30 AnyCam Premium for Notebooks [pwc] - a010 WLAN Adapter(SWL-2300) - a011 Boot Device - a012 WLAN Adapter(SWL-2300) - a013 WLAN Adapter(SWL-2350) - a230 Boot Device - b000 11Mbps WLAN Mini Adapter - b230 Netopia 802.11b WLAN Adapter - b231 LG Wireless LAN 11b Adapter -055e CTX Opto-Electronics Corp. -055f Mustek Systems, Inc. - 0001 ScanExpress 1200 CU - 0002 ScanExpress 600 CU - 0003 ScanExpress 1200 USB - 0006 ScanExpress 1200 UB - 0007 ScanExpress 1200 USB Plus - 0008 ScanExpress 1200 CU Plus - 0010 BearPaw 1200F - 0210 ScanExpress A3 USB - 0218 BearPaw 2400 TA - 0219 BearPaw 2400 TA Plus - 021a BearPaw 2448 TA Plus - 021c BearPaw 1200 CU Plus - 021d BearPaw 2400 CU Plus - 021e BearPaw 1200 TA/CS - 021f SNAPSCAN e22 - 0400 BearPaw 2400 TA Pro - 0401 P 3600 A3 Pro - 0408 BearPaw 2448 CU Pro - 0873 ScanExpress 600 USB - 1000 BearPaw 4800 TA Pro - a350 gSmart 350 - a800 MDC 800 Camera - b500 MDC 3000 Camera - c005 PC CAM 300A - c200 gSmart 300 - c220 gSmart mini - c360 Mustek DV 4000 - c420 gSmart mini 2 - c440 Mustek DV 3000 - c520 gSmart mini 3 - c530 Mustek Gsmart LCD 2 - c631 MDC-4000 - c650 Mustek MDC5500Z - d001 WCam 300 - d003 PC CAM 300A - d004 PC CAM 300A -0560 Interface Corp. -0561 Oasis Design, Inc. -0562 Telex Communications, Inc. - 0001 Enhanced Microphone - 0002 Telex Microphone -0563 Immersion Corp. -0564 Chinon Industries, Inc. -0565 Peracom Networks, Inc. - 0001 Serial Port [etek] - 0002 Enet Ethernet [klsi] - 0003 @Home Networks Ethernet [klsi] - 0005 Enet2 Ethernet [klsi] - 0041 Peracom Remote NDIS Ethernet Adapter -0566 Monterey International Corp. - 0110 ViewMate Desktop Mouse CC2201 - 1001 ViewMate Desktop Mouse CC2201 - 1002 ViewMate Desktop Mouse CC2201 - 1003 ViewMate Desktop Mouse CC2201 - 1004 ViewMate Desktop Mouse CC2201 - 1005 ViewMate Desktop Mouse CC2201 - 1006 ViewMate Desktop Mouse CC2201 - 1007 ViewMate Desktop Mouse CC2201 - 2800 MIC K/B - 2801 MIC K/B Mouse - 2802 Kbd Hub -0567 Xyratex International, Ltd -0568 Quartz Ingenierie -0569 SegaSoft -056a Wacom Co., Ltd - 0000 PenPartner - 0001 PenPartner 4x5 - 0002 PenPartner 6x8 - 0010 Graphire - 0011 Graphire 2 - 0013 Graphire 3 4x5 - 0020 Intuos 4x5 - 0021 Intuos 6x8 - 0022 Intuos 9x12 - 0023 Intuos 12x12 - 0024 Intuos 12x18 - 0030 PL400 - 0031 PL500 - 0032 PL600 - 0034 PL550 - 0035 PL800 - 0041 Intuos2 4x5 - 0042 Intuos 2 6x8 - 0043 Intuos 2 - 0044 Intuos2 12x12 - 0045 Intuos2 12x18 - 0400 PenPartner 4x5 - 4850 PenPartner 6x8 -056b Decicon, Inc. -056c eTEK Labs - 0006 KwikLink Host-Host Connector - 8007 Kwik232 Serial Port - 8100 KwikLink Host-Host Connector - 8101 KwikLink USB-USB Bridge -056d EIZO Corp. - 0000 Hub - 0001 Monitor - 0002 HID Monitor Controls - 0003 Device Bay Controller -056e Elecom Co., Ltd - 0002 29UO Mouse - 200c LD-USB/TX - 4002 Laneed 100Mbps Ethernet LD-USB/TX [pegasus] - 4005 LD-USBL/TX - 400b LD-USB/TX - 4010 LD-USB20 - 5003 UC-SGT - 5004 UC-SGT - abc1 LD-USB/TX -056f Korea Data Systems Co., Ltd - cd00 CDM-751 CD organizer -0570 Epson America -0571 Interex, Inc. - 0002 echoFX InterView Lite -0572 Conexant Systems (Rockwell), Inc. - 0001 Ezcam II WebCam - 0002 Ezcam II WebCam - 0040 Wondereye CP-115 WebCam - 0041 WebCam Notebook - 0042 WebCam Notebook - 1232 V.90 modem - 1234 Typhoon Redfun Modem V90 56k - 1252 HCF V90 Data Fax Voice Modem - 1253 Zoom V.92 Faxmodem - 1300 SoftK56 Data Fax Voice CARP - 1301 Modem Enumerator - 2000 SoftGate 802.11 Adapter - 2002 SoftGate 802.11 Adapter - 8390 WinFast PalmTop/Novo TV Video - 8392 WinFast PalmTop/Novo TV Video - cafe AccessRunner ADSL Modem - cb00 E-Tech ADSL Modem v2 - cb01 GeekADSL Promax Q31 ADSL Modem - cb06 StarModem Network Interface -0573 Zoran Co. Personal Media Division (Nogatech) - 0003 USBGear USBG-V1 - 0400 D-Link V100 - 0600 Dazzle USBVision (1006) - 1300 leadtek USBVision (1006) - 2000 X10 va10a Wireless Camera - 2001 Dazzle EmMe (2001) - 2101 Zoran Co. PMD (Nogatech) AV-grabber Manhattan - 2d00 Osprey 50 - 2d01 Hauppauge USB-Live Model 600 - 3000 Dazzle MicroCam (NTSC) - 3001 Dazzle MicroCam (PAL) - 4000 Nogatech TV! (NTSC) - 4001 Nogatech TV! (PAL) - 4002 Nogatech TV! (PAL-I-) - 4003 Nogatech TV! (MF-) - 4008 Nogatech TV! (NTSC) (T) - 4009 Nogatech TV! (PAL) (T) - 4010 Nogatech TV! (NTSC) (A) - 4100 USB-TV FM (NTSC) - 4110 PNY USB-TV (NTSC) FM - 4400 Nogatech TV! Pro (NTSC) - 4401 Nogatech TV! Pro (PAL) - 4450 PixelView PlayTv-USB PRO (PAL) FM - 4451 Nogatech TV! Pro (PAL+) - 4452 Nogatech TV! Pro (PAL-I+) - 4500 Nogatech TV! Pro (NTSC) - 4501 Nogatech TV! Pro (PAL) - 4550 ZTV ZT-721 2.4GHz USB A/V Receiver - 4551 Dazzle TV! Pro Audio (P+) - 4d00 Hauppauge WinTV-USB USA - 4d01 Hauppauge WinTV-USB - 4d02 Hauppauge WinTV-USB UK - 4d03 Hauppauge WinTV-USB France - 4d04 Hauppauge WinTV (PAL D/K) - 4d10 Hauppauge WinTV-USB with FM USA radio - 4d11 Hauppauge WinTV-USB (PAL) with FM radio - 4d12 Hauppauge WinTV-USB UK with FM Radio - 4d14 Hauppauge WinTV (PAL D/K FM) - 4d20 Hauppauge WinTV-USB II (PAL) with FM radio - 4d21 Hauppauge WinTV-USB II (PAL) - 4d22 Hauppauge WinTV-USB II (PAL) Model 566 - 4d23 Hauppauge WinTV-USB France 4D23 - 4d24 Hauppauge WinTV Pro (PAL D/K) - 4d25 Hauppauge WinTV-USB Model 40209 rev B234 - 4d26 Hauppauge WinTV-USB Model 40209 rev B243 - 4d27 Hauppauge WinTV-USB Model 40204 Rev B281 - 4d28 Hauppauge WinTV-USB Model 40204 rev B283 - 4d29 Hauppauge WinTV-USB Model 40205 rev B298 - 4d2a Hauppague WinTV-USB Model 602 Rev B285 - 4d2b Hauppague WinTV-USB Model 602 Rev B282 - 4d2c Hauppauge WinTV Pro (PAL/SECAM) - 4d30 Hauppauge WinTV-USB FM Model 40211 Rev B123 - 4d31 Hauppauge WinTV-USB III (PAL) with FM radio Model 568 - 4d32 Hauppauge WinTV-USB III (PAL) FM Model 573 - 4d34 Hauppauge WinTV Pro (PAL D/K FM) - 4d35 Hauppauge WinTV-USB III (PAL) FM Model 597 - 4d36 Hauppauge WinTV Pro (PAL B/G FM) - 4d37 Hauppauge WinTV-USB Model 40219 rev E189 - 4d38 Hauppauge WinTV Pro (NTSC FM) -0574 City University of Hong Kong -0575 Philips Creative Display Solutions -0576 BAFO/Quality Computer Accessories -0577 ELSA -0578 Intrinsix Corp. -0579 GVC Corp. -057a Samsung Electronics America -057b Y-E Data, Inc. - 0000 FlashBuster-U Floppy - 0001 Tri-Media Reader Floppy - 0006 Tri-Media Reader Card Reader - 0010 Memory Stick Reader Writer - 0020 HEXA Media Drive 6-in-1 Card Reader Writer - 0030 Memory Card Viewer (TV) -057c AVM GmbH - 0b00 ISDN-Controller B1 Family - 0c00 ISDN-Controller FRITZ!Card - 1000 ISDN-Controller FRITZ!Card v2.0 - 1900 ISDN-Controller FRITZ!Card v2.1 - 2000 ISDN-Connector FRITZ!X - 2200 BlueFRITZ! - 2300 Teledat X130 DSL - 2800 ISDN-Connector TA - 3200 Teledat X130 DSL - 3500 FRITZ!Card DSL SL - 3701 FRITZ!Box SL - 3702 FRITZ!Box - 3800 BlueFRITZ! Bluetooth Stick - 3a00 FRITZ!Box Fon - 3c00 FRITZ!Box WLAN - 3d00 Fritz!Box - 3e01 FRITZ!Box (Annex A) - 4001 FRITZ!Box Fon (Annex A) - 4101 FRITZ!Box WLAN (Annex A) - 4201 FRITZ!Box Fon WLAN (Annex A) - 4601 Eumex 5520PC (WinXP/2000) - 4602 Eumex 400 (WinXP/2000) - 4701 AVM FRITZ!Box Fon ata - 5401 Eumex 300 IP - 5601 AVM FRITZ!WLAN Stick - 6201 WLAN USB v1.1 - 62ff WLAN USB v1.1 [no firmware] -057d Shark Multimedia, Inc. -057e Nintendo Co., Ltd - 0306 Wii Remote Controller RVL-003 -057f QuickShot, Ltd - 6238 USB StrikePad -0580 Denron, Inc. -0581 Racal Data Group -0582 Roland Corp. - 0000 UA-100 - 0002 UM-4/MPU-64 MIDI Interface - 0003 SoundCanvas SC-8850 - 0004 U-8 - 0005 Edirol UM-2 MIDI Adapter - 0007 SoundCanvas SC-8820 - 0008 PC-300 - 0009 Edirol UM-1SX MIDI Adapter - 000b SK-500 - 000c SC-D70 - 0010 EDIROL UA-5 - 0011 Edirol UA-5 Sound Capture - 0012 XV-5050 - 0013 XV-5050 - 0014 EDIROL UM-880 MIDI I/F (native) - 0015 EDIROL UM-880 MIDI I/F (generic) - 0016 EDIROL SD-90 - 0017 EDIROL SD-90 - 001b MMP-2 - 001c MMP-2 - 001d V-SYNTH - 001e V-SYNTH - 0023 EDIROL UM-550 - 0024 EDIROL UM-550 - 0025 EDIROL UA-20 - 0026 EDIROL UA-20 - 0027 EDIROL SD-20 - 0028 EDIROL SD-20 - 0029 EDIROL SD-80 - 002a EDIROL SD-80 - 002b EDIROL UA-700 - 002c EDIROL UA-700 - 002d XV-2020 Synthesizer - 002e XV-2020 Synthesizer - 002f VariOS - 0030 VariOS - 0033 EDIROL PCR - 0034 EDIROL PCR - 0037 Digital Piano - 0038 Digital Piano - 003b BOSS GS-10 - 003c BOSS GS-10 - 0040 GI-20 - 0041 GI-20 - 0042 RS-70 - 0043 RS-70 - 0044 EDIROL UA-1000 - 0047 EDIROL UR-80 WAVE - 0048 EDIROL UR-80 MIDI - 0049 EDIROL UR-80 WAVE - 004a EDIROL UR-80 MIDI - 004b EDIROL M-100FX - 004c EDIROL PCR-A WAVE - 004d EDIROL PCR-A MIDI - 004e EDIROL PCR-A WAVE - 004f EDIROL PCR-A MIDI - 0050 EDIROL UA-3FX - 0052 EDIROL UM-1SX - 0054 Digital Piano - 0060 EXR Series - 0064 EDIROL PCR-1 WAVE - 0065 EDIROL PCR-1 MIDI - 0066 EDIROL PCR-1 WAVE - 0067 EDIROL PCR-1 MIDI - 006a SP-606 - 006b SP-606 - 006d FANTOM-X - 006e FANTOM-X - 0073 EDIROL UA-25 - 0074 EDIROL UA-25 - 0075 BOSS DR-880 - 0076 BOSS DR-880 - 007a RD - 007b RD - 007d EDIROL UA-101 - 0080 G-70 - 0081 G-70 - 008b EDIROL PC-50 - 008c EDIROL PC-50 - 008d EDIROL UA-101 USB1 - 0092 EDIROL PC-80 WAVE - 0093 EDIROL PC-80 MIDI - 0096 EDIROL UA-1EX - 009a EDIROL UM-3EX - 009d EDIROL UM-1 - 00a2 Digital Piano - 00a3 EDIROL UA-4FX - 00a6 Juno-G - 00ad SH-201 - 00c4 EDIROL M-16DX -0583 Padix Co., Ltd (Rockfire) - 2030 RM-203 USB Nest [mode 1] - 2031 RM-203 USB Nest [mode 2] - 2032 RM-203 USB Nest [mode 3] - 2033 RM-203 USB Nest [mode 4] - 2050 PX-205 PSX Bridge - 3050 QF-305u Gamepad - 688f QF-688uv Windstorm Pro Joystick - 7070 QF-707u Bazooka Joystick -0584 RATOC System, Inc. - 0008 Fujifilm MemoryCard ReaderWriter - b000 REX-USB60 -0585 FlashPoint Technology, Inc. - 0001 Digital Camera - 0002 Digital Camera - 0003 Digital Camera - 0004 Digital Camera - 0005 Digital Camera - 0006 Digital Camera - 0007 Digital Camera - 0008 Digital Camera - 0009 Digital Camera - 000a Digital Camera - 000b Digital Camera - 000c Digital Camera - 000d Digital Camera - 000e Digital Camera - 000f Digital Camera -0586 ZyXEL Communications Corp. - 1000 Omni NET Modem / ISDN TA - 1500 Omni 56K Plus - 2011 Scorpion-980N keyboard - 3304 LAN Modem - 330a ADSL Modem Interface - 330e USB Broadband ADSL Modem Rev 1.10 - 3400 ZyAIR B-220 IEEE 802.11b Adapter - 3401 ZyAIR G-220 - 3402 (ZD1211)IEEE 802.11b+g Adapter - 3407 G-200 v2 - 3409 AG-225H - 340a M-202 - 340f G-220 v2 - 3410 Wi-Fi Wireless LAN Adapter - 3412 Wi-Fi Wireless LAN Adapter - 3413 AG-225H v2 802.11a/g Wi-Fi Finder & Adapter - 3415 G-210H 802.11g Wireless Adapter -0587 America Kotobuki Electronics Industries, Inc. -0588 Sapien Design -0589 Victron -058a Nohau Corp. -058b Infineon Technologies -058c In Focus Systems - 0007 Flash - 0008 LP130 - 000a LP530 - 0010 Projector - 0011 Projector - 0012 Projector - 0013 Projector - 0014 Projector - 0015 Projector - 0016 Projector - 0017 Projector - 0018 Projector - 0019 Projector - 001a Projector - 001b Projector - 001c Projector - 001d Projector - 001e Projector - 001f Projector -058d Micrel Semiconductor -058e Tripath Technology, Inc. -058f Alcor Micro Corp. - 2412 SCard R/W CSR-145 - 2802 Monterey Keyboard - 5492 Hub - 6232 Hi-Speed 16-in-1 Flash Card Reader/Writer - 6360 Multimedia Card Reader - 6361 Multimedia Card Reader - 6362 Hi-Speed 21-in-1 Flash Card Reader/Writer (Internal/External) - 6377 Multimedia Card Reader - 6386 Memory Card - 6387 Transcend JetFlash Flash Drive - 6390 USB 2.0-IDE bridge - 9213 MacAlly Kbd Hub - 9215 AU9814 Hub - 9254 Hub - 9310 Mass Storage (UID4/5A & UID7A) - 9320 Micro Storage Driver for Win98 - 9321 Micro Storage Driver for Win98 - 9330 SD Reader - 9331 Micro Storage Driver for Win98 - 9340 Delkin eFilm Reader-32 - 9350 Delkin eFilm Reader-32 - 9360 8-in-1 Media Card Reader - 9361 Multimedia Card Reader - 9368 Multimedia Card Reader - 9380 Flash drive - 9382 Acer/Sweex Flash drive - 9410 Keyboard - 9472 Keyboard Hub - 9510 ChunghwaTL USB02 Smartcard Reader - 9520 EMV Certified Smart Card Reader - 9720 USB-Serial Adapter -0590 Omron Corp. - 0004 Cable Modem - 000b MR56SVS - 0028 HJ-720IT Pedometer -0591 Questra Consulting -0592 Powerware Corp. - 0002 UPS (X-Slot) -0593 Incite -0594 Princeton Graphic Systems -0595 Zoran Microelectronics, Ltd - 1001 Digitrex DSC-1300/DSC-2100 (mass storage mode) - 4343 Digital Camera EX-20 DSC -0596 MicroTouch Systems, Inc. - 0001 Touchscreen - 0002 Touch Screen Controller -0597 Trisignal Communications -0598 Niigata Canotec Co., Inc. -0599 Brilliance Semiconductor, Inc. -059a Spectrum Signal Processing, Inc. -059b Iomega Corp. - 0001 Zip 100 (Type 1) - 000b Zip 100 (Type 2) - 0021 Win98 Disk Controller - 0030 Zip 250 (Ver 1) - 0031 Zip 100 (Type 3) - 0032 Zip 250 (Ver 2) - 0034 Zip 100 Driver - 0037 Zip 750 MB - 0040 SCSI Bridge - 0042 Rev 70 GB - 0050 Zip CD 650 Writer - 0053 CDRW55292EXT CD-RW External Drive - 0057 Mass Storage Device - 005d Mass Storage Device - 005f Mass Storage Device - 0060 PCMCIA PocketZip Dock - 0061 Varo PocketZip 40 MP3 Player - 006d HipZip MP3 Player - 007c Ultra Max USB/1394 - 00db FotoShow Zip 250 Driver - 0150 Mass Storage Device - 015d Super DVD Writer - 0173 Hi-Speed USB-to-IDE Bridge Controller - 0174 Hi-Speed USB-to-IDE Bridge Controller - 0176 Hi-Speed USB-to-IDE Bridge Controller - 0177 Hi-Speed USB-to-IDE Bridge Controller - 0178 Hi-Speed USB-to-IDE Bridge Controller - 0179 Hi-Speed USB-to-IDE Bridge Controller - 017a HDD - 017b HDD/1394A - 017c HDD/1394B - 0251 Optical - 0252 Optical - 1052 DVD+RW External Drive -059c A-Trend Technology Co., Ltd -059d Advanced Input Devices -059e Intelligent Instrumentation -059f LaCie, Ltd - 0201 StudioDrive USB2 - 0202 StudioDrive USB2 - 0203 StudioDrive USB2 - 0211 PocketDrive - 0212 PocketDrive - 0213 PocketDrive USB2 - 0323 LaCie d2 Drive USB2 - 0641 Mobile Hard Drive - 1010 Desktop Hard Drive - a601 HardDrive - a602 CD R/W -05a0 Vetronix Corp. -05a1 USC Corp. -05a2 Fuji Film Microdevices Co., Ltd -05a3 ARC International -05a4 Ortek Technology, Inc. - 9720 Keyboard Mouse - 9722 Keyboard - 9731 MCK-600W/MCK-800USB Keyboard -05a5 Sampo Technology Corp. -05a6 Cisco Systems, Inc. - 0001 CVA124 Cable Voice Adapter (WDM) - 0002 CVA122 Cable Voice Adapter (WDM) - 0003 CVA124E Cable Voice Adapter (WDM) - 0004 CVA122E Cable Voice Adapter (WDM) -05a7 Bose Corp. -05a8 Spacetec IMC Corp. -05a9 OmniVision Technologies, Inc. - 0511 OV511 WebCam - 0518 OV518 WebCam - 0519 OV519 Microphone - 1550 VEHO Filmscanner - 2800 SuperCAM - 4519 Webcam Classic - 8519 OV519 WebCam - a511 OV511+ WebCam - a518 D-Link DSB-C310 WebCam -05aa Utilux South China, Ltd -05ab In-System Design - 0002 Parallel Port - 0030 Storage Adapter V2 (TPP) - 0031 ATA Bridge - 0060 USB 2.0 ATA Bridge - 0061 Storage Adapter V3 (TPP-I) - 0101 Storage Adapter (TPP) - 0130 Compact Flash and Microdrive Reader (TPP) - 0200 USS725 ATA Bridge - 0201 Storage Adapter (TPP) - 0202 ATA Bridge - 0300 Portable Hard Drive (TPP) - 0301 Portable Hard Drive V2 - 0350 Portable Hard Drive (TPP) - 0351 Portable Hard Drive V2 - 081a ATA Bridge - 0cda ATA Bridge for CD-R/RW - 1001 BAYI Printer Class Support - 5700 Storage Adapter V2 (TPP) - 5701 USB Storage Adapter V2 - 5901 Smart Board (TPP) - 5a01 ATI Storage Adapter (TPP) - 5d01 DataBook Adapter (TPP) -05ac Apple, Inc. - 0201 USB Keyboard [Alps or Logitech, M2452] - 0202 Keyboard [ALPS] - 0205 Extended Keyboard [Mitsumi] - 0206 Extended Keyboard [Mitsumi] - 020b Pro Keyboard [Mitsumi, A1048/US layout] - 020c Extended Keyboard [Mitsumi] - 020d Pro Keyboard [Mitsumi, A1048/JIS layout] - 020e Internal Keyboard/Trackpad - 020f Internal Keyboard/Trackpad - 021b Internal Keyboard/Trackpad - 0220 Aluminum Keyboard - 0221 Keyboard (Aluminium) (ISO) - 0229 Internal Keyboard/Trackpad (MacBook Pro) (ANSI) - 022a Internal Keyboard/Trackpad (MacBook Pro) (ISO) - 022b Internal Keyboard/Trackpad (MacBook Pro) (JIS) - 0301 USB Mouse [Mitsumi, M4848] - 0302 Optical Mouse [Fujitsu] - 0304 Optical USB Mouse [Mitsumi] - 0306 Optical USB Mouse [Fujitsu] - 1000 Bluetooth HCI MacBookPro (HID mode) - 1001 Keyboard Hub [ALPS] - 1002 Extended Keyboard Hub [Mitsumi] - 1003 Hub in Pro Keyboard [Mitsumi, A1048] - 1006 Hub in Aluminum Keyboard - 1101 Speakers - 1201 3G iPod - 1202 iPod 2G - 1203 iPod 4.Gen Grayscale 40G - 1204 iPod [Photo] - 1205 iPod Mini 1.Gen/2.Gen - 1206 iPod '06' - 1207 iPod '07' - 1208 iPod '08' - 1209 iPod Video - 120a iPod Nano - 1260 iPod Nano 2.Gen - 1261 iPod Classic - 1300 iPod Shuffle - 1301 iPod Shuffle 2.Gen - 8202 HCF V.90 Data/Fax Modem - 8203 Bluetooth HCI - 8204 Bluetooth HCI [Bluetooth 2.0 + EDR, build-in] - 8205 Bluetooth HCI MacBookPro - 8206 Bluetooth USB Host Controller - 8240 IR Receiver [build-in] - 8300 Built-in iSight (no firmware loaded) - 8501 Built-in iSight [Micron] - 912f Hub in 30" Cinema Display - 9221 30" Cinema Display - ffff Bluetooth in DFU mode - Driver -05ad Y.C. Cable U.S.A., Inc. -05ae Synopsys, Inc. -05af Jing-Mold Enterprise Co., Ltd - 0821 IDE to - 9167 KB 9151B - 678 - 9267 KB 9251B - 678 Mouse -05b0 Fountain Technologies, Inc. -05b1 First International Computer, Inc. - 1389 Bluetooth Wireless Adapter -05b4 LG Semicon Co., Ltd - 4857 M-Any DAH-210 - 6001 Digisette DUO-MP3 AR-100 -05b5 Dialogic Corp. -05b6 Proxima Corp. -05b7 Medianix Semiconductor, Inc. -05b8 Agiler, Inc. - 3002 Scroll Mouse -05b9 Philips Research Laboratories -05ba DigitalPersona, Inc. -05bb Grey Cell Systems -05bc 3G Green Green Globe Co., Ltd - 0004 Trackball -05bd RAFI GmbH & Co. KG -05be Tyco Electronics (Raychem) -05bf S & S Research -05c0 Keil Software -05c1 Kawasaki Microelectronics, Inc. -05c2 Media Phonics (Suisse) S.A. -05c5 Digi International, Inc. - 0002 AccelePort USB 2 - 0004 AccelePort USB 4 - 0008 AccelePort USB 8 -05c6 Qualcomm, Inc. - 3100 CDMA Wireless Modem/Phone - 3196 CDMA Wireless Modem - 3197 CDMA Wireless Modem/Phone -05c7 Qtronix Corp. - 0113 PC Line Mouse - 1001 Lynx Mouse - 2001 Keyboard - 2011 SCorpius Keyboard - 6001 Ten-Keypad -05c8 Cheng Uei Precision Industry Co., Ltd (Foxlink) -05c9 Semtech Corp. -05ca Ricoh Co., Ltd - 0101 RDC-5300 Camera - 0325 Caplio GX (ptp) - 032d Caplio GX 8 (ptp) - 032f Caplio R3 (ptp) - 03a1 IS200e - 0403 Printing Support - 0405 Type 101 - 0406 Type 102 - 1830 Visual Communication Camera VGP-VCC2 - 1835 Visual Communication Camera VGP-VCC5 - 1870 Webcam 1000 - 2201 RDC-7 Camera - 2202 Caplio RR30 - 2203 Caplio 300G - 2204 Caplio G3 - 2205 Caplio RR30 / Medion MD 6126 Camera - 2206 Konica DG-3Z - 2207 Caplio Pro G3 - 2208 Caplio G4 - 2209 Caplio 400G wide - 220a KONICA MINOLTA DG-4Wide - 220b Caplio RX - 220c Caplio GX - 220d Caplio R1/RZ1 - 220e Sea & Sea 5000G - 220f Rollei dr5 / Rollei dr5 (PTP mode) - 2211 Caplio R1S - 2212 Caplio R1v Camera - 2213 Caplio R2 - 2214 Caplio GX 8 - 2215 DSC 725 - 2216 Caplio R3 - 2222 RDC-i500 -05cb PowerVision Technologies, Inc. - 1483 PV8630 interface (scanners, webcams) -05cc ELSA AG - 2100 MicroLink ISDN Office - 2219 MicroLink ISDN - 2265 MicroLink 56k - 2267 MicroLink 56k (V.250) - 2280 MicroLink 56k Fun - 3000 Micolink USB2Ethernet [pegasus] - 3100 AirLancer USB-11 - 3363 MicroLink ADSL Fun -05cd Silicom, Ltd -05ce sci-worx GmbH -05cf Sung Forn Co., Ltd -05d0 GE Medical Systems Lunar -05d1 Brainboxes, Ltd - 0003 Bluetooth Adapter BL-554 -05d2 Wave Systems Corp. -05d3 Tohoku Ricoh Co., Ltd -05d5 Super Gate Technology Co., Ltd -05d6 Philips Semiconductors, CICT -05d7 Thomas & Betts Corp. - 0099 10Mbps Ethernet [klsi] -05d8 Ultima Electronics Corp. - 4001 Artec Ultima 2000 - 4002 Artec Ultima 2000 (GT6801 based)/Lifetec LT9385/ScanMagic 1200 UB Plus Scanner - 4003 Artec E+ 48U - 4004 Artec E+ Pro - 4005 MEM48U - 4006 TRUST EASY WEBSCAN 19200 - 4007 TRUST 240H EASY WEBSCAN GOLD - 4008 Trust Easy Webscan 19200 - 4009 Umax Astraslim - 4013 IT Scan 1200 - 8105 Artec T1 USB TVBOX (cold) - 8106 Artec T1 USB TVBOX (warm) - 8107 Artec T1 USB TVBOX with AN2235 (cold) - 8108 Artec T1 USB TVBOX with AN2235 (warm) - 8109 Artec T1 USB2.0 TVBOX (cold -05d9 Axiohm Transaction Solutions - a225 A225 Printer - a758 A758 Printer - a794 A794 Printer -05da Microtek International, Inc. - 0091 ScanMaker X6u - 0093 ScanMaker V6USL - 0094 Phantom 336CX/C3 - 0099 ScanMaker X6/X6U - 009a Phantom C6 - 00a0 Phantom 336CX/C3 (#2) - 00a3 ScanMaker V6USL - 00ac ScanMaker V6UL - 00b6 ScanMaker V6UPL - 00ef ScanMaker V6UPL - 1006 Jenoptik JD350 entrance - 1011 NHJ Che-ez! Kiss Digital Camera - 1018 Digital Dream Enigma 1.3 - 1020 Digital Dream l'espion xtra - 1025 Take-it Still Camera Device - 1026 Take-it - 1043 Take-It 1300 DSC Bulk Driver - 1045 Take-it D1 - 1047 Take-it Camera Composite Device - 1048 Take-it Q3 - 1049 3M Still Camera Device - 1051 Camcorder Series - 1052 Mass Storage Device - 1053 Take-it DV Composite Device - 1054 Mass Storage Device - 1055 Digital Camera Series(536) - 1056 Mass Storage Device - 1057 Take-it DSC Camera Device(536) - 1058 Mass Storage Device - 1059 Camcorder DSC Series - 1060 Microtek Take-it MV500 - 2007 ArtixScan DI 1210 - 200c 1394_USB2 Scanner - 200e ArtixScan DI 810 - 2017 UF ICE Scanner - 201c 4800 Scanner - 201d ArtixScan DI 1610 - 201f 4800 Scanner-ICE - 202e ArtixScan DI 2020 - 208b ScanMaker 6800 - 208f ArtixScan DI 2010 - 209e ScanMaker 4700LP - 20a7 ScanMaker 5600 - 20b0 ScanMaker X12USL - 20b1 ScanMaker 8700 - 20b4 ScanMaker 4700 - 20bd ScanMaker 5700 - 20c9 ScanMaker 6700 - 20d2 Microtek ArtixScan 1800f - 20d6 PS4000 - 20de ScanMaker 9800XL - 20e0 ScanMaker 9700XL - 20ed ScanMaker 4700 - 20ee Micortek ScanMaker X12USL - 3008 Scanner - 300a 4800 ICE Scanner - 300b 4800 Scanner - 300f MiniScan C5 - 3020 4800dpi Scanner - 3021 1200dpi Scanner - 3022 Scanner 4800dpi - 3023 USB1200II Scanner - 30c1 USB600 Scanner - 30ce ScanMaker 3800 - 30cf ScanMaker 4800 - 30d4 USB1200 Scanner - 30d8 Scanner - 30d9 USB2400 Scanner - 30e4 ScanMaker 4100 - 30e5 USB3200 Scanner - 30e6 ScanMaker i320 - 40b3 ScanMaker 3600 - 40b8 ScanMaker 3700 - 40c7 ScanMaker 4600 - 40ca ScanMaker 3600 - 40cb ScanMaker 3700 - 40dd ScanMaker 3750i - 40ff ScanMaker 3600 - 5003 Goya - 5013 3200 Scanner - 80a3 ScanMaker V6USL (#2) - 80ac ScanMaker V6UL/SpicyU -05db Sun Corp. (Suntac?) - 0003 SUNTAC U-Cable type D2 - 0005 SUNTAC U-Cable type P1 - 0009 SUNTAC Slipper U - 000a SUNTAC Ir-Trinity - 000b SUNTAC U-Cable type A3 - 0011 SUNTAC U-Cable type A4 -05dc Lexar Media, Inc. - 0001 jumpSHOT CompactFlash Reader - 0002 JumpShot - 0003 JumpShot - 0080 Jumpdrive Secure 64MB - 0081 RBC Compact Flash Drive - 00a7 JumpDrive Impact - 0100 JumpDrive PRO - 0200 JumpDrive 2.0 Pro - 0300 Jumpdrive Geysr - 0301 JumpDrive Classic - 0302 JD Micro - 0303 JD Micro Pro - 0304 JD Secure II - 0310 JumpDrive - 0311 JumpDrive Classic - 0312 JD Micro - 0313 JD Micro Pro - 0320 JumpDrive - 0321 JD Micro - 0322 JD Micro Pro - 0323 UFC - 0330 JumpDrive Expression - 0340 JumpDrive TAD - 0350 Express Card - 0400 UFDC - 0401 UFDC - 0403 Locked B Device - 0405 Locked C Device - 0407 Locked D Device - 0409 Locked E Device - 040b Locked F Device - 040d Locked G Device - 040f Locked H Device - 0410 JumpDrive - 0411 JumpDrive - 0413 Locked J Device - 0415 Locked K Device - 0417 Locked L Device - 0419 Locked M Device - 041b Locked N Device - 041d Locked O Device - 041f Locked P Device - 0420 JumpDrive - 0421 JumpDrive - 0423 Locked R Device - 0425 Locked S Device - 0427 Locked T Device - 0429 Locked U Device - 042b Locked V Device - 042d Locked W Device - 042f Locked X Device - 0431 Locked Y Device - 0433 Locked Z Device - 4d02 MP3 Player - 4d12 MP3 Player - a300 JumpDrive2 - a400 JumpDrive trade; Pro 40-501 - a410 JumpDrive 128MB/256MB - a411 JumpDrive Traveler - a420 JumpDrive Pro - a421 JumpDrive Pro II - a422 JumpDrive Micro Pro - a430 JumpDrive Secure - a431 JumpDrive Secure II - a432 JumpDrive Classic - a440 JumpDrive Lightning - a450 JumpDrive TouchGuard - a460 JD Mercury - a501 JumpDrive Classic - a510 JumpDrive Sport - a530 JumpDrive Expression - a531 JumpDrive Secure II - a560 JumpDrive FireFly - a701 JumpDrive FireFly - b002 USB CF Reader - b018 Multi-Card Reader -05dd Delta Electronics, Inc. - ff31 AWU-120 - ff32 FriendlyNET AeroLAN AL2011 - ff35 PCW 100 - Wireless 802.11b Adapter - ff91 2Wire PC Port Phoneline 10Mbps Adapter -05df Silicon Vision, Inc. -05e0 Symbol Technologies - 0700 Bar Code Scanner (CS1504) - 0800 Spectrum24 Wireless LAN Adapter - 1200 DS6608 Bar Code Scanner - 1900 SNAPI Imaging Device - 2000 MC3090 Rugged Mobile Computer - 200d MC70 Rugged Mobile Computer -05e1 Syntek Semiconductor Co., Ltd - 0500 DC-112X - 0501 WebCam, Chipset DC-1125 similar to 174f:a311 - Asus F2F, F2J, F3J, F3T, G1, Z53JA - 0890 STK011 Camera - 0892 STK013 Camera - 0895 STK016 Camera - 0896 STK017 Camera -05e2 ElecVision, Inc. -05e3 Genesys Logic, Inc. - 000a Keyboard with PS/2 Port - 000b Mouse - 0100 Nintendo Game Boy Advance SP - 0120 Pacific Image Electronics PrimeFilm 1800u slide/negative scanner - 0131 CF/SM Reader/Writer - 0142 Multiple Slides Scanner-3600 - 0143 Multiple Frames Film Scanner-36series - 0180 Plustek Scanner - 0182 Wize Media 1000 - 0189 ScanJet 4600 series - 018a Xerox 6400 - 0300 GLUSB98PT Parallel Port - 0301 USB2LPT Cable Release2 - 0406 Hub - 0501 GL620USB Host-Host interface - 0502 GL620USB GeneLink USB-USB Bridge - 0504 HID Keyboard Filter - 0604 USB 1.1 Hub - 0605 USB 2.0 Hub [ednet] - 0606 USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub - 0608 USB-2.0 4-Port HUB - 0660 USB 2.0 Hub - 0700 SIIG US2256 CompactFlash Card Reader - 0701 USB 2.0 IDE Adapter - 0702 USB 2.0 IDE Adapter - 0703 Card Reader - 0704 Card Reader - 0705 Card Reader - 0706 Card Reader - 0707 Card Reader - 0708 Card Reader - 0709 Card Reader - 070a Pen Flash - 070b DMHS1B Rev 3 DFU Adapter - 070e X-PRO CR20xA USB 2.0 Internal Card Reader - 070f Pen Flash - 0710 USB 2.0 33-in-1 Card Reader - 0711 Card Reader - 0712 Delkin Mass Storage Device - 0715 USB 2.0 microSD Reader - 0760 USB 2.0 Card Reader/Writer - 0761 Genesys Mass Storage Device - 0780 USBFS DFU Adapter - 07a0 Pen Flash - 0927 Card Reader - 1205 Afilias Optical Mouse H3003 - a700 Pen Flash - f102 VX7012 TV Box - f103 VX7012 TV Box - f104 VX7012 TV Box - fd21 3M TL20 Temperature Logger - fe00 Razer Mouse -05e4 Red Wing Corp. -05e5 Fuji Electric Co., Ltd -05e6 Keithley Instruments -05e8 ICC, Inc. -05e9 Kawasaki LSI - 0008 KL5KUSB101B Ethernet [klsi] - 0009 Sony 10Mbps Ethernet [pegasus] - 000c USB-to-RS-232 - 000d USB-to-RS-232 - 0014 RS-232 J104 - 0040 Ethernet Adapter - 2008 Ethernet Adapter -05eb FFC, Ltd -05ec COM21, Inc. -05ee Cytechinfo Inc. -05ef AVB, Inc. [anko?] - 020a Top Shot Pegasus Joystick - 8884 Mag Turbo Force Wheel - 8888 Top Shot Force Feedback Racing Wheel -05f0 Canopus Co., Ltd - 0101 DA-Port DAC -05f1 Compass Communications -05f2 Dexin Corp., Ltd - 0010 AQ Mouse -05f3 PI Engineering, Inc. - 0007 Kinesis Advantage PRO MPC/USB Keyboard - 0081 Kinesis Integrated Hub - 020b PS2 Adapter - 0232 X-Keys Switch Interface, Programming Mode - 0261 X-Keys Switch Interface, SPLAT Mode - 0264 X-Keys Switch Interface, Composite Mode -05f5 Unixtar Technology, Inc. -05f6 AOC International -05f7 RFC Distribution(s) PTE, Ltd -05f9 PSC Scanning, Inc. -05fa Siemens Telecommunications Systems, Ltd - 3301 Keyboard with PS/2 Mouse Port - 3302 Keyboard - 3303 Keyboard with PS/2 Mouse Port -05fc Harman Multimedia - 7849 Harman/Kardon SoundSticks -05fd InterAct, Inc. - 0239 SV-239 HammerHead Digital - 0251 Raider Pro - 0253 ProPad 8 Digital - 0286 SV-286 Cyclone Digital - 262a 3dfx HammerHead FX - 262f HammerHead Fx - daae Game Shark -05fe Chic Technology Corp. - 0001 Mouse - 0003 Cypress USB Mouse - 0005 Viewmaster 4D Browser Mouse - 0007 Twinhead Mouse - 0009 Inland Pro 4500/5000 Mouse - 0011 Browser Mouse - 1010 Optical Wireless -05ff LeCroy Corp. -0600 Barco Display Systems -0601 Jazz Hipster Corp. - 0003 Internet Security Co., Ltd. SecureKey -0602 Vista Imaging, Inc. - 1001 ViCam WebCam -0603 Novatek Microelectronics Corp. - 00f1 Keyboard - 6871 Mouse -0604 Jean Co., Ltd -0605 Anchor C&C Co., Ltd -0606 Royal Information Electronics Co., Ltd -0607 Bridge Information Co., Ltd -0608 Genrad Ads -0609 SMK Manufacturing, Inc. - 031d eHome Infrared Receiver - 0322 eHome Infrared Receiver - ff12 SMK Bluetooth Device -060a Worthington Data Solutions, Inc. -060b Solid Year - 0001 MacAlly Keyboard - 1006 Japanese Keyboard - 260U - 2101 Keyboard - 5811 ACK-571U Wireless Keyboard - 5903 Japanese Keyboard - 595U - 6001 SolidTek USB 2p HUB - 6002 SolidTek USB Keyboard - 6003 Japanese Keyboard - 600HM - a001 Maxwell Compact Pc PM3 -060c EEH Datalink GmbH -060d Auctor Corp. -060e Transmonde Technologies, Inc. -060f Joinsoon Electronics Mfg. Co., Ltd -0610 Costar Electronics, Inc. -0611 Totoku Electric Co., Ltd -0613 TransAct Technologies, Inc. -0614 Bio-Rad Laboratories -0615 Quabbin Wire & Cable Co., Inc. -0616 Future Techno Designs PVT, Ltd -0617 Swiss Federal Insitute of Technology -0618 MacAlly - 0101 Mouse -0619 Seiko Instruments, Inc. - 0101 SLP-100 Driver - 0102 SLP-200 Driver - 0103 SLP-100N Driver - 0104 SLP-200N Driver - 0105 SLP-240 Driver -061a Veridicom International, Inc. - 0110 5thSense Fingerprint Sensor - 0200 FPS200 Fingerprint Sensor - 8200 VKI-A Fingerprint Sensor/Flash Storage (dumb) - 9200 VKI-B Fingerprint Sensor/Flash Storage (smart) -061b Promptus Communications, Inc. -061c Act Labs, Ltd -061d Quatech, Inc. -061e Nissei Electric Co. - 0001 nissei 128DE-USB - - 0010 nissei 128DE-PNA - -0620 Alaris, Inc. - 0004 QuickVideo weeCam - 0007 QuickVideo weeCam - 000a QuickVideo weeCam - 000b QuickVideo weeCam -0621 ODU-Steckverbindungssysteme GmbH & Co. KG -0622 Iotech, Inc. -0623 Littelfuse, Inc. -0624 Avocent Corp. -0625 TiMedia Technology Co., Ltd -0626 Nippon Systems Development Co., Ltd -0627 Adomax Technology Co., Ltd -0628 Tasking Software, Inc. -0629 Zida Technologies, Ltd -062a Creative Labs - 0000 Optical mouse - 0001 Notebook Optical Mouse - 0201 Defender Office Keyboard (K7310) S Zodiak KM-9010 - 9003 VoIP Conference Hub (A16GH) - 9004 USR9602 USB Internet Mini Phone -062b Greatlink Electronics Taiwan, Ltd -062c Institute for Information Industry -062d Taiwan Tai-Hao Enterprises Co., Ltd -062e Mainsuper Enterprises Co., Ltd -062f Sin Sheng Terminal & Machine, Inc. -0631 JUJO Electronics Corp. -0633 Cyrix Corp. -0634 Micron Technology, Inc. -0635 Methode Electronics, Inc. -0636 Sierra Imaging, Inc. - 0003 Vivicam 35Xx -0638 Avision, Inc. - 0268 iVina 1200U Scanner - 026a Minolta Dimage Scan Dual II - 0a10 iVina FB1600/UMAX Astra 4500 - 0a13 AV600U - 0a16 SC-215 - 0a30 UMAX Astra 6700 Scanner - 0a41 Avision AM3000/MF3000 Series - 0f01 fi-4010CU - 4004 Minolta Dimage Scan Elite II -0639 Chrontel, Inc. -063a Techwin Corp. -063b Taugagreining HF -063c Yamaichi Electronics Co., Ltd (Sakura) -063d Fong Kai Industrial Co., Ltd -063e RealMedia Technology, Inc. -063f New Technology Cable, Ltd -0640 Hitex Development Tools -0641 Woods Industries, Inc. -0642 VIA Medical Corp. -0644 TEAC Corp. - 0000 Floppy - 1000 CD-ROM Drive - 800d TASCAM Portastudio DP-01FX - d001 CD-R/RW Unit - d002 CD-R/RW Unit - d010 CD-RW/DVD Unit -0645 Who? Vision Systems, Inc. -0646 UMAX -0647 Acton Research Corp. - 0100 ARC SpectraPro UV/VIS/IR Monochromator/Spectrograph - 0101 ARC AM-VM Mono Airpath/Vacuum Monochromator/Spectrograph - 0102 ARC Inspectrum Mono - 0103 ARC Filterwheel - 03e9 Inspectrum 128x1024 F VIS Spectrograph - 03ea Inspectrum 256x1024 F VIS Spectrograph - 03eb Inspectrum 128x1024 B VIS Spectrograph - 03ec Inspectrum 256x1024 B VIS Spectrograph -0648 Inside Out Networks -0649 Weli Science Co., Ltd -064b White Mountain DSP, Inc. -064c Ji-Haw Industrial Co., Ltd -064d TriTech Microelectronics, Ltd -064e Suyin Corp. -064f WIBU-Systems AG - 0bd7 BOX/U - 0bd8 BOX/RU -0650 Dynapro Systems -0651 Likom Technology Sdn. Bhd. -0652 Stargate Solutions, Inc. -0653 CNF, Inc. -0654 Granite Microsystems, Inc. - 0005 Device Bay Controller - 0006 Hub - 0007 Device Bay Controller - 0016 Hub -0655 Space Shuttle Hi-Tech Co., Ltd -0656 Glory Mark Electronic, Ltd -0657 Tekcon Electronics Corp. -0658 Sigma Designs, Inc. -0659 Aethra -065a Optoelectronics Co., Ltd - 0001 Barcode scanner -065b Tracewell Systems -065e Silicon Graphics -065f Good Way Technology Co., Ltd & GWC technology Inc. -0660 TSAY-E (BVI) International, Inc. -0661 Hamamatsu Photonics K.K. -0662 Kansai Electric Co., Ltd -0663 Topmax Electronic Co., Ltd - 0103 CobraPad -0667 Aiwa Co., Ltd - 0fa1 TD-U8000 Tape Drive -0668 WordWand -0669 Oce' Printing Systems GmbH -066a Total Technologies, Ltd -066b Linksys, Inc. - 0105 SCM eUSB SmartMedia Card Reader - 010a Melco MCR-U2 SmartMedia / CompactFlash Reader - 200c USB10TX - 2202 USB10TX Ethernet [pegasus] - 2203 USB100TX Ethernet [pegasus] - 2204 USB100TX HomePNA Ethernet [pegasus] - 2206 USB Ethernet [pegasus] - 2207 HomeLink Phoneline 10M Network Adapter - 2211 WUSB11 802.11b Adapter - 2212 WUSB11v2.5 802.11b Adapter - 2213 WUSB12v1.1 802.11b Adapter - 2219 Instant Wireless Network Adapter - 400b USB10TX -066d Entrega, Inc. -066e Acer Semiconductor America, Inc. -066f SigmaTel, Inc. - 003b MP3 Player - 003e MP3 Player - 003f MP3 Player - 0040 MP3 Player - 0041 MP3 Player - 0042 MP3 Player - 0043 MP3 Player - 004b A-Max PA11 MP3 Player - 3400 STMP3400 D-Major MP3 Player - 3410 STMP3410 D-Major MP3 Player - 3500 Player Recovery Device - 4200 STIr4200 IrDA Bridge - 4210 STIr4210 IrDA Bridge - 8000 MSCN MP3 Player - 8001 SigmaTel MSCN Audio Player - 8004 MSCNMMC MP3 Player - 8008 i-Bead 100 MP3 Player - 8020 MP3 Player - 8034 MP3 Player - 8036 MP3 Player - 8038 MP3 Player - 8056 MP3 Player - 8060 MP3 Player - 8066 MP3 Player - 807e MP3 Player - 8092 MP3 Player - 8096 MP3 Player - 809a MP3 Player - 80aa MP3 Player - 80ac MP3 Player - 80b8 MP3 Player - 80ba MP3 Player - 80bc MP3 Player - 80bf MP3 Player - 80c5 MP3 Player - 80c8 MP3 Player - 80ca MP3 Player - 80cc MP3 Player - 8104 MP3 Player - 8106 MP3 Player - 8108 MP3 Player - 810a MP3 Player - 810c MP3 Player - 8122 MP3 Player - 8124 MP3 Player - 8126 MP3 Player - 8128 MP3 Player - 8134 MP3 Player - 8136 MP3 Player - 8138 MP3 Player - 813a MP3 Player - 813e MP3 Player - 8140 MP3 Player - 8142 MP3 Player - 8144 MP3 Player - 8146 MP3 Player - 8148 MP3 Player - 814c MP3 Player - 8201 MP3 Player - 8202 Jens of Sweden / I-BEAD 150M/150H MP3 player - 8203 MP3 Player - 8204 MP3 Player - 8205 MP3 Player - 8206 Digital MP3 Music Player - 8207 MP3 Player - 8208 MP3 Player - 8209 MP3 Player - 820a MP3 Player - 820b MP3 Player - 820c MP3 Player - 820d MP3 Player - 820e MP3 Player - 820f MP3 Player - 8210 MP3 Player - 8211 MP3 Player - 8212 MP3 Player - 8213 MP3 Player - 8214 MP3 Player - 8215 MP3 Player - 8216 MP3 Player - 8217 MP3 Player - 8218 MP3 Player - 8219 MP3 Player - 821a MP3 Player - 821b MP3 Player - 821c MP3 Player - 821d MP3 Player - 821e MP3 Player - 821f MP3 Player - 8220 MP3 Player - 8221 MP3 Player - 8222 MP3 Player - 8223 MP3 Player - 8224 MP3 Player - 8225 MP3 Player - 8226 MP3 Player - 8227 MP3 Player - 8228 MP3 Player - 8229 MP3 Player - 8230 MP3 Player - 9000 MP3 Player - 9001 MP3 Player - 9002 MP3 Player -0672 Labtec, Inc. - 1041 LCS1040 Speaker System - 5000 SpaceBall 4000 FLX -0673 HCL - 5000 Keyboard -0674 Key Mouse Electronic Enterprise Co., Ltd -0675 Draytech - 0110 Vigor 128 ISDN TA - 0550 Vigor550 -0676 Teles AG -0677 Aiwa Co., Ltd - 07d5 TM-ED1285(USB) - 0fa1 TD-U8000 Tape Drive -0678 ACard Technology Corp. -067b Prolific Technology, Inc. - 0000 PL2301 USB-USB Bridge - 0001 PL2302 USB-USB Bridge - 04bb PL2303 Serial (IODATA USB-RSAQ2) - 0610 Onext EG210U MODEM - 0611 AlDiga AL-11U Quad-band GSM/GPRS/EDGE modem - 2303 PL2303 Serial Port - 2305 PL2305 Parallel Port - 2307 PL2307 USB-ATAPI4 Bridge - 2313 FITEL PHS U Cable Adaptor - 2315 Flash Disk Embedded Hub - 2316 Flash Disk Security Device - 2317 Mass Storage Device - 2501 PL2501 USB-USB Bridge (USB 2.0) - 2507 PL2507 Hi-speed USB to IDE bridge controller - 2515 Flash Disk Embedded Hub - 2517 Flash Disk Mass Storage Device - 25a1 PL25A1 Host-Host Bridge - 3400 Hi-Speed Flash Disk with TruePrint AES3400 - 3500 Hi-Speed Flash Disk with TruePrint AES3500 - 3507 PL3507 ATAPI6 Bridge - aaa0 Prolific Pharos - aaa2 PL2303 Serial Adapter (IODATA USB-RSAQ3) -067c Efficient Networks, Inc. - 1001 Siemens SpeedStream 100MBps Ethernet - 1022 Siemens SpeedStream 1022 802.11b Adapter - 1023 SpeedStream Wireless - 4020 SpeedStream 4020 ATM/ADSL Installer - 4031 Efficient ADSL Modem - 4032 SpeedStream 4031 ATM/ADSL Installer - 4033 SpeedStream 4031 ATM/ADSL Installer - 4060 Alcatel Speedstream 4060 ADSL Modem - 4062 Efficient Networks 4060 Loader - 5667 Efficient Networks Virtual Bus for ADSL Modem - c031 SpeedStream 4031 ATM/ADSL Installer - c032 SpeedStream 4031 ATM/ADSL Installer - c033 SpeedStream 4031 ATM/ADSL Installer - c060 SpeedStream 4060 Miniport ATM/ADSL Adapter - d667 Efficient Networks Virtual Bus for ADSL Modem - e240 Speedstream Ethernet Adapter E240 - e540 Speedstream Ethernet Adapter E240 -067d Hohner Corp. -067e Intermec - 1001 Mobile Computer -067f Virata, Ltd - 4552 DSL-200 ADSL Modem - 6542 DSL Modem - 6549 DSL Modem - 7541 DSL Modem -0680 Realtek Semiconductor Corp., CPP Div. (Avance Logic) - 0002 Arowana Optical Wheel Mouse MSOP-01 -0681 Siemens Information and Communication Products - 0001 Dect Base - 0002 Gigaset 3075 Passive ISDN - 0005 ID-Mouse with Fingerprint Reader - 0012 I-Gate 802.11b Adapter - 001b WLL013 - 0022 Gigaset SX353 ISDN - 002b A-100-I ADSL Modem - 002e ADSL Router_S-141 - 0034 GSM module MC35/ES75 USB Modem - 3c06 54g USB Network Adapter -0682 Victor Company of Japan, Ltd -0684 Actiontec Electronics, Inc. -0686 Minolta Co., Ltd - 2001 PagePro 4110W - 3001 PagePro 4100 - 3006 PagePro 1250W - 302e Develop D 1650iD PCL - 3034 Develop D 2050iD PCL - 4001 Dimage 2300 - 4003 Dimage 2330 Zoom Camera - 4004 Scan Elite II - 4005 Minolta DiMAGE E201 Mass Storage Device - 4006 Dimage 7 Camera - 4007 Dimage S304 Camera - 4008 Dimage 5 Camera - 4009 Dimage X Camera - 400a Dimage S404 Camera - 400b Dimage 7i Camera - 400c Dimage F100 Camera - 400d Scan Dual III - 400e Dimage 5400 - 400f Dimage 7Hi Camera - 4010 Dimage Xi Camera - 4011 Dimage F300 Camera - 4012 Dimage F200 Camera - 4014 Dimage S414 Camera - 4015 Dimage XT Camera [storage] - 4016 Dimage XT Camera [remote mode] - 4017 Dimage E223 - 4018 Dimage Z1 Camera - 401a Dimage A1 Camera - 401c Dimage X20 Camera - 401e Dimage E323 Camera -068a Pertech, Inc. -068b Potrans International, Inc. -068e CH Products, Inc. - 00e2 HFX OEM Joystick - 00f1 Pro Throttle - 00f2 Flight Sim Pedals - 00f3 Fighterstick - 00ff Flight Sim Yoke - 0500 GameStick 3D - 0501 CH Pro Pedals - 0504 F-16 Combat Stick -0690 Golden Bridge Electech, Inc. -0693 Hagiwara Sys-Com Co., Ltd - 0002 FlashGate SmartMedia Card Reader - 0003 FlashGate CompactFlash Card Reader - 0005 FlashGate - 0006 SM PCCard R/W and SPD - 0007 FlashGate ME (Authenticated) - 000a SDCard/MMC Reader/Writer -0694 Lego Group - 0001 Mindstorms Tower -0698 Chuntex (CTX) - 1786 1300ex Monitor - 9999 VLxxxx Monitor+Hub -0699 Tektronix, Inc. -069a Askey Computer Corp. - 0001 VC010 WebCam [pwc] - 0303 Cable Modem - 0311 ADSL Router Remote NDIS Device - 0318 Remote NDIS Device - 0319 220V Remote NDIS Device - 0320 IEEE 802.11b Wireless LAN Card - 0321 Dynalink WLL013 / Compex WLU11A 802.11b Adapter - 0402 Scientific Atlanta WebSTAR 100 & 200 series Cable Modem - 0811 BT Virtual Bus for Helium - 0821 BT Voyager 1010 802.11b Adapter - 4402 Scientific Atlanta WebSTAR 2000 series Cable Modem - 4403 Scientific Atlanta WebSTAR 300 series Cable Modem - 4501 Scientific-Atlanta WebSTAR 2000 series Cable Modem -069b Thomson, Inc. - 0704 DCM245 Cable Modem - 070c MP3 Player - 070d MP3 Player - 070e MP3 Player - 070f RCA Lyra RD1071 MP3 Player - 2220 RCA Kazoo RD1000 MP3 Player - 300a RCA Lyra MP3 Player - 3012 MP3 Player - 3013 MP3 Player - 5557 RCA CDS6300 -069d Hughes Network Systems (HNS) - 0001 Satellite Receiver Device - 0002 Satellite Device -069e Marx - 0005 CryptoBox v1.2 -069f Allied Data Technologies BV - 0010 Tornado Speakerphone FaxModem 56.0 - 0011 Tornado Speakerphone FaxModem 56.0 - 1000 ADT VvBus for CopperJet -06a2 Topro Technology, Inc. -06a3 Saitek PLC - 0006 Cyborg Gold Joystick - 0109 P880 Pad - 0160 ST290 Pro - 0200 Xbox Adrenalin Hub - 0241 Xbox Adrenalin Gamepad - 0255 X52 Flight Controller - 040b P990 Dual Analog Pad - 040c P2900 Wireless Pad - 0422 ST90 Joystick - 0460 ST290 Pro Flight Stick - 0463 ST290 - 0464 Cyborg Evo - 0471 Cyborg Graphite Stick - 0501 R100 Sports Wheel - 0502 ST200 Stick - 0506 R220 Digital Wheel - 051e Cyborg Digital II Stick - 052d P750 Gamepad - 053c X45 Flight Controller - 053f X36F Flightstick - 056c P2000 Tilt Pad - 056f P2000 Tilt Pad - 05d2 PC Dash 2 - 075c X52 Flight Controller - 0805 R440 Force Wheel - 1003 GM2 Action Pad - 1009 Action Pad - 100a SP550 Pad and Joystick Combo - 100b SP550 Pad - 1509 P3000 Wireless Pad - 1589 P3000 Wireless Pad - 2541 X45 Flight Controller - 3509 P3000 RF GamePad - 353e Cyborg Evo Wireless - 3589 P3000 Wireless Pad - 35be Cyborg Evo - 5509 P3000 Wireless Pad - 8000 Gamers' Keyboard - 801e Cyborg 3D Digital Stick II - 8021 Eclipse II Keyboard - 802d P750 Pad - 803f X36 Flight Controller - 806f P2000 Tilt Pad - 80c0 Pro Gamer Command Unit - a502 Gaming Mouse - ff04 R440 Force Wheel - ff0c Cyborg Force Rumble Pad - ff0d P2600 Rumble Force Pad - ff12 Cyborg 3D Force Stick - ff17 ST 330 Rumble Force Stick - ff52 Cyborg 3D Rumble Force Joystick - ffb5 Cyborg Evo Force Joystick -06a4 Xiamen Doowell Electron Co., Ltd -06a5 Divio - 0000 Typhoon Webcam 100k [nw8000] - d001 ProLink DS3303u WebCam - d800 Chicony TwinkleCam - d820 Wize Media 1000 -06a7 MicroStore, Inc. -06a8 Topaz Systems, Inc. - 0042 SignatureGem 1X5 Pad - 0043 SignatureGem 1X5-HID Pad -06a9 Westell - 0005 WireSpeed Dual Connect Modem - 0006 WireSpeed Dual Connect Modem - 000a WireSpeed Dual Connect Modem - 000b WireSpeed Dual Connect Modem - 000e 802.11g Adapter -06aa Sysgration, Ltd -06ac Fujitsu Laboratories of America, Inc. -06ad Greatland Electronics Taiwan, Ltd -06ae Professional Multimedia Testing Centre -06af Harting, Inc. of North America -06b8 Pixela Corp. -06b9 Alcatel Telecom - 0121 SpeedTouch 121g Wireless Dongle - 2001 SPEED TOUCH Card - 4061 SpeedTouch ISDN or ADSL Modem - a5a5 DynaMiTe Modem -06ba Smooth Cord & Connector Co., Ltd -06bb EDA, Inc. -06bc Oki Data Corp. -06bd AGFA-Gevaert NV - 0001 SnapScan 1212U - 0002 SnapScan 1236U - 0100 SnapScan Touch - 0101 SNAPSCAN ELITE - 0200 ScanMaker 8700 - 02bf DUOSCAN f40 - 0400 CL30 - 0401 Mass Storage - 0403 ePhoto CL18 Camera - 0404 ePhoto CL20 Camera - 2061 SnapScan 1212U (?) - 208d Snapscan e40 - 208f SnapScan e50 - 2091 SnapScan e20 - 2093 SnapScan e10 - 2095 SnapScan e25 - 2097 SnapScan e26 - 20fd SnapScan e52 - 20ff SnapScan e42 -06be AME Optimedia Technology Co., Ltd - 1005 Dazzle DPVM! (1005) - d001 P35U Camera Capture -06bf Leoco Corp. -06c2 Phidgets Inc. (formerly GLAB) - 0030 PhidgetRFID - 0038 4-Motor PhidgetServo v3.0 - 0039 1-Motor PhidgetServo v3.0 - 003a 8-Motor PhidgetAvancedServo - 0040 PhidgetInterface Kit 0-0-4 - 0044 PhidgetInterface Kit 0-16-16 - 0045 PhidgetInterface Kit 8-8-8 - 0048 PhidgetStepper (Under Development) - 0049 PhidgetTextLED Ver 1.0 - 004a PhidgetLED Ver 1.0 - 004b PhidgetEncoder Ver 1.0 - 0051 PhidgetInterface Kit 0-5-7 (Custom) - 0052 PhidgetTextLCD - 0053 PhidgetInterfaceKit 0-8-8 - 0058 PhidgetMotorControl Ver 1.0 - 0070 PhidgetTemperatureSensor Ver 1.0 - 0071 PhidgetAccelerometer Ver 1.0 - 0072 PhidgetWeightSensor Ver 1.0 - 0073 PhidgetHumiditySensor - 0074 PhidgetPHSensor - 0075 PhidgetGyroscope -06c4 Bizlink International Corp. -06c5 Hagenuk, GmbH -06c6 Infowave Software, Inc. -06c8 SIIG, Inc. -06c9 Taxan (Europe), Ltd - 0005 Monitor Control - 0007 Monitor Control - 0009 Monitor Control -06ca Newer Technology, Inc. -06cb Synaptics, Inc. - 0001 HID Device - 0002 HID Device - 0003 HID Device - 0005 Touchpad/FPS - 0006 HID Device - 0007 HID Device - 0008 HID Device - 0009 Composite TouchPad and TrackPoint - 000e HID Device - 0010 Composite Human Interface Device - 0013 Human Interface Device -06cc Terayon Communication Systems - 0101 Cable Modem - 0102 Cable Modem - 0103 Cable Modem - 0104 Cable Modem - 0304 Cable Modem -06cd Keyspan - 0101 USA-28 PDA [no firmware] - 0102 USA-28X PDA [no firmware] - 0103 USA-19 PDA [no firmware] - 0104 PDA [prerenum] - 0105 USA-18X PDA [no firmware] - 0106 USA-19W PDA [no firmware] - 0107 USA-19 PDA - 0108 USA-19W PDA - 0109 USA-49W serial adapter [no firmware] - 010a USA-49W serial adapter - 010b USA-19Qi serial adapter [no firmware] - 010c USA-19Qi serial adapter - 010d USA-19Q serial Adapter (no firmware) - 010e USA-19Q serial Adapter - 010f USA-28 PDA - 0110 USA-28Xb PDA - 0111 USA-18 serial Adapter - 0112 USA-18X PDA - 0113 USA-28Xb PDA [no firmware] - 0114 USA-28Xa PDA [no firmware] - 0115 USA-28Xa PDA - 0116 USA-18XA serial Adapter (no firmware) - 0117 USA-18XA serial Adapter - 0118 USA-19QW PDA [no firmware] - 0119 USA-19QW PDA - 011a USA-49Wlc serial adapter [no firmware] - 011b MPR Serial Preloader (MPRQI) - 011c MPR Serial (MPRQI) - 011d MPR Serial Preloader (MPRQ) - 011e MPR Serial (MPRQ) - 0121 USA-19hs serial adapter - 012a USA-49Wlc serial adapter - 0201 Digital Media Remote - 0202 UIA-11 remote control -06cf SpheronVR AG - 1010 PanoCam 10 - 1012 PanoCam 12/12X -06d0 LapLink, Inc. - 0622 LapLink Gold USB-USB Bridge [net1080] -06d1 Daewoo Electronics Co., Ltd -06d3 Mitsubishi Electric Corp. - 0380 CP8000D Port - 0381 CP770D Port - 0385 CP900D Port - 0387 CP980D Port - 038b CP3020D Port - 038c CP900DW(ID) Port - 0393 CP9500D/DW Port - 0394 CP9000D/DW Port - 03a1 CP9550D/DW Port -06d4 Cisco Systems -06d5 Toshiba - 4000 Japanese Keyboard -06d6 Aashima Technology B.V. - 002d Trust PowerC@m 350FT - 002e Trust PowerC@m 350FS - 0030 Trust 710 LCD POWERC@M ZOOM - MSD - 0031 Trust 710 LCD POWERC@M ZOOM - 003a Trust PowerC@m 770Z - 003c Trust 910z PowerC@m - 003f Trust 735S POWERC@M ZOOM, WDM DSC Bulk Driver - 0050 Trust 738AV LCD PV Digital Camera - 0062 TRUST 782AV LCD P. V. Video Capture - 0066 TRUST Digital PCTV and Movie Editor - 006b TRUST AUDIO VIDEO EDITOR -06d7 Network Computing Devices (NCD) -06d8 Technical Marketing Research, Inc. -06da Phoenixtec Power Co., Ltd - 0002 UPS -06db Paradyne -06dc Foxlink Image Technology Co., Ltd - 0012 Scan 1200c Scanner - 0014 Prolink Winscan Pro 2448U -06de Heisei Electronics Co., Ltd -06e0 Multi-Tech Systems, Inc. - f101 MT5634ZBA-USB MultiModemUSB (old firmware) - f103 MT5634MU MultiMobileUSB - f104 MT5634ZBA-USB MultiModemUSB (new firmware) - f107 MT5634ZBA-USB-V92 MultiModemUSB -06e1 ADS Technologies, Inc. - 0008 UBS-10BT Ethernet [klsi] - 0009 UBS-10BT Ethernet - 0833 Mass Storage Device - a160 Instant Video-To-Go RDX-160 (no firmware) - a161 Instant Video-To-Go RDX-160 - a190 Instand VCD Capture - a191 Instant VideoXpress - a337 Mini DigitalTV - a701 DVD Xpress - b337 Mini DigitalTV - b701 DVD Xpress B -06e4 Alcatel Microelectronics -06e6 Tiger Jet Network, Inc. - 0200 Internet Phone - 0201 Internet Phone - 0202 Composite Device - 0203 Internet Phone - 0210 Composite Device - 0211 Internet Phone - 0212 Internet Phone - 031c Internet Phone - 031d Internet Phone - 031e Internet Phone - 3200 Composite Device - 3201 Internet Phone - 3202 Composite Device - 3203 Composite Device - 7200 Composite Device - 7210 Composite Device - 7250 Composite Device - 825c Internet Phone - 831c Internet Phone - 831d Composite Device - 831e Composite Device - b200 Composite Device - b201 Composite Device - b202 Internet Phone - b210 Internet Phone - b211 Composite Device - b212 Composite Device - b250 Composite Device - b251 Internet Phone - b252 Internet Phone - c200 Internet Phone - c201 Internet Phone - c202 Composite Device - c203 Internet Phone - c210 Personal PhoneGateway - c211 Personal PhoneGateway - c212 Personal PhoneGateway - c213 PPG Device - c25c Composite Device - c290 PPG Device - c291 PPG Device - c292 PPG Device - c293 Personal PhoneGateway - c31c Composite Device - c39c Personal PhoneGateway - c39d PPG Device - c39e PPG Device - c39f PPG Device - c700 Internet Phone - c701 Internet Phone - c702 Composite Device - c703 Internet Phone - c710 VoIP Combo Device - c711 VoIP Combo - c712 VoIP Combo Device - c713 VoIP Combo Device - cf00 Composite Device - cf01 Internet Phone - cf02 Internet Phone - cf03 Composite Device - d210 Personal PhoneGateway - d211 PPG Device - d212 PPG Device - d213 Personal PhoneGateway - d700 Composite Device - d701 Composite Device - d702 Internet Phone - d703 Composite Device - d710 VoIP Combo - d711 VoIP Combo Device - d712 VoIP Combo - d713 VoIP Combo - df00 Composite Device - df01 Composite Device - df02 Internet Phone - df03 Internet Phone - f200 Internet Phone - f201 Internet Phone - f202 Composite Device - f203 Composite Device - f210 Internet Phone - f250 Composite Device - f252 Internet Phone - f310 Internet Phone - f350 Composite Device -06ea Sirius Technologies - 0001 NetCom Roadster II 56k - 0002 Roadster II 56k -06eb PC Expert Tech. Co., Ltd -06ef I.A.C. Geometrische Ingenieurs B.V. -06f0 T.N.C Industrial Co., Ltd - de01 DualCam Video Camera - de02 DualCam Still Camera -06f1 Opcode Systems, Inc. - a011 SonicPort - a021 SonicPort Optical -06f2 Emine Technology Co. - 0011 KVM Switch Keyboard -06f6 Wintrend Technology Co., Ltd -06f7 Wailly Technology Ltd - 0003 USB->Din 4 Adaptor -06f8 Guillemot Corp. - a300 Dual Analog Leader GamePad - b000 Hercules DJ Console - c000 Hercules Muse Pocket - d002 Hercules DJ Console - e000 HWGUSB2-54 WLAN - e010 HWGUSB2-54-LB - e020 HWGUSB2-54V2-AP -06fa HSD S.r.L -06fc Motorola Semiconductor Products Sector -06fd Boston Acoustics - 0101 Audio Device - 0102 Audio Device - 0201 2-piece Audio Device -06fe Gallant Computer, Inc. -0701 Supercomal Wire & Cable SDN. BHD. -0703 Bvtech Industry, Inc. -0705 NKK Corp. -0706 Ariel Corp. -0707 Standard Microsystems Corp. - 0100 2202 Ethernet [klsi] - 0200 2202 Ethernet [pegasus] - 0201 EZ Connect USB Ethernet - ee04 SMCWUSB32 802.11b Wireless LAN Card - ee06 EZ-Connect 802.11g Adapter - ee13 EZ-Connect 802.11g Adapter -0708 Putercom Co., Ltd - 047e USB-1284 BRIDGE -0709 Silicon Systems, Ltd (SSL) -070a Oki Electric Industry Co., Ltd - 4002 Bluetooth Device - 4003 Bluetooth Device -070d Comoss Electronic Co., Ltd -070e Excel Cell Electronic Co., Ltd -0710 Connect Tech, Inc. - 0001 WhiteHeat (fake ID) - 8001 WhiteHeat -0711 Magic Control Technology Corp. - 0100 Hub - 0180 IRXpress Infrared Device - 0181 IRXpress Infrared Device - 0200 BAY-3U1S1P Serial Port - 0210 MCT1S Serial Port - 0230 MCT-232 Serial Port - 0231 PS/2 Mouse Port - 0232 Serial On Port - 0240 PS/2 to USB Converter - 0300 BAY-3U1S1P Parallel Port - 0302 Parallel Port - 0900 SVGA Adapter -0713 Interval Research Corp. -0714 NewMotion, Inc. - 0003 ADB to USB convertor -0717 ZNK Corp. -0718 Imation Corp. - 0002 SuperDisk 120MB - 0003 SuperDisk 120MB (Authenticated) - 0060 Flash Drive - 0061 Flash Drive - 0062 Flash Drive - 0063 Swivel Flash Drive - 0064 Flash Drive - 0065 Flash Drive - 0066 Flash Drive - 0067 Flash Drive - 0068 Flash Drive - 0084 USB Flash Drive Mini -0719 Tremon Enterprises Co., Ltd -071b Domain Technologies, Inc. - 0002 DTI-56362-USB Digital Interface Unit - 0101 Audio4-USB DSP Data Acquisition Unit - 0201 Audio4-5410 DSP Data Acquisition Unit - 0301 SB-USB JTAG Emulator -071c Xionics Document Technologies, Inc. -071d Eicon Networks Corp. - 1000 Diva ISDN TA - 1003 Diva - 2000 Teledat Surf -071e Ariston Technologies -0723 Centillium Communications Corp. - 0002 Palladia 300/400 Adsl Modem -0726 Vanguard International Semiconductor-America -0729 Amitm - 1000 USC-1000 Serial Port -072e Sunix Co., Ltd -072f Advanced Card Systems, Ltd - 0001 AC1030-based SmartCard Reader - 0008 ACR 80 Smart Card Reader - 1000 PLDT Drive - 1001 PLDT Drive - 8002 AET63 BioTRUSTKey - 8003 ACR120 - 8103 ACR120 - 9000 ACR38 AC1038-based Smart Card Reader - 90cc ACR38 SmartCard Reader - 90cf ACR38 SAM Smart Card Reader - 90d0 PertoSmart EMV - Card Reader -0731 Susteen, Inc. - 0528 SonyEricsson DCU-11 Cable -0732 Goldfull Electronics & Telecommunications Corp. -0733 ViewQuest Technologies, Inc. - 0101 Digital Video Camera - 0110 VQ110 - 0401 CS330 WebCam - 0402 M-318B WebCam - 0430 Intel Pro Share WebCam - 0630 VQ630 Dual Mode Digital Camera(Bulk) - 0631 Hercules Dualpix - 0780 Smart Cam Deluxe(composite) - 1310 Epsilon 1.3/Jenoptik JD C1.3/UMAX AstraPix 470 - 1311 Digital Dream Epsilon 1.3 - 2211 Jenoptik -0734 Lasat Communications A/S - 0001 560V Modem - 0002 Lasat 560V Modem - 043a DVS Audio -0735 Asuscom Network - 2100 ISDN Adapter - 2101 ISDN Adapter - 6694 ISDN Adapter - c541 ISDN TA 280 -0736 Lorom Industrial Co., Ltd -0738 Mad Catz, Inc. - 4507 XBox Device - 4516 XBox Device - 4520 XBox Device - 4526 XBox Device - 4536 XBox Device - 4540 XBox Device - 4556 XBox Device - 4566 XBox Device - 4576 XBox Device - 4586 XBox Device - 4588 XBox Device -073a Chaplet Systems, Inc. -073b Suncom Technologies -073d Eutron S.p.a. - 0005 Crypto Token - 0007 CryptoIdentity CCID - 0025 SmartKey 3 - 0c00 Pocket Reader - 0d00 StarSign Bio Token 3.0 EU -073c Industrial Electronic Engineers, Inc. - 0305 Pole Display (PC305-3415 2 x 20 Line Display) - 0322 Pole Display (PC322-3415 2 x 20 Line Display) - 0324 Pole Display (LB324-USB 4 x 20 Line Display) - 0330 Pole Display (P330-3415 2 x 20 Line Display) - 0450 Pole Display (L450-USB Graphic Line Display) - 0505 Pole Display (SPC505-3415 2 x 20 Line Display) - 0522 Pole Display (SPC522-3415 2 x 20 Line Display) - 0624 Pole Display (SP324-3415 2 x 20 Line Display) -073e NEC, Inc. - 0301 Game Pad -0745 Syntech Information Co., Ltd -0746 Onkyo Corp. - 5500 SE-U55 Audio Device -0747 Labway Corp. -0748 Strong Man Enterprise Co., Ltd -0749 EVer Electronics Corp. -074a Ming Fortune Industry Co., Ltd -074b Polestar Tech. Corp. -074c C-C-C Group PLC -074d Micronas GmbH - 3553 Composite USB-Device - 3554 Composite USB-Device - 3556 Composite USB-Device -074e Digital Stream Corp. - 0001 PS/2 Adapter - 0002 PS/2 Adapter -0755 Aureal Semiconductor -0757 Network Technologies, Inc. -075b Sophisticated Circuits, Inc. - 0001 Kick-off! Watchdog -0763 Midiman - 0115 KeyRig 25 - 0117 Trigger Finger - 0119 MidAir - 0150 M-Audio Uno - 0160 M-Audio 1x1 - 0192 M-Audio Keystation 88es - 0193 ProKeys 88 - 0194 ProKeys 88sx - 0195 Oxygen 8 v2 - 0196 Oxygen 49 - 0197 Oxygen 61 - 0198 Axiom 25 - 0199 Axiom 49 - 019a Axiom 61 - 019b KeyRig 49 - 019c KeyStudio - 1001 MidiSport 2x2 - 1002 MidiSport 2x2 - 1003 MidiSport 2x2 - 1010 MidiSport 1x1 - 1011 MidiSport 1x1 - 1014 M-Audio Keystation Loader - 1015 M-Audio Keystation - 1020 Midisport 4x4 - 1021 MidiSport 4x4 - 1030 Midisport 8x8 - 1031 MidiSport 8x8/s Loader - 1033 MidiSport 8x8/s - 1040 M-Audio MidiSport 2x4 Loader - 1041 M-Audio MidiSport 2x4 - 2001 M Audio Quattro - 2002 M Audio Duo - 2003 M Audio AudioPhile - 2004 M-Audio MobilePre - 2006 M-Audio Transit - 2007 M-Audio Sonica Theater - 2008 M-Audio Ozone - 200d M-Audio OmniStudio - 200f M-Audio MobilePre - 2010 M-Audio Fast Track - 2013 M-Audio JamLab - 2015 M-Audio RunTime DFU - 2016 M-Audio RunTime DFU - 2019 M-Audio Ozone Academic - 201a M-Audio Micro - 201b M-Audio RunTime DFU - 201d M-Audio Producer - 2080 M-Audio RunTime DFU - 2081 M-Audio RunTime DFU - 2803 M-Audio Audiophile DFU - 2804 M-Audio MobilePre DFU - 2806 M-Audio Transit DFU - 2815 M-Audio DFU - 2816 M-Audio DFU - 281b M-Audio DFU - 2880 M-Audio DFU - 2881 M-Audio DFU -0764 Cyber Power System, Inc. - 0005 Cyber Power UPS - 0501 CP1500 AVR UPS -0765 X-Rite, Inc. -0766 Jess-Link Products Co., Ltd -0767 Tokheim Corp. -0768 Camtel Technology Corp. - 0006 Camtel Technology USB TV Genie Pro FM Model TVB330 - 0023 eHome Infrared Receiver -0769 Surecom Technology Corp. - 11f2 EP-9001-g 802.11g 54M WLAN Adapter - 11f3 RT2570 - 11f7 802.11g 54M WLAN Adapter - 31f3 RT2573 -076a Smart Technology Enablers, Inc. -076b OmniKey AG - 0596 CardMan 2020 - 1021 CardMan 1021 - 1221 CardMan 1221 - 1784 CardMan 6020 - 3021 CardMan 3121 - 3610 CardMan 3620 - 3621 CardMan 3621 - 3821 CardMan 3821 - 4321 CardMan 4321 - 5121 CardMan 5121 - 5125 CardMan 5125 - 6622 CardMan 6121 - a011 CCID Smart Card Reader Keyboard - a021 CCID Smart Card Reader - a022 CardMan Smart@Link - c000 CardMan 3x21 CS - c001 CardMan 5121 CS -076c Partner Tech -076d Denso Corp. -076e Kuan Tech Enterprise Co., Ltd -076f Jhen Vei Electronic Co., Ltd -0770 Welch Allyn, Inc - Medical Division -0774 AmTRAN Technology Co., Ltd -0775 Longshine Electronics Corp. -0776 Inalways Corp. -0777 Comda Enterprise Corp. -0778 Volex, Inc. -0779 Fairchild Semiconductor -077a Sankyo Seiki Mfg. Co., Ltd -077b Linksys - 08be BEFCMU10 v4 Cable Modem - 2219 WUSB11 V2.6 802.11b Adapter - 2226 USB200M 100baseTX Adapter -077c Forward Electronics Co., Ltd - 0005 NEC Keyboard -077d Griffin Technology - 0223 IMic Audio In/Out - 0405 iMate, ADB Adapter - 0410 PowerMate - 041a PowerWave - 07af iMic - 627a Radio SHARK -077f Well Excellent & Most Corp. -0781 SanDisk Corp. - 0001 SDDR-05a ImageMate CompactFlash Reader - 0002 SDDR-31 ImageMate II CompactFlash Reader - 0005 SDDR-05b (CF II) ImageMate CompactFlash Reader - 0100 ImageMate SDDR-12 - 0200 SDDR-09 (SSFDC) ImageMate SmartMedia Reader [eusb] - 0400 SecureMate SD/MMC Reader - 0621 SDDR-86 Imagemate 6-in-1 Reader - 0720 Sansa C200 series in recovery mode - 0729 Sansa E200 series in recovery mode - 0810 SDDR-75 ImageMate CF-SM Reader - 0830 ImageMate CF/MMC/SD Reader - 1234 Cruzer Mini Flash Drive - 5150 SDCZ2 Cruzer Mini Flash Drive (thin) - 5151 Cruzer Micro 256/512MB Flash Drive - 5153 Cruzer USB-Flash-Drive - 5406 Cruzer Micro 1/4GB Flash Drive - 5408 Cruzer Titanium U3 - 6100 Ultra II SD Plus 2GB - 7100 Cruzer Mini - 7101 Pen Flash - 7102 Cruzer Mini - 7103 Cruzer Mini - 7104 Cruzer Micro Mini 256MB Flash Drive - 7105 Cruzer Mini - 7106 Cruzer Mini - 7112 Cruzer Micro 128MB Flash Drive - 7113 Cruzer Micro 256MB Flash Drive - 7114 Cruzer Mini - 7115 Cruzer Mini - 7420 Sansa E200 series (mtp) - 7421 Sansa E200 series - 7432 Sansa Clip (mtp) - 7433 Sansa Clip (msc) - 7450 Sansa C250 - 7451 Sansa C240 - 7480 Sansa Connect - 7481 Sansa Connect (in recovery mode) - 8181 Pen Flash - 8183 Hi-Speed Mass Storage Device - 8185 SDCZ2 Cruzer Mini Flash Drive (older, thick) - 8888 Card Reader - 8889 SDDR-88 Imagemate 8-in-1 Reader - 8919 Card Reader - 8989 ImageMate 12-in-1 Reader - 9191 ImageMate CF - 9219 Card Reader - 9292 ImageMate CF Reader/Writer - 9393 ImageMate SD-MMC - 9595 ImageMate xD-SM - 9797 ImageMate MS-PRO - 9919 Card Reader - 9999 SDDR-99 5-in-1 Reader - a7e8 SDDR-113 MicroMate SDHC Reader - b2b3 SDDR-103 MobileMate SD+ Reader -0782 Trackerball -0783 C3PO - 0003 LTC31 SmartCard Reader -0784 Vivitar, Inc. - 0100 Vivicam 2655 - 1310 Vivicam 3305 - 1688 Vivicam 3665 - 1689 Gateway DC-M42/Labtec DC-505/Vivitar Vivicam 3705 - 2620 AOL Photocam Plus - 2888 Polaroid DC700 - 3330 Nytec ND-3200 Camera - 4300 Traveler D1 - 5260 Werlisa Sport PX 100 / JVC GC-A33 Camera - 5300 Pretec dc530 -0785 NTT-ME - 0001 MN128mini-V ISDN TA - 0003 MN128mini-J ISDN TA -0789 Logitec Corp. - 0026 LHD Device - 0033 DVD Multi-plus unit LDR-H443SU2 - 0063 LDR Device - 0064 LDR-R Device - 00b3 DVD Multi-plus unit LDR-H443U2 - 010c Realtek RTL8187 Wireless 802.11g 54Mbps Network Adapter -078b Happ Controls, Inc. - 0010 Driving UGCI - 0020 Flying UGCI - 0030 Fighting UGCI -078c GTCO/CalComp - 0400 Digitizer (Whiteboard) -078e Brincom, Inc. -0790 Pro-Image Manufacturing Co., Ltd -0791 Copartner Wire and Cable Mfg. Corp. -0792 Axis Communications AB -0793 Wha Yu Industrial Co., Ltd -0794 ABL Electronics Corp. -0795 RealChip, Inc. -0796 Certicom Corp. -0797 Grandtech Semiconductor Corp. - 6801 Flatbed Scanner - 6802 InkJet Color Printer - 8001 SmartCam - 801a Typhoon StyloCam - 801c Meade Binoculars/Camera - 8901 ScanHex SX-35a - 8909 ScanHex SX-35b - 8911 ScanHex SX-35c -0798 Optelec - 0001 Braille Voyager -079b Sagem - 0027 USB-Serial Controller - 004a XG-760A - 004b Wi-Fi 11g adapter - 0056 Agfa AP1100 Photo Printer - 0062 XG-76NA -079d Alfadata Computer Corp. - 0201 GamePort Adapter -07a1 Digicom S.p.A. - d952 Palladio USB V.92 Modem -07a2 National Technical Systems -07a3 Onnto Corp. -07a4 Be, Inc. -07a6 ADMtek, Inc. - 07c2 AN986A Ethernet - 0986 AN986 Pegasus Ethernet - 8266 Infineon WildCard-USB Wireless LAN Adapter - 8511 ADM8511 Pegasus II Ethernet - 8513 AN8513 Ethernet - 8515 AN8515 Ethernet -07aa Corega K.K. - 0001 Ether USB-T Ethernet [klsi] - 0004 FEther USB-TX Ethernet [pegasus] - 000c WirelessLAN USB-11 - 000d FEther USB-TXS - 0012 Stick-11 802.11b Adapter - 0017 FEther USB2-TX - 001a ULUSB-11 Key - 002f CG-WLUSB2GNL - 7613 Stick-11 V2 802.11b Adapter - 9601 FEther USB-TXC -07ab Freecom Technologies - fc01 IDE bridge - fc02 Cable II USB-2 - fc03 USB2-IDE IDE bridge - fcf8 Freecom Classic SL Network Drive -07af Microtech - 0004 SCSI-DB25 SCSI Bridge [shuttle] - 0005 SCSI-HD50 SCSI Bridge [shuttle] - 0006 CameraMate SmartMedia and CompactFlash Card Reader [eusb/shuttle] - fc01 Freecom USB-IDE -07b0 Trust Technologies - 0001 ISDN TA - 0002 ISDN TA128 Plus - 0003 ISDN TA128 Deluxe - 0005 ISDN TA128 SE - 0006 ISDN TA128 CE - 0007 ISDN TA - 0008 ISDN TA -07b1 IMP, Inc. -07b2 Motorola BCS, Inc. - 0100 SURFboard Voice over IP Cable Modem - 0900 SURFboard Gateway - 0950 SURFboard SBG950 Gateway - 1000 SURFboard SBG1000 Gateway - 4100 SurfBoard SB4100 Cable Modem - 4200 SurfBoard SB4200 Cable Modem - 4210 SurfBoard 4210 Cable Modem - 4220 SURFboard SB4220 Cable Modem - 4500 CG4500 Communications Gateway - 450b CG4501 Communications Gateway - 450e CG4500E Communications Gateway - 5100 SurfBoard SB5100 Cable Modem - 5101 SurfBoard SB5101 Cable Modem - 5120 SurfBoard SB5120 Cable Modem (RNDIS) - 7030 Wireless Adapter WU830G -07b3 Plustek, Inc. - 0001 OpticPro 1212U Scanner - 0003 Scanner - 0010 OpticPro U12 Scanner - 0011 OpticPro U24 Scanner - 0013 OpticPro UT12 Scanner - 0014 Scanner - 0015 OpticPro U24 Scanner - 0017 OpticPro UT12/16/24 Scanner - 0204 Scanner - 0400 OpticPro 1248U Scanner - 0401 OpticPro 1248U Scanner #2 - 0403 OpticPro U16B Scanner - 0404 Scanner - 0405 A8 Namecard-s Controller - 0406 A8 Namecard-D Controller - 0410 Scanner - 0412 Scanner - 0800 OpticPro ST48 Scanner - 0c03 OpticPro ST64+ Scanner -07b4 Olympus Optical Co., Ltd - 0100 Camedia C-2100/C-3000 Ultra Zoom Camera - 0102 Camedia E-10/C-220/C-50 Camera - 0105 Camedia C-310Z/C-700/C-750UZ/C-755/C-765UZ/C-3040/C-4000/C-5050Z/D-560/C-3020Z Zoom Camera - 0109 C-370Z/D-535Z/X-450 - 0112 MAUSB-100 xD Card Reader - 0113 Mju 500 - 0114 C-350Z Camera - 0118 Mju Mini Digital/Mju Digital 500 Camera - 0184 P-S100 port - 0203 Digital Voice Recorder DW-90 - 0206 Digital Voice Recorder DS-330 - 0207 Digital Voice Recorder & Camera W-10 - 0209 Digital Voice Recorder DM-20 - 020d Digital Voice Recorder VN-240PC -07b5 Mega World International, Ltd - 0017 Joystick - 0213 Thrustmaster Firestorm Digital 3 Gamepad - 9902 GamePad -07b6 Marubun Corp. -07b7 TIME Interconnect, Ltd -07b8 D-Link Corp. - 110c XX1 - 1201 IEEE 802.11b Adapter - 200c XX2 - 2573 Wireless LAN Card - 4000 DU-E10 Ethernet [klsi] - 4002 DU-E100 Ethernet [pegasus] - 4003 1/10/100 Ethernet Adapter - 4004 XX4 - 4007 XX5 - 400b XX6 - 400c XX7 - 401a RTL8151 - 4102 USB 1.1 10/100M Fast Ethernet Adapter - 4104 XX9 - 420a UF200 Ethernet - 6001 WL54 - a001 Wireless Network Adapter - abc1 DU-E10 Ethernet [pegasus] - b000 BWU613 - b02a AboCom Bluetooth Device - b02b Bluetooth dongle - b02c BCM92045DG-Flash with trace filter - b02d BCM92045DG-Flash with trace filter - b02e BCM92045DG-Flash with trace filter - b030 BCM92045DG-Flash with trace filter - b031 BCM92045DG-Flash with trace filter - b032 BCM92045DG-Flash with trace filter - b033 BCM92045DG-Flash with trace filter - b21a 802.11g Wireless Adapter - b21b HWU54DM - b21c RT2573 - b21d RT2573 - b21e RT2573 - b21f WUG2700 - d011 MP3 Player - e001 Mass Storage Device - e002 Mass Storage Device - e003 Mass Storage Device - e004 Mass Storage Device - e005 Mass Storage Device - e006 Mass Storage Device - e007 Mass Storage Device - e008 Mass Storage Device - e009 Mass Storage Device - e00a Mass Storage Device - e4f0 Card Reader Driver - f101 DSB-560 Modem [atlas] -07bc Canon Computer Systems, Inc. -07bd Webgear, Inc. -07be Veridicom -07c0 Code Mercenaries Hard- und Software GmbH - 1121 The Claw - 1500 IO-Warrior 40 - 1501 IO-Warrior 24 - 1502 IO-Warrior 48 - 1503 IO-Warrior 28 -07c1 Keisokugiken - 0068 HKS-0200 USBDAQ -07c4 Datafab Systems, Inc. - 0102 USB to LS120 - 0103 USB to IDE - 1234 USB to ATAPI - a000 CompactFlash Card Reader - a001 CompactFlash & SmartMedia Card Reader [eusb] - a002 Disk Drive - a003 Datafab-based Reader - a004 USB to MMC Class Drive - a005 CompactFlash & SmartMedia Card Reader - a006 SmartMedia Card Reader - a007 Memory Stick Class Drive - a103 MDSM-B reader - a107 USB to Memory Stick (LC1) Drive - a109 LC1 CompactFlash & SmartMedia Card Reader - a10b USB to CF+MS(LC1) - a200 DF-UT-06 Hama MMC/SD Reader - a400 CompactFlash & Microdrive Reader - a600 Card Reader - ad01 Mass Storage Device - ae01 Mass Storage Device - af01 Mass Storage Device - b000 USB to CF(LC1) - b001 USB to CF+PCMCIA - b004 MMC/SD Reader - b006 USB to PCMCIA - b00a USB to CF+SD Drive(LC1) - b00b USB to Memory Stick(LC1) -07c5 APG Cash Drawer -07c6 ShareWave, Inc. -07c7 Powertech Industrial Co., Ltd -07c8 B.U.G., Inc. - 0202 MN128-SOHO PAL -07c9 Allied Telesyn International - b100 AT-USB100 -07ca AVerMedia Technologies, Inc. - 0002 AVerTV PVR USB/EZMaker Pro Device - 0026 AVerTV - 1228 MPEG-2 Capture Device (M038) - e880 MPEG-2 Capture Device (E880) - e882 MPEG-2 Capture Device (E882) -07cb Kingmax Technology, Inc. -07cc Carry Computer Eng., Co., Ltd - 0000 CF Card Reader - 0001 Reader (UICSE) - 0002 Reader (UIS) - 0003 SM Card Reader - 0004 SM/CF/PCMCIA Card Reader - 0005 Reader (UISA2SE) - 0006 SM/CF/PCMCIA Card Reader - 0007 Reader (UISA6SE) - 000c SM/CF Card Reader - 000d SM/CF Card Reader - 000e Reader (UISDA) - 000f Reader (UICLIK) - 0010 Reader (UISMA) - 0012 Reader (UISC6SE-FLASH) - 0014 Litronic Fortezza Reader - 0030 Mass Storage (UISDMC12S) - 0040 Mass Storage (UISDMC13S) - 0100 Reader (UID) - 0101 Reader (UIM) - 0102 Reader (UISDMA) - 0103 Reader (UISDMC) - 0104 Reader (UISDM) - 0200 6-in-1 Card Reader - 0201 Mass Storage (UISDMC1S & UISDMC3S) - 0202 Mass Storage (UISDMC5S) - 0203 Mass Storage (UISMC5S) - 0204 Mass Storage (UIM4/5S & UIM7S) - 0205 Mass Storage (UIS4/5S & UIS7S) - 0206 Mass Storage (UISDMC10S & UISDMC11S) - 0207 Mass Storage (UPIDMA) - 0208 Mass Storage (UCFC II) - 0210 Mass Storage (UPIXXA) - 0213 Mass Storage (UPIDA) - 0214 Mass Storage (UPIMA) - 0215 Mass Storage (UPISA) - 0217 Mass Storage (UPISDMA) - 0223 Mass Storage (UCIDA) - 0224 Mass Storage (UCIMA) - 0225 Mass Storage (UIS7S) - 0227 Mass Storage (UCIDMA) - 0234 Mass Storage (UIM7S) - 0235 Mass Storage (UIS4S-S) - 0237 Velper (UISDMC4S) - 0300 6-in-1 Card Reader - 0301 6-in-1 Card Reader - 0303 Mass Storage (UID10W) - 0304 Mass Storage (UIM10W) - 0305 Mass Storage (UIS10W) - 0308 Mass Storage (UIC10W) - 0309 Mass Storage (UISC3W) - 0310 Mass Storage (UISDMA2W) - 0311 Mass Storage (UISDMC14W) - 0320 Mass Storage (UISDMC4W) - 0321 Mass Storage (UISDMC37W) - 0330 WINTERREADER Reader - 0350 9-in-1 Card Reader - 0500 Mass Storage - 0501 Mass Storage -07cd Elektor - 0001 USBuart Serial Port -07cf Casio Computer Co., Ltd - 1001 QV-8000SX/5700/3000EX Digicam; Exilim EX-M20 - 1003 Exilim EX-S500 - 1004 Exilim EX-Z120 - 1011 USB-CASIO PC CAMERA - 2002 E-125 Cassiopeia Pocket PC - 3801 WMP-1 MP3-Watch - 4001 Label Printer KL-P1000 - 4007 CW50 Device - 4104 Cw75 Device - 4107 CW-L300 Device - 4500 LV-20 Digital Camera - 6801 PL-40R - 6802 MIDI Keyboard -07d0 Dazzle - 0001 Digital Video Creator I - 0002 Global Village VideoFX Grabber - 0003 Fusion Model DVC-50 Rev 1 (NTSC) - 0004 DVC-800 (PAL) Grabber - 0005 Fusion Video and Audio Ports - 0006 DVC 150 Loader Device - 0007 DVC 150 - 0327 Fusion Digital Media Reader - 1001 DM-FLEX DFU Adapter - 1002 DMHS2 DFU Adapter - 1102 CF Reader/Writer - 1103 SD Reader/Writer - 1104 SM Reader/Writer - 1105 MS Reader/Writer - 1106 xD/SM Reader/Writer - 1202 MultiSlot Reader/Writer - 2000 FX2 DFU Adapter - 2001 eUSB CompactFlash Reader - 4100 Kingsun SF-620 Infrared Adapter - 4959 Kingsun KS-959 Infrared Adapter -07d1 D-Link System - 13ec VvBus for Helium 2xx - 13ed VvBus for Helium 2xx - 13f1 DSL-302G Modem - 13f2 DSL-502G Router - 3a07 WUA-2340 Adapter - 3a08 predator Bootloader Download - 3a0d DWA-120 Wireless 108G Adapter - 3b01 AirPlus G DWL-G122 Wireless Adapter - 3b10 RangeBooster N Adapter - 3b11 Wireless N Adapter DWA-130 - 3c03 DWL-G122 802.11g Adapter [ralink rt73] - 3c04 WUA-1340 - 3c05 EH103 Wireless G Adapter - 3c07 Wireless G DWA-110 Adapter - 3c09 DWA-140 802.11n Adapter [ralink rt2870] - 5100 Remote NDIS Device - f101 DBT-122 Bluetooth - fc01 DBT-120 Bluetooth Adapter -07d2 Aptio Products, Inc. -07d3 Cyberdata Corp. -07d7 GCC Technologies, Inc. -07da Arasan Chip Systems -07de Diamond Multimedia - 2820 VC500 Video Capture Dongle -07df David Electronics Co., Ltd -07e1 Ambient Technologies, Inc. - 5201 V.90 Modem -07e2 Elmeg GmbH & Co., Ltd -07e3 Planex Communications, Inc. -07e4 Movado Enterprise Co., Ltd - 0967 SCard R/W CSR-145 - 0968 SCard R/W CSR-145 -07e5 QPS, Inc. - 05c2 IDE-to-USB2.0 PCA - 5c01 Que! CDRW -07e6 Allied Cable Corp. -07e7 Mirvo Toys, Inc. -07e8 Labsystems -07ea Iwatsu Electric Co., Ltd -07eb Double-H Technology Co., Ltd -07ec Taiyo Electric Wire & Cable Co., Ltd -07ee Torex Retail (formerly Logware) - 0002 Cash Drawer I/F -07ef STSN - 0001 Internet Access Device -07f6 Circuit Assembly Corp. -07f7 Century Corp. - 0005 ScanLogic/Century Corporation uATA - 011e Century USB Disk Enclosure -07f9 Dotop Technology, Inc. -07fa Draytek - 0778 miniVigor 128 ISDN TA - 1012 BeWAN ADSL USB ST (grey) - a904 BeWAN ADSL - a905 BeWAN ADSL ST -07fd Mark of the Unicorn - 0000 FastLane MIDI Interface - 0001 FastLane Quad MIDI Interface - 0002 MOTU Audio for 64 bit -0801 Mag-Tek - 0002 Mini Swipe Reader -0802 Mako Technologies, LLC -0803 Zoom Telephonics, Inc. - 1300 V92 Faxmodem - 4310 Wireless-G - 5241 Cable Modem - 5551 DSL Modem - 9700 2986L FaxModem - 9800 Cable Modem - a312 Wireless-G -0809 Genicom Technology, Inc. -080a Evermuch Technology Co., Ltd -080c Datalogic S.p.A. - 0300 Gryphon D120 Barcode Scanner - 0400 Gryphon D120 Barcode Scanner - 0500 Gryphon D120 Barcode Scanner - 0600 Gryphon M100 Barcode Scanner -080d Teco Image Systems Co., Ltd - 0102 Hercules Scan@home 48 - 0104 3.2Slim - 0110 UMAX AstraSlim 1200 Scanner -0810 Personal Communication Systems, Inc. -0813 Mattel, Inc. - 0001 Intel Play QX3 Microscope - 0002 Dual Mode Camera Plus -081a MG Logic - 1000 Duo Pen Tablet -081b Indigita Corp. - 0600 Storage Adapter - 0601 Storage Adapter -081c Mipsys -081e AlphaSmart, Inc. - df00 Handheld -0822 Reudo Corp. - 2001 IRXpress Infrared Device -0825 GC Protronics -0826 Data Transit -0827 BroadLogic, Inc. -0828 Sato Corp. -0829 DirecTV Broadband, Inc. (Telocity) -082d Handspring - 0100 Visor - 0200 Treo - 0300 Treo 600 - 0400 Handheld - 0500 Handheld - 0600 Handheld -0830 Palm, Inc. - 0001 m500 - 0002 m505 - 0003 m515 - 0004 Handheld - 0005 Handheld - 0006 Handheld - 0010 Handheld - 0011 Handheld - 0012 Handheld - 0013 Handheld - 0014 Handheld - 0020 i705 - 0021 Handheld - 0022 Handheld - 0023 Handheld - 0024 Handheld - 0030 Handheld - 0031 Tungsten W - 0032 Handheld - 0033 Handheld - 0034 Handheld - 0040 m125 - 0041 Handheld - 0042 Handheld - 0043 Handheld - 0044 Handheld - 0050 m130 - 0051 Handheld - 0052 Handheld - 0053 Handheld - 0054 Handheld - 0060 Tungsten C/E/T/T2/T3 / Zire 71 - 0061 Lifedrive / Treo 650/680 / Tunsten E2/T5/TX / Zire 21/31/72 / Z22 - 0062 Handheld - 0063 Handheld - 0064 Handheld - 0070 Zire - 0071 Handheld - 0072 Handheld - 0080 Serial Adapter [for Palm III] - 0081 Handheld - 0082 Handheld -0832 Kouwell Electronics Corp. - 5850 Cable -0833 Sourcenext Corp. - 012e KeikaiDenwa 8 with charger - 039f KeikaiDenwa 8 -0835 Action Star Enterprise Co., Ltd -0839 Samsung Techwin Co., Ltd - 0005 Digimax Camera - 0008 Digimax 230 Camera - 0009 Digimax 340 - 000a Digimax 410 - 000e Digimax 360 - 0010 Digimax 300 - 1003 Digimax 210SE - 1005 Digimax 220 - 1009 Digimax V4 - 1012 6500 Document Camera - 1058 S730 Camera - 1542 Digimax 50 Duo - 3000 Digimax 35 MP3 -083a Accton Technology Corp. - 1046 10/100 Ethernet [pegasus] - 1060 HomeLine Adapter - 1f4d SMC8013WG Broadband Remote NDIS Device - 3046 10/100 Series Adapter - 3060 1/10/100 Adapter - 3501 2664W - 3502 WN3501D Wireless Adapter - 3503 T-Sinus 111 Wireless Adapter - 4501 T-Sinus 154data - 4505 SMCWUSB-G - 5046 SpeedStream 10/100 Ethernet [pegasus] - 5501 Wireless Adapter 11g - 6500 Cable Modem - 6618 802.11n Wireless Adapter - 7522 802.11N Wireless Adapter - a618 SMC EZ Connect N Draft 11n Wireless Adapter - b004 CPWUE001 USB/Ethernet Adapter - b522 EZ Connect N Draft 11n Wireless USB2.0 Adapter - bb01 BlueExpert Bluetooth Device - c003 802.11b Wireless Adapter - c501 Zoom Wireless-G - c561 802.11a/g Wireless Adapter - e501 ZD1211B - f501 802.11g Wireless Adapter - f502 802.11g Wireless Adapter -083f Global Village - b100 TelePort V.90 Fax/Modem -0840 Argosy Research, Inc. - 0060 Storage Adapter Bridge Module -0841 Rioport.com, Inc. - 0001 Rio 500 -0844 Welland Industrial Co., Ltd -0846 NetGear, Inc. - 1001 EA101 Ethernet [klsi] - 1002 Ethernet - 1020 Ethernet 10/100, USB1.1 - 1040 USB 2.0 Ethernet - 4110 MA111 WiFi (v1) - 4200 WG121 WiFi (v1) - 4210 WG121 WiFi (v2) - 4220 WG111 WiFi (v1) - 4230 MA111 WiFi (v2) - 4240 WG111 WiFi (v2) - 4260 WG111v3 802.11g Adapter [realtek RTL8187B] - 4300 WG111U - 4301 WG111U (no firmware) - 6a00 WG111 WiFi (v2) - 7100 WN121T Wireless Adapter - 9000 RangeMax NEXT Wireless-N Adapter WN111 - a001 PA101 Phoneline10X Adapter -084d Minton Optic Industry Co., Inc. - 0001 Jenoptik JD800i - 0003 S-Cam F5 Digital Camera - 0011 Argus DC3500 Digital Camera - 0014 Praktica DC 32 - 0019 Praktica DPix3000 - 0025 Praktica DC 60 - 1001 ScanHex SX-35d -084e KB Gear - 0001 KBGear JamCam - 1002 Pablo Tablet -084f Empeg - 0001 Empeg-Car Mark I/II Player -0850 Fast Point Technologies, Inc. -0851 Macronix International Co., Ltd - 1542 SiPix Blink - 1543 Maxell WS30 Slim Digital Camera - a168 MXIC -0852 CSEM -0853 Topre Corporation - 0100 HHKB Professional -0854 ActiveWire, Inc. - 0100 I/O Board - 0101 I/O Board, rev1 -0856 B&B Electronics - ac01 uLinks USOTL4 RS422/485 Adapter -0858 Hitachi Maxell, Ltd - 3102 Bluetooth Device - ffff Maxell module with BlueCore in DFU mode -0859 Minolta Systems Laboratory, Inc. -085a Xircom - 0001 Portstation Dual Serial Port - 0003 Portstation Paraller Port - 0008 Ethernet - 0009 Ethernet - 000b Portstation Dual PS/2 Port - 0021 1 port to Serial Converter - 0022 Parallel Port - 0023 2 port to Serial Converter - 0024 Parallel Port - 0027 1 port to Serial Converter - 0028 PortGear to SCSI Converter - 0032 PortStation SCSI Module - 003c Bluetooth Adapter - 0299 Colorvision, Inc. Monitor Spyder - 8021 1 port to Serial - 8023 2 port to Serial - 8027 PGSDB9 Serial Port -085c ColorVision, Inc. - 0200 Monitor Spyder -0862 Teletrol Systems, Inc. -0863 Filanet Corp. -0864 NetGear, Inc. - 4100 MA101 802.11b Adapter - 4102 MA101 802.11b Adapter -0867 Data Translation, Inc. - 9812 ECON Data acquisition unit - 9816 DT9816 ECON data acquisition module - 9836 DT9836 data acquisition card -086a Emagic Soft- und Hardware GmbH - 0001 Unitor8 - 0002 AMT8 - 0003 MT4 -086c DeTeWe - Deutsche Telephonwerke AG & Co. - 1001 Eumex 504PC ISDN TA - 1002 Eumex 504PC (FlashLoad) - 1003 TA33 ISDN TA - 1004 TA33 (FlashLoad) - 1005 Eumex 604PC HomeNet - 1006 Eumex 604PC HomeNet (FlashLoad) - 1007 Eumex 704PC DSL - 1008 Eumex 704PC DSL (FlashLoad) - 1009 Eumex 724PC DSL - 100a Eumex 724PC DSL (FlashLoad) - 100b OpenCom 30 - 100c OpenCom 30 (FlashLoad) - 100d BeeTel Home 100 - 100e BeeTel Home 100 (FlashLoad) - 1011 USB2DECT - 1012 USB2DECT (FlashLoad) - 1013 Eumex 704PC LAN - 1014 Eumex 704PC LAN (FlashLoad) - 1021 OpenCom 40 - 1022 OpenCom 40 (FlashLoad) - 1023 OpenCom 45 - 1024 OpenCom 45 (FlashLoad) - 1025 Sinus 61 data - 1029 dect BOX - 102c Eumex 604PC HomeNet [FlashLoad] - 1030 Eumex 704PC DSL [FlashLoad] - 1032 OpenCom 40 [FlashLoad] - 1033 OpenCom 30 plus - 1034 OpenCom 30 plus (FlashLoad) - 1055 Eumex 220 ISDN TA - 2000 OpenCom 1000 -086e System TALKS, Inc. - 1920 SGC-X2UL -086f MEC IMEX, Inc. -0870 Metricom - 0001 Ricochet GS -0871 SanDisk, Inc. - 0001 SDDR-01 Compact Flash Reader - 0002 SDDR-31 Compact Flash Reader - 0005 SDDR-05 Compact Flash Reader -0873 Xpeed, Inc. -0874 A-Tec Subsystem, Inc. -0879 Comtrol Corp. -087c Adesso/Kbtek America, Inc. -087d Jaton Corp. - 5704 Ethernet -087e Fujitsu Computer Products of America -087f Virtual IP Group, Inc. -0880 APT Technologies, Inc. -0883 Recording Industry Association of America (RIAA) -0885 Boca Research, Inc. -0886 XAC Automation Corp. - 0630 Intel PC Camera CS630 -0887 Hannstar Electronics Corp. -088b MassWorks, Inc. - 4944 MassWorks ID-75 TouchScreen -0892 DioGraphy, Inc. - 0101 Smartdio Reader/Writer -089c United Technologies Research Cntr. -089d Icron Technologies Corp. -089e NST Co., Ltd -089f Primex Aerospace Co. -08a5 e9, Inc. -08a8 Andrea Electronics -08ae Macally (Mace Group, Inc.) -08b4 Sorenson Vision, Inc. -08b8 J. Gordon Electronic Design, Inc. - 01f4 USBSIMM1 -08b9 RadioShack Corp. (Tandy) -08bb Texas Instruments Japan - 2702 Speakers - 2900 PCM2900 Audio Codec - 2904 PCM2904 Audio Codec -08bd Citizen Watch Co., Ltd - 1100 X1-USB Floppy -08c3 Precise Biometrics - 0001 100 SC - 0002 100 A - 0003 100 SC BioKeyboard - 0006 100 A BioKeyboard - 0100 100 MC ISP - 0101 100 MC FingerPrint and SmartCard Reader - 0300 100 AX - 0400 100 SC - 0401 150 MC - 0402 200 MC FingerPrint and SmartCard Reader - 0404 100 SC Upgrade - 0405 150 MC Upgrade - 0406 100 MC Upgrade -08c4 Proxim, Inc. - 02f2 Farallon Home Phoneline Adapter -08c7 Key Nice Enterprise Co., Ltd -08c8 2Wire, Inc. -08c9 Nippon Telegraph and Telephone Corp. -08ca Aiptek International, Inc. - 0010 Tablet - 0020 APT-6000U Tablet - 0021 APT-2 Tablet - 0022 Tablet - 0023 Tablet - 0024 Tablet - 0100 Pen Drive - 0102 DualCam - 0103 Pocket DV Digital Camera - 0104 Pocket DVII - 0105 Mega DV(Disk) - 0106 Pocket DV3100+ - 0107 Pocket DV 3100 - 0109 Nisis DV4 Digital Camera - 010a Trust 738AV LCD PV Mass Storage - 0111 PenCam VGA Plus - 2008 Mini PenCam 2 - 2010 Pocket CAM 3 Mega (webcam) - 2011 Pocket CAM 3 Mega (storage) - 2018 Pencam SD 2 - 2024 Pocket DV3500 - 2042 DV 5100M Composite Device - 2043 DV 5100M(Disk) -08cd Jue Hsun Ind. Corp. -08ce Long Well Electronics Corp. -08cf Productivity Enhancement Products -08d1 smartBridges, Inc. - 0001 smartNIC Ethernet [catc] - 0003 smartNIC 2 PnP Ethernet -08d3 Virtual Ink -08d4 Fujitsu Siemens Computers - 0009 SCR SmartCard Reader -08d9 Increment P Corp. -08dd Billionton Systems, Inc. - 0112 Wireless LAN Adapter - 0113 Wireless LAN Adapter - 0986 USB-100N Ethernet [pegasus] - 0987 USBLP-100 HomePNA Ethernet [pegasus] - 0988 USBEL-100 Ethernet [pegasus] - 1986 10/100 LAN Adapter - 2103 DVB-T TV-Tuner Card-R - 8511 USBE-100 Ethernet [pegasus2] - 90ff USB2AR Ethernet -08de ??? - 7a01 802.11b Adapter -08df Spyrus, Inc. - 0001 Rosetta Token V1 - 0002 Rosetta Token V2 - 0003 Rosetta Token V3 - 0a00 Lynks Interface -08e3 Olitec, Inc. - 0002 USB-RS232 Bridge - 0100 Interface ADSL - 0101 Interface ADSL - 0102 ADSL - 0301 RNIS -08e4 Pioneer Corp. -08e5 Litronic -08e6 Gemplus - 0001 GemPC-Touch 430 - 0430 GemPC430 SmartCard Reader - 0432 GemPC432 SmartCard Reader - 0435 GemPC435 SmartCard Reader - 0437 GemPC433 SL SmartCard Reader - 1359 UA SECURE STORAGE TOKEN - 2202 Gem e-Seal Pro Token - 3437 GemPC Twin SmartCard Reader - 3438 GemPC Key SmartCard Reader - 3478 PinPad Smart Card Reader - 4433 GemPC433-Swap - 5501 GemProx-PU Contactless Smart Card Reader - ace0 UA HYBRID TOKEN -08e7 Pan-International Wire & Cable -08e8 Integrated Memory Logic -08e9 Extended Systems, Inc. - 0100 XTNDAccess IrDA Dongle -08ea Ericsson, Inc., Blue Ridge Labs - 00c9 ADSL Modem HM120dp Loader - 00ca ADSL WAN Modem HM120dp - 00ce HM230d Virtual Bus for Helium - abba USB Driver for Bluetooth Wireless Technology - abbb Bluetooth Device in DFU State -08ec M-Systems Flash Disk Pioneers - 0001 TravelDrive 2C - 0002 TravelDrive 2C - 0005 TravelDrive 2C - 0008 TravelDrive 2C - 0010 DiskOnKey - 0011 DiskOnKey - 0012 TravelDrive 2C - 0014 TravelDrive 2C - 0015 Kingston DataTraveler ELITE - 0016 Kingston DataTraveler U3 - 0020 TravelDrive - 0021 TravelDrive - 0022 TravelDrive - 0023 TravelDrive - 0024 TravelDrive - 0025 TravelDrive - 0026 TravelDrive - 0027 TravelDrive - 0028 TravelDrive - 0029 TravelDrive - 0030 TravelDrive - 0822 TravelDrive 2C - 0832 Hi-Speed Mass Storage Device - 0998 Kingston Data Traveler2.0 Disk Driver - 0999 Kingston Data Traveler2.0 Disk Driver - 1000 TravelDrive 2C - 2000 TravelDrive 2C - 2038 TravelDrive - 2039 TravelDrive - 204a TravelDrive - 204b TravelDrive -08ee CCSI/Hesso -08f0 Corex Technologies -08f1 CTI Electronics Corp. -08f5 SysTec Co., Ltd -08f6 Logic 3 International, Ltd -08f7 Vernier - 0001 LabPro - 0002 EasyTemp -08f8 Keen Top International Enterprise Co., Ltd -08f9 Wipro Technologies -08fa Caere -08fb Socket Communications -08fc Sicon Cable Technology Co., Ltd -08fd Digianswer A/S - 0001 Bluetooth Device -08ff AuthenTec, Inc. - 1600 AES1600 - 1610 AES1600 - 2500 AES2501 - 2501 AES2501 - 2502 AES2501 - 2503 AES2501 - 2504 AES2501 - 2505 AES2501 - 2506 AES2501 - 2507 AES2501 - 2508 AES2501 - 2509 AES2501 - 250a AES2501 - 250b AES2501 - 250c AES2501 - 250d AES2501 - 250e AES2501 - 250f AES2501 - 2510 AES2510 - 2580 AES2501 Fingerprint Sensor - 2588 AES2501 - 2589 AES2501 - 258a AES2501 - 258b AES2501 - 258c AES2501 - 258d AES2501 - 258e AES2501 - 258f AES2501 - 3400 AES3400 TruePrint Sensor - 3401 AES3400 Sensor - 3402 AES3400 Sensor - 3403 AES3400 Sensor - 3404 AES3400 TruePrint Sensor - 3405 AES3400 TruePrint Sensor - 3406 AES3400 TruePrint Sensor - 3407 AES3400 TruePrint Sensor - 4902 BioMV with TruePrint AES3500 - 4903 BioMV with TruePrint AES3400 - 5500 AES4000 - 5501 AES4000 TruePrint Sensor - 5503 AES4000 TruePrint Sensor - 5505 AES4000 TruePrint Sensor - 5507 AES4000 TruePrint Sensor - 55ff AES4000 TruePrint Sensor. - 5700 AES3500 Fingerprint Reader - 5701 AES3500 TruePrint Sensor - 5702 AES3500 TruePrint Sensor - 5703 AES3500 TruePrint Sensor - 5704 AES3500-BZ TruePrint Sensor - 5705 AES3500-BZ TruePrint Sensor - 5706 AES3500-BZ TruePrint Sensor - 5707 AES3500-BZ TruePrint Sensor - 5710 AES3500 TruePrint Sensor - 5711 AES3500 TruePrint Sensor - 5712 AES3500 TruePrint Sensor - 5713 AES3500 TruePrint Sensor - 5714 AES3500-BZ TruePrint Sensor - 5715 AES3500-BZ TruePrint Sensor - 5716 AES3500-BZ TruePrint Sensor - 5717 AES3500-BZ TruePrint Sensor - 5730 AES3500 TruePrint Sensor - 5731 AES3500 TruePrint Sensor - 5732 AES3500 TruePrint Sensor - 5733 AES3500 TruePrint Sensor - 5734 AES3500-BZ TruePrint Sensor - 5735 AES3500-BZ TruePrint Sensor - 5736 AES3500-BZ TruePrint Sensor - 5737 AES3500-BZ TruePrint Sensor - afe3 FingerLoc Sensor Module (Anchor) - afe4 FingerLoc Sensor Module (Anchor) - afe5 FingerLoc Sensor Module (Anchor) - afe6 FingerLoc Sensor Module (Anchor) - fffd AES2510 Sensor (USB Emulator) - ffff Sensor (Emulator) -0900 Pinnacle Systems, Inc. -0901 VST Technologies - 0001 Hard Drive Adapter (TPP) - 0002 SigmaDrive Adapter (TPP) -0906 Faraday Technology Corp. -0909 Audio-Technica Corp. -090a Trumpion Microelectronics, Inc. - 1001 T33520 USB Flash Card Controller - 1100 Comotron C3310 MP3 player - 1200 MP3 player - 1540 Digitex Container Flash Disk -090b Neurosmith -090c Feiya Technology Corp. - 1000 Memory Bar - 1132 5-in-1 Card Reader -090d Multiport Computer Vertriebs GmbH -090e Shining Technology, Inc. -090f Fujitsu Devices, Inc. -0910 Alation Systems, Inc. -0911 Philips Speech Processing - 2512 SpeechMike Pro -0912 Voquette, Inc. -0915 GlobeSpan, Inc. - 0001 DSL Modem - 0002 ADSL ATM Modem - 0005 LAN Modem - 2000 802.11 Adapter - 2002 802.11 Adapter - 8000 ADSL LAN Modem - 8005 DSL-302G Modem - 8101 ADSL WAN Modem - 8102 DSL-200 ADSL Modem - 8103 DSL-200 ADSL Modem - 8104 DSL-200 Modem - 8400 DSL Modem - 8401 DSL Modem - 8402 DSL Modem - 8500 DSL Modem - 8501 DSL Modem -0917 SmartDisk Corp. - 0001 eFilm Reader-11 SM/CF - 0002 eFilm Reader-11 SM - 0003 eFilm Reader-11 CF - 0200 FireFly - 0201 FireLite - 0202 STORAGE ADAPTER (FirePower) - 0204 FlashTrax Storage - 0205 STORAGE ADAPTER (CrossFire) - 0206 FireFly 20G HDD - 0207 FireLite - 020f STORAGE ADAPTER (FireLite) - da01 eFilm Reader-11 Test - ffff eFilm Reader-11 (Class/PDR) -0919 Tiger Electronics - 0100 Fast Flicks Digital Camera -091e Garmin International - 0003 GPSmap (various models) - 0004 Garmin iQue 3600 - 0200 Data Card Programmer (install) - 1200 Data Card Programmer -0920 Echelon Co. - 7500 Network Interface -0921 GoHubs, Inc. - 1001 GoCOM232 Serial -0922 Dymo-CoStar Corp. - 0007 LabelWriter 330 - 0009 LabelWriter 310 -0923 IC Media Corp. - 010f SIIG MobileCam -0924 Xerox - 23dd DocuPrint M760 (X760_USB) - 3d5b Phaser 6115MFP TWAIN Scanner - 420f WorkCentre PE220 Series - 421f M20 Scanner - 423b Printing Support - ffef WorkCenter M15 - fffb DocuPrint M750 (X750_USB) -0925 Lakeview Research - 8101 Phidgets, Inc., 1-Motor PhidgetServo v2.0 - 8104 Phidgets, Inc., 4-Motor PhidgetServo v2.0 - 8800 WiseGroup Ltd, MP-8800 Quad Joypad - 8866 WiseGroup Ltd, MP-8866 Dual Joypad -0927 Summus, Ltd -0928 Oxford Semiconductor, Ltd -0929 American Biometric Co. -092a Toshiba Information & Industrial Sys. And Services -092b Sena Technologies, Inc. -092f Northern Embedded Science/CAVNEX - 0004 JTAG-4 - 0005 JTAG-5 -0930 Toshiba Corp. - 0009 Gigabeat F/X (HDD audio player) - 000c Gigabeat F (mtp) - 0010 Gigabeat S (mtp) - 0301 PCX1100U Cable Modem (WDM) - 0302 PCX2000 Cable Modem (WDM) - 0305 Cable Modem PCX3000 - 0307 Cable Modem PCX2500 - 0308 PCX2200 Cable Modem (WDM) - 0309 PCX5000 Cable Modem (WDM) - 030b Cable Modem PCX2600 - 0501 Bluetooth Controller - 0502 Integrated Bluetooth - 0503 Bluetooth Controller - 0505 Integrated Bluetooth - 0506 Integrated Bluetooth - 0507 Bluetooth Adapter - 0508 Integrated Bluetooth HCI - 0509 BT EDR Dongle - 0706 PocketPC e740 - 0707 Pocket PC e330 Series - 0708 Pocket PC e350 Series - 0709 Pocket PC e750 Series - 070a Pocket PC e400 Series - 070b Pocket PC e800 Series - 1300 Wireless Broadband (CDMA EV-DO) SM-Bus Minicard Status Port - 1301 Wireless Broadband (CDMA EV-DO) Minicard Status Port - 1302 Wireless Broadband (3G HSDPA) SM-Bus Minicard Status Port - 1303 Wireless Broadband (3G HSDPA) Minicard Status Port - 1308 Broadband (3G HSDPA) SM-Bus Minicard Diagnostics Port - 642f TravelDrive - 6506 TravelDrive 2C - 6507 TravelDrive 2C - 6508 TravelDrive 2C - 6509 TravelDrive 2C - 6510 TravelDrive 2C - 6517 TravelDrive 2C - 6518 TravelDrive 2C - 6519 Kingston DataTraveler 2.0 USB Stick - 651a TravelDrive 2C - 651b TravelDrive 2C - 651c TravelDrive 2C - 651d TravelDrive 2C - 651e TravelDrive 2C - 651f TravelDrive 2C - 6520 TravelDrive 2C - 6521 TravelDrive 2C - 6522 TravelDrive 2C - 6523 TravelDrive - 6524 TravelDrive - 6525 TravelDrive - 6526 TravelDrive - 6527 TravelDrive - 6528 TravelDrive - 6529 TravelDrive - 652a TravelDrive - 652b TravelDrive - 652c TravelDrive - 652d TravelDrive - 652f TravelDrive - 6530 TravelDrive - 6531 TravelDrive - 6532 256M USB Stick - 6533 512M USB Stick - 6534 TravelDrive - 653c Kingston DataTraveler 2.0 USB Stick (512M) - 653d Kingston DataTraveler 2.0 USB Stick (1GB) - 653e USB Flash Memory - 6540 TransMemory USB Flash Memory -0931 Harmonic Data Systems, Ltd -0932 Crescentec Corp. - 0300 VideoAdvantage - 0302 Syntek DC-112X - 0320 VideoAdvantage - 1100 Video Enhamcement Device - 1112 Veo Web Camera - a311 Video Enhancement Device -0933 Quantum Corp. -0934 Netcom Systems -0939 Lumberg, Inc. -093a Pixart Imaging, Inc. - 0007 CMOS 100K-R Rev. 1.90 - 010e Digital camera, CD302N/Elta Medi@ digi-cam/HE-501A - 010f Argus DC-1610/DC-1620/Emprex PCD3600/Philips P44417B keychain camera/Precision Mini,Model HA513A/Vivitar Vivicam 55 - 2460 Q-TEC WEBCAM 100 - 2468 Cammaestro 2.5DU/X-EYE/Orite SC-120/ICGear TravelCam/Easy Snap Snake Eye WebCam - 2470 SoC PC-Camera - 2471 SoC PC-Camera - 2500 USB Optical Mouse - 2600 Typhoon Easycam USB 330K (newer)/Typhoon Easycam USB 2.0 VGA 1.3M/Sansun SN-508 - 2601 SPC 610NC Laptop Camera -093b Plextor Corp. - 0010 Storage Adapter - 0011 PlexWriter 40/12/40U - 0042 PX-712UF DVD RW - a002 ConvertX M402U XLOADER - a003 ConvertX AV100U A/V Capture Audio - a004 ConvertX TV402U XLOADER - a005 KWorld EMP Audio Device - a102 ConvertX M402U A/V Capture - a104 ConvertX PX-TV402U/NA -093c Intrepid Control Systems, Inc. - 0601 ValueCAN - 0701 NeoVI Blue vehicle bus interface -093d InnoSync, Inc. -093e J.S.T. Mfg. Co., Ltd -093f Olympia Telecom Vertriebs GmbH -0940 Japan Storage Battery Co., Ltd -0941 Photobit Corp. -0942 i2Go.com, LLC -0943 HCL Technologies India Private, Ltd -0944 KORG, Inc. -0945 Pasco Scientific -0948 Kronauer music in digital - 0301 USB Pro (24/48) - 0302 USB Pro (24/96 playback) - 0303 USB Pro (24/96 record) - 0304 USB Pro (16/48) - 1105 USB One -094b Linkup Systems Corp. -094d Cable Television Laboratories -094f Yano - 0101 U640MO-03 - 05fc METALWEAR-HDD -0951 Kingston Technology - 0008 Ethernet - 000a KNU101TX 100baseTX Ethernet - 1600 Data Traveler II Pen Drive - 1601 Data Traveler II+ Pen Drive - 1602 Data Traveler Mini - 1603 Data Traveler 1GB/2GB Pen Drive -0954 RPM Systems Corp. -0955 NVidia Corp. -0956 BSquare Corp. -0957 Agilent Technologies, Inc. - 0200 E-Video DC-350 Camera - 0202 E-Video DC-350 Camera -0958 CompuLink Research, Inc. -0959 Cologne Chip AG - 2bd0 Intelligent ISDN (Ver. 3.60.04) -095a Portsmith - 3003 Express Ethernet -095b Medialogic Corp. -095c K-Tec Electronics -095d Polycom, Inc. - 0001 Polycom ViaVideo -0967 Acer (??) - 0204 WarpLink 802.11b Adapter -0968 Catalyst Enterprises, Inc. -096e Feitian Technologies, Inc. - 0802 ePass2000 (G&D STARCOS SPK 2.4) -0971 Gretag-Macbeth AG -0973 Schlumberger - 0001 e-gate Smart Card -0974 Datagraphix, a business unit of Anacomp -0975 OL'E Communications, Inc. -0976 Adirondack Wire & Cable -0977 Lightsurf Technologies -0978 Beckhoff GmbH -0979 Jeilin Technology Corp., Ltd - 0224 JL2005A Toy Camera - 0226 JL2005A Toy Camera -097a Minds At Work LLC - 0001 Digital Wallet -097b Knudsen Engineering, Ltd -097c Marunix Co., Ltd -097d Rosun Technologies, Inc. -097f Barun Electronics Co., Ltd -0981 Oak Technology, Ltd -0984 Apricorn - 0200 Hard Drive Storage (TPP) -0985 cab Produkttechnik GmbH & Co KG - 00a3 A3/200 or A3/300 Label Printer -0986 Matsushita Electric Works, Ltd. -098c Vitana Corp. -098d INDesign -098e Integrated Intellectual Property, Inc. -098f Kenwood TMI Corp. -0993 Gemstar eBook Group, Ltd - 0001 REB1100 eBook Reader - 0002 eBook -0996 Integrated Telecom Express, Inc. -099a Zippy Technology Corp. - 610c EL-610 Super Mini Electron luminescent Keyboard -09a3 PairGain Technologies -09a4 Contech Research, Inc. -09a5 VCON Telecommunications -09a6 Poinchips - 8001 Mass Storage Device -09a7 Data Transmission Network Corp. -09a8 Lin Shiung Enterprise Co., Ltd -09a9 Smart Card Technologies Co., Ltd -09aa Intersil Corp. - 1000 Prism GT 802.11b/g Adapter - 3642 Prism 2.x 802.11b Adapter -09ab Japan Cash Machine Co., Ltd. -09ae Tripp Lite -09b2 Franklin Electronic Publishers, Inc. - 0001 eBookman Palm Computer -09b3 Altius Solutions, Inc. -09b4 MDS Telephone Systems -09b5 Celltrix Technology Co., Ltd -09bc Grundig - 0002 MPaxx MP150 MP3 Player -09be MySmart.Com - 0001 MySmartPad -09bf Auerswald GmbH & Co. KG - 00c0 COMpact 2104 ISDN PBX - 00db COMpact 4410/2206 ISDN ISDN - 00f1 COMfort System Telephones -09c1 Arris Interactive LLC - 1337 TOUCHSTONE DEVICE -09c2 Nisca Corp. -09c3 ActivCard, Inc. - 0007 Reader V2 - 0008 SmartCard Reader -09c4 ACTiSYS Corp. - 0011 ACT-IR2000U IrDA Dongle -09c5 Memory Corp. -09cc Workbit Corp. - 0404 BAFO USB-ATA/ATAPI Bridge Controller -09cd Psion Dacom Home Networks, Ltd -09ce City Electronics, Ltd -09cf Electronics Testing Center, Taiwan -09d1 NeoMagic, Inc. -09d2 Vreelin Engineering, Inc. -09d3 Com One - 0001 ISDN TA -09d7 Novatel Wireless - 0100 NovAtel FlexPack GPS receiver -09d9 KRF Tech, Ltd -09da A4 Tech Co., Ltd - 0006 Optical Mouse WOP-35 / Trust 450L Optical Mouse - 000a Port Mouse - 0018 Trust Human Interface Device - 001a Wireless Mouse & RXM-15 Receiver - 002a Wireless Optical Mouse NB-30 -09db Measurement Computing Corp. - 0075 MiniLab 1008 - 0076 PMD-1024 - 007a PMD-1208LS - 0081 USB-1616FS - 0088 USB-1616FS internal hub -09dc Aimex Corp. -09dd Fellowes, Inc. -09df Addonics Technologies Corp. -09e1 Intellon Corp. - 5121 MicroLink dLAN -09e5 Jo-Dan International, Inc. -09e6 Silutia, Inc. -09e7 Real 3D, Inc. -09e8 AKAI Professional M.I. Corp. -09e9 Chen-Source, Inc. -09eb IM Networks, Inc. - 4331 iRhythm Tuner Remote -09ef Xitel - 0101 MD-Port DG2 MiniDisc Interface -09f5 AresCom - 0168 Network Adapter - 0188 LAN Adapter - 0850 Adapter -09f6 RocketChips, Inc. -09f7 Edu-Science (H.K.), Ltd -09f8 SoftConnex Technologies, Inc. -09f9 Bay Associates -09fa Mtek Vision -09fb Altera -09ff Gain Technology Corp. -0a00 Liquid Audio -0a01 ViA, Inc. -0a07 Ontrak Control Systems Inc. - 0064 ADU100 Data Acquisition Interface - 00c8 ADU200 Relay I/O Interface - 00d0 ADU208 Data Acquisition Interface -0a0b Cybex Computer Products Co. -0a11 Xentec, Inc. -0a12 Cambridge Silicon Radio, Ltd - 0001 Bluetooth Dongle (HCI mode) - 0002 Frontline Test Equipment Bluetooth Device - 0003 Nanosira - 0004 Nanosira WHQL Reference Radio - 0005 Nanosira-Multimedia - 0006 Nanosira-Multimedia WHQL Reference Radio - 0007 Nanosira3-ROM - 0008 Nanosira3-ROM - 0009 Nanosira4-EDR WHQL Reference Radio - 000a Nanosira4-EDR-ROM - 000b Nanosira5-ROM - 0043 Bluetooth Device - 0100 Casira with BlueCore2-External Module - 0101 Casira with BlueCore2-Flash Module - 0102 Casira with BlueCore3-Multimedia Module - 0103 Casira with BlueCore3-Flash Module - 0104 Casira with BlueCore4-External Module - 0105 Casira with BlueCore4-Multimedia Module - 1000 Bluetooth Dongle (HID proxy mode) - 1010 Bluetooth Device - 1011 Bluetooth Device - 1012 Bluetooth Device - ffff USB Bluetooth Device in DFU State -0a13 Telebyte, Inc. -0a14 Spacelabs Medical, Inc. -0a15 Scalar Corp. -0a16 Trek Technology (S) PTE, Ltd - 1111 ThumbDrive - 8888 IBM USB Memory Key - 9988 Trek2000 TD-G2 -0a17 Pentax Corp. - 0004 Pentax Optio 330 - 0006 Pentax Optio S - 0007 Pentax Optio 550 - 0009 Pentax Optio 33WR - 000a Pentax Optio 555 - 000c Pentax Optio 43WR (mass storage mode) - 000d Pentax Optio 43WR - 0015 Pentax Optio S40/S5i - 003b Pentax Optio 50 (mass storage mode) - 003d Pentax Optio S55 - 0043 Pentax *ist DL - 0047 Pentax Optio S60 - 0052 Optio 60 Digital Camera - 006e Pentax K10D - 0070 Pentax K100D - 1001 EI2000 Camera powered by Digita! -0a18 Heidelberger Druckmaschinen AG -0a19 Hua Geng Technologies, Inc. -0a21 Medtronic Physio Control Corp. -0a22 Century Semiconductor USA, Inc. -0a2c AK-Modul-Bus Computer GmbH - 0008 GPIO Ports -0a34 TG3 Electronics, Inc. - 0110 Deck 82-key backlit keyboard -0a39 Gilat Satellite Networks, Ltd -0a3a PentaMedia Co., Ltd - 0163 KN-W510U 1.0 Wireless LAN Adapter -0a3c NTT DoCoMo, Inc. -0a3d Varo Vision -0a3f Swissonic AG -0a43 Boca Systems, Inc. -0a46 Davicom Semiconductor, Inc. - 0268 ST268 - 9601 DM9601 To Fast Ethernet Adapter -0a47 Hirose Electric -0a48 I/O Interconnect - 3233 Multimedia Card Reader - 3239 Multimedia Card Reader - 3258 Dane Elec zMate SD Reader - 3259 Dane Elec zMate CF Reader - 5000 MediaGear xD-SM - 500a Mass Storage Device - 500f Mass Storage Device - 5010 Mass Storage Device - 5011 Mass Storage Device - 5014 Mass Storage Device - 5020 Mass Storage Device - 5021 Mass Storage Device - 5022 Mass Storage Device - 5023 Mass Storage Device - 5024 Mass Storage Device - 5025 Mass Storage Device -0a4b Fujitsu Media Devices, Ltd -0a4c Computex Co., Ltd -0a4d Evolution Electronics, Ltd - 0064 MK-225 Driver - 0065 MK-225C Driver - 0066 MK-225C Driver - 0067 MK-425C Driver - 0078 MK-37 Driver - 0079 MK-37C Driver - 007a MK-37C Driver - 008c TerraTec MIDI MASTER - 008d MK-249C Driver - 008e MK-249C MIDI Keyboard - 008f MK-449C Driver - 0090 Keystation 49e Driver - 0091 Keystation 61es Driver - 00a0 MK-361 Driver - 00a1 MK-361C Driver - 00a2 MK-361C Driver - 00a3 MK-461C MIDI Keyboard - 00b5 Keystation Pro 88 Driver - 00d2 E-Keys Driver - 00f0 UC-16 Driver - 00f1 X-Session Driver - 00f5 UC-33e MIDI Controller -0a4e Steinberg Soft-und Hardware GmbH -0a4f Litton Systems, Inc. -0a50 Mimaki Engineering Co., Ltd -0a51 Sony Electronics, Inc. -0a52 Jebsee Electronics Co., Ltd -0a53 Portable Peripheral Co., Ltd - 1000 Scanner - 2000 Q-Scan A6 Scanner - 2001 Q-Scan A6 Scanner - 2013 Media Drive A6 Scanner - 2014 Media Drive A6 Scanner - 2015 BizCardReader 600C - 2016 BizCardReader 600C - 202a Scanshell-CSSN - 3000 Q-Scan A8 Scanner - 3002 Q-Scan A8 Reader - 3015 BizCardReader 300G - 5001 BizCardReader 900C -0a5a Electronics For Imaging, Inc. -0a5b EAsics NV -0a5c Broadcom Corp. - 0201 iLine10(tm) Network Adapter - 2000 Bluetooth Device - 2009 Bluetooth Controller - 200a Bluetooth dongle - 200f Bluetooth Controller - 201d Bluetooth Device - 201e IBM Integrated Bluetooth IV - 2020 Bluetooth Dongle - 2033 BCM2033 Bluetooth - 2035 BCM2035 Bluetooth - 2038 Blutonium Device - 2039 Bluetooth Device - 2045 Bluetooth Controller - 2046 Bluetooth Device - 2047 Bluetooth Device - 205e Bluetooth Device - 2100 Bluetooth 2.0+eDR dongle - 2101 A-Link BlueUsbA2 Bluetooth - 2102 ANYCOM Blue USB-200/250 - 2110 Bluetooth Controller - 2111 ANYCOM Blue USB-UHE 200/250 - 2120 2045 Bluetooth 2.0 USB-UHE Device with trace filter - 2121 BCM2210 Bluetooth - 2122 Bluetooth 2.0+EDR dongle - 2130 2045 Bluetooth 2.0 USB-UHE Device with trace filter - 2131 2045 Bluetooth 2.0 Device with trace filter - 6300 Pirelli Remote NDIS Device -0a5d Diatrend Corp. -0a5f Zebra - 0009 LP2844 Printer - 930a Printer -0a62 MPMan - 0010 MPMan MP-F40 MP3 Player -0a66 ClearCube Technology -0a67 Medeli Electronics Co., Ltd -0a68 Comaide Corp. -0a69 Chroma ate, Inc. -0a6b Green House Co., Ltd - 0001 Compact Flash R/W with MP3 player -0a6c Integrated Circuit Systems, Inc. -0a6d UPS Manufacturing -0a6e Benwin -0a6f Core Technology, Inc. - 0400 Xanboo -0a70 International Game Technology -0a72 Sanwa Denshi -0a7d NSTL, Inc. -0a7e Octagon Systems Corp. -0a80 Rexon Technology Corp., Ltd -0a81 Chesen Electronics Corp. - 0101 Keyboard - 0103 Keyboard - 0203 Mouse - 0205 PS/2 Keyboard+Mouse Adapter -0a82 Syscan - 4600 TravelScan 460/464 -0a83 NextComm, Inc. -0a84 Maui Innovative Peripherals -0a85 Idexx Labs -0a86 NITGen Co., Ltd -0a8d Picturetel -0a8e Japan Aviation Electronics Industry, Ltd - 2011 Filter Driver For JAE XMC R/W -0a90 Candy Technology Co., Ltd -0a91 Globlink Technology, Inc. - 3801 Targus PAKP003 Mouse -0a92 EGO SYStems, Inc. - 0011 SYS WaveTerminal U2A - 0021 GIGAPort - 0031 GIGAPortAG - 0053 AudioTrak Optoplay - 0061 Waveterminal U24 - 0071 MAYA EX7 - 0091 Maya 44 - 00b1 MAYA EX5 - 1000 MIDI Mate - 1010 RoMI/O - 1020 M4U - 1030 M8U - 1090 KeyControl49 - 10a0 KeyControl25 -0a93 C Technologies AB - 0002 C-Pen 10 - 0005 MyPen Light - 000d Input Pen - 0010 C-Pen 20 -0a94 Intersense -0aa3 Lava Computer Mfg., Inc. -0aa4 Develco Elektronik -0aa5 First International Digital - 0002 irock! 500 Series - 0801 MP3 Player -0aa6 Perception Digital, Ltd - 0101 Hercules Jukebox - 1501 Store 'n' Go HD Drive -0aa7 Wincor Nixdorf International GmbH - 0100 POS Keyboard, TA58P-USB - 0101 POS Keyboard, TA85P-USB - 0102 POS Keyboard, TA59-USB - 0103 POS Keyboard, TA60-USB - 0104 SNIkey Keyboard, SNIKey-KB-USB - 0200 Operator Display, BA63-USB - 0201 Operator Display, BA66-USB - 0202 Operator Display & Scanner, XiCheck-BA63 - 0203 Operator Display & Scanner, XiCheck-BA66 - 0204 Graphics Operator Display, BA63GV - 0300 POS Printer (printer class mode), TH210 - 0301 POS Printer (native mode), TH210 - 0302 POS Printer (printer class mode), TH220 - 0303 POS Printer (native mode), TH220 - 0304 POS Printer, TH230 - 0305 Lottery Printer, XiPrintPlus - 0306 POS Printer (printer class mode), TH320 - 0307 POS Printer (native mode), TH320 - 0308 POS Printer (printer class mode), TH420 - 0309 POS Printer (native mode), TH420 - 030a POS Printer, TH200B - 0400 Lottery Scanner, Xiscan S - 0401 Lottery Scanner, Xiscan 3 - 4304 Banking Printer TP07 -0aa8 TriGem Computer, Inc. - 0060 TG 11Mbps WLAN Mini Adapter - 1001 DreamComboM4100 - 3002 InkJet Color Printer - 8001 TG_iMON - 8002 TG_KLOSS - a001 TG_X2 - a002 TGVFD_KLOSS - ffda iMON_VFD -0aa9 Baromtec Co. - f01b Medion MD 6242 MP3 Player -0aaa Japan CBM Corp. -0aab Vision Shape Europe SA -0aac iCompression, Inc. -0aad Rohde & Schwarz GmbH & Co. KG -0aae NEC infrontia Corp. (Nitsuko) -0aaf Digitalway Co., Ltd -0ab0 Arrow Strong Electronics Co., Ltd -0aba Ellisys - 8001 USB Tracker 110 Protocol Analyzer -0abe Stereo-Link - 0101 SL1200 DAC -0ac3 Sanyo Semiconductor Company Micro -0ac4 Leco Corp. -0ac5 I & C Corp. -0ac6 Singing Electrons, Inc. -0ac7 Panwest Corp. -0ac8 Z-Star Microelectronics Corp. - 0301 Web Camera - 0302 ZC0302 WebCam - 0321 USB 2.0 Webcam - 0323 Luxya WC-1200 USB 2.0 Webcam - 301b ZC0301 WebCam - 303b ZC0303 WebCam - 305b ZC0305 WebCam - 307b USB 1.1 WebCam - c002 Visual Communication Camera VGP-VCC1 -0ac9 Micro Solutions, Inc. - 0000 Backpack CD-ReWriter - 0001 BACKPACK 2 Cable - 0010 BACKPACK - 0011 Backpack 40GB Hard Drive - 0110 BACKPACK - 0111 BackPack - 1234 BACKPACK -0aca OPEN Networks Ltd - 1060 OPEN NT1 Plus II -0acc Koga Electronics Co. -0acd ID Tech - 0401 ID TECH Spectrum III Hybrid Smartcard Reader -0ace ZyDAS - 1201 802.11b WiFi - 1211 802.11b/g USB2 WiFi - 1215 WLA-54L WiFi - 1608 ONMI FAXMODEM 56K UNO (ZyXEL) -0acf Intoto, Inc. -0ad0 Intellix Corp. -0ad1 Remotec Technology, Ltd -0ad2 Service & Quality Technology Co., Ltd -0ae3 Allion Computer, Inc. -0ae4 Taito Corp. -0ae7 Neodym Systems, Inc. -0ae8 System Support Co., Ltd -0ae9 North Shore Circuit Design L.L.P. -0aea SciEssence, LLC -0aeb TTP Communications, Ltd -0aec Neodio Technologies Corp. - 2101 SmartMedia Card Reader - 2102 CompactFlash Card Reader - 2103 MMC/SD Card Reader - 2104 MemoryStick Card Reader - 2201 SmartMedia+CompactFlash Card Reader - 2202 SmartMedia+MMC/SD Card Reader - 2203 SmartMedia+MemoryStick Card Reader - 2204 CompactFlash+MMC/SD Card Reader - 2205 CompactFlash+MemoryStick Card Reader - 2206 MMC/SD+MemoryStick Card Reader - 2301 SmartMedia+CompactFlash+MMC/SD Card Reader - 2302 SmartMedia+CompactFlash+MemoryStick Card Reader - 2303 SmartMedia+MMC/SD+MemoryStick Card Reader - 2304 CompactFlash+MMC/SD+MemoryStick Card Reader - 3016 MMC/SD+Memory Stick Card Reader - 3050 ND3050 8-in-1 Card Reader - 3060 1.1 FS Card Reader - 3101 MMC/SD Card Reader - 3102 MemoryStick Card Reader - 3201 MMC/SD+MemoryStick Card Reader - 3216 HS Card Reader - 3260 7-in-1 Card Reader - 5010 ND5010 Card Reader -0af0 Option - 5000 UMTS Card - 6000 GlobeTrotter 3G datacard - 6300 GT 3G Quad UMTS/GPRS Card - 6600 GlobeTrotter 3G+ datacard -0af6 Silver I Co., Ltd -0af7 B2C2, Inc. - 0101 Digital TV USB Receiver (DVB-S/T/C / ATSC) -0af9 Hama, Inc. - 0010 USB SightCam 100 - 0011 Micro Innovations IC50C WebCam -0afc Zaptronix Ltd -0afd Tateno Dennou, Inc. -0afe Cummins Engine Co. -0aff Jump Zone Network Products, Inc. -0b00 INGENICO -0b05 ASUSTek Computer, Inc. - 1101 Mass Storage (UISDMC4S) - 1706 WL-167G 802.11g Adapter [ralink] - 1707 WL-167g Wireless Adapter - 1708 Mass Storage Device - 170b Mass Storage Device - 170c WL-159g - 170d 802.11b/g Wireless Network Adapter - 1712 BT-183 Bluetooth 2.0+EDR adapter - 1715 2045 Bluetooth 2.0 Device with trace filter - 1716 Bluetooth Device - 171b A9T wireless - 171c 802.11b/g Wireless Network Adapter - 1723 WL-167G v2 802.11g Adapter [ralink] - 1724 RT2573 - 1726 Laptop OLED Display - 172a ASUS 802.11n Network Adapter - 172b 802.11n Network Adapter - 1731 ASUS 802.11n Network Adapter - 1732 802.11n Network Adapter - 173c BT-183 Bluetooth 2.0 - 1742 802.11n Network Adapter - 6101 Cable Modem - 620a Remote NDIS Device -0b0c Todos Data System AB - 0009 Todos Argos Mini II Smart Card Reader -0b0e GN Netcom -0b0f AVID Technology -0b10 Pcally -0b11 I Tech Solutions Co., Ltd -0b1e Electronic Warfare Assoc., Inc. (EWA) -0b1f Insyde Software Corp. -0b20 TransDimension, Inc. -0b21 Yokogawa Electric Corp. -0b22 Japan System Development Co., Ltd -0b23 Pan-Asia Electronics Co., Ltd -0b24 Link Evolution Corp. -0b27 Ritek Corp. -0b28 Kenwood Corp. -0b2c Village Center, Inc. -0b30 PNY Technologies, Inc. - 0006 SM Media-Shuttle Card Reader -0b33 Contour Design, Inc. - 0020 ShuttleXpress -0b37 Hitachi ULSI Systems Co., Ltd -0b39 Omnidirectional Control Technology, Inc. - 0109 USB TO Ethernet - 0421 Serial - 0801 USB-Parallel Bridge - 0901 OCT To Fast Ethernet Converter - 0c03 LAN DOCK Serial Converter -0b3a IPaxess -0b3b Tekram Technology Co., Ltd - 0163 TL-WN320G 1.0 WLAN Adapter - 1601 Allnet 0193 802.11b Adapter - 1602 ZyXEL ZyAIR B200 802.11b Adapter - 1612 AIR.Mate 2@net 802.11b Adapter - 1613 802.11b Wireless LAN Adapter - 1620 Allnet USB 2.0 Wireless Network Adapter - 1630 QuickWLAN - 5630 ZD1211 - 6630 ZD1211 -0b3c Olivetti Techcenter - a010 Simple_Way Printer/Scanner/Copier -0b3e Kikusui Electronics Corp. -0b41 Hal Corp. - 0011 Crossam2+USB IR commander -0b43 Play.com, Inc. - 0003 PS2 Controller Converter -0b47 Sportbug.com, Inc. -0b48 TechnoTrend AG - 1003 Technotrend/Hauppauge USB-Nova - 1004 TT-PCline - 1005 Technotrend/Hauppauge USB-Nova - 1006 Technotrend/Hauppauge DEC3000-s - 1007 TT-micro plus Device - 1008 Technotrend/Hauppauge DEC2000-t - 1009 Technotrend/Hauppauge DEC2540-t -0b49 ASCII Corp. - 064f Trance Vibrator -0b4b Pine Corp. Ltd. - 0100 D'music MP3 Player -0b4d Graphtec America, Inc. - 110a Graphtec CC200-20 -0b4e Musical Electronics, Ltd - 6500 MP3 Player - 8028 MP3 Player - 8920 MP3 Player -0b50 Dumpries Co., Ltd -0b51 Comfort Keyboard Co. - 0020 Comfort Keyboard -0b52 Colorado MicroDisplay, Inc. -0b54 Sinbon Electronics Co., Ltd -0b56 TYI Systems, Ltd -0b57 Beijing HanwangTechnology Co., Ltd -0b59 Lake Communications, Ltd -0b5a Corel Corp. -0b5f Green Electronics Co., Ltd -0b60 Nsine, Ltd -0b61 NEC Viewtechnology, Ltd -0b62 Orange Micro, Inc. - 000b Bluetooth Device - 0059 iBOT2 WebCam -0b63 ADLink Technology, Inc. -0b64 Wonderful Wire Cable Co., Ltd -0b65 Expert Magnetics Corp. -0b69 CacheVision -0b6a Maxim Integrated Products -0b6f Nagano Japan Radio Co., Ltd -0b70 PortalPlayer, Inc. - 00ba iRiver H10 20GB -0b71 SHIN-EI Sangyo Co., Ltd -0b72 Embedded Wireless Technology Co., Ltd -0b73 Computone Corp. -0b75 Roland DG Corp. -0b79 Sunrise Telecom, Inc. -0b7a Zeevo, Inc. - 07d0 Bluetooth Dongle -0b7b Taiko Denki Co., Ltd -0b7c ITRAN Communications, Ltd -0b7d Astrodesign, Inc. -0b84 Rextron Technology, Inc. -0b85 Elkat Electronics, Sdn., Bhd. -0b86 Exputer Systems, Inc. - 5100 XMC5100 Zippy Drive - 5110 XMC5110 Flash Drive - 5200 XMC5200 Zippy Drive - 5201 XMC5200 Zippy Drive - 5202 XMC5200 Zippy Drive - 5280 XMC5280 Storage Drive - fff0 ISP5200 Debugger -0b87 Plus-One I & T, Inc. -0b88 Sigma Koki Co., Ltd, Technology Center -0b89 Advanced Digital Broadcast, Ltd -0b95 ASIX Electronics Corp. - 1720 10/100 Ethernet - 1780 AX88178 - 7720 AX88772 -0b96 Sewon Telecom -0b97 O2 Micro, Inc. - 7732 Smart Card Reader - 7761 Oz776 1.1 Hub - 7762 Oz776 SmartCard Reader - 7772 OZ776 CCID Smartcard Reader -0b98 Playmates Toys, Inc. -0b99 Audio International, Inc. -0b9b Dipl.-Ing. Stefan Kunde - 4012 Reflex RC-controller Interface -0b9d Softprotec Co. -0b9f Chippo Technologies -0baf U.S. Robotics - 00e5 USR6000 - 00eb USR1120 802.11b Adapter - 00ec 56K Faxmodem - 00f1 SureConnect ADSL ATM Adapter - 00f2 SureConnect ADSL Loader - 00f5 SureConnect ADSL ATM Adapter - 00f6 SureConnect ADSL Loader - 00f7 SureConnect ADSL ATM Adapter - 00f8 SureConnect ADSL Loader - 00f9 SureConnect ADSL ATM Adapter - 00fa SureConnect ADSL Loader - 00fb SureConnect ADSL Ethernet/USB Router - 0118 U5 802.11g Adapter - 011b Wireless MAXg Adapter - 0121 USR5423 WLAN - 6112 FaxModem Model 5633 -0bb0 Concord Camera Corp. - 0100 Sound Vision Stream - 5007 3340z/Rollei DC3100 -0bb1 Infinilink Corp. -0bb2 Ambit Microsystems Corp. - 0302 WLAN - 6098 USB Cable Modem -0bb3 Ofuji Technology -0bb4 High Tech Computer Corp. - 00ce mmO2 XDA GSM/GPRS Pocket PC - 00cf SPV C500 Smart Phone - 0a01 PocketPC Sync - 0a02 Himalaya GSM/GPRS Pocket PC - 0a03 PocketPC Sync - 0a04 PocketPC Sync - 0a05 PocketPC Sync - 0a06 PocketPC Sync - 0a07 Magician PocketPC SmartPhone / O2 XDA - 0a08 PocketPC Sync - 0a09 PocketPC Sync - 0a0a PocketPC Sync - 0a0b PocketPC Sync - 0a0c PocketPC Sync - 0a0d PocketPC Sync - 0a0e PocketPC Sync - 0a0f PocketPC Sync - 0a10 PocketPC Sync - 0a11 PocketPC Sync - 0a12 PocketPC Sync - 0a13 PocketPC Sync - 0a14 PocketPC Sync - 0a15 PocketPC Sync - 0a16 PocketPC Sync - 0a17 PocketPC Sync - 0a18 PocketPC Sync - 0a19 PocketPC Sync - 0a1a PocketPC Sync - 0a1b PocketPC Sync - 0a1c PocketPC Sync - 0a1d PocketPC Sync - 0a1e PocketPC Sync - 0a1f PocketPC Sync - 0a20 PocketPC Sync - 0a21 PocketPC Sync - 0a22 PocketPC Sync - 0a23 PocketPC Sync - 0a24 PocketPC Sync - 0a25 PocketPC Sync - 0a26 PocketPC Sync - 0a27 PocketPC Sync - 0a28 PocketPC Sync - 0a29 PocketPC Sync - 0a2a PocketPC Sync - 0a2b PocketPC Sync - 0a2c PocketPC Sync - 0a2d PocketPC Sync - 0a2e PocketPC Sync - 0a2f PocketPC Sync - 0a30 PocketPC Sync - 0a31 PocketPC Sync - 0a32 PocketPC Sync - 0a33 PocketPC Sync - 0a34 PocketPC Sync - 0a35 PocketPC Sync - 0a36 PocketPC Sync - 0a37 PocketPC Sync - 0a38 PocketPC Sync - 0a39 PocketPC Sync - 0a3a PocketPC Sync - 0a3b PocketPC Sync - 0a3c PocketPC Sync - 0a3d PocketPC Sync - 0a3e PocketPC Sync - 0a3f PocketPC Sync - 0a40 PocketPC Sync - 0a41 PocketPC Sync - 0a42 PocketPC Sync - 0a43 PocketPC Sync - 0a44 PocketPC Sync - 0a45 PocketPC Sync - 0a46 PocketPC Sync - 0a47 PocketPC Sync - 0a48 PocketPC Sync - 0a49 PocketPC Sync - 0a4a PocketPC Sync - 0a4b PocketPC Sync - 0a4c PocketPC Sync - 0a4d PocketPC Sync - 0a4e PocketPC Sync - 0a4f PocketPC Sync - 0a50 HTC SmartPhone Sync - 0a51 SPV C400 / T-Mobile SDA GSM/GPRS Pocket PC - 0a52 SmartPhone Sync - 0a53 SmartPhone Sync - 0a54 SmartPhone Sync - 0a55 SmartPhone Sync - 0a56 SmartPhone Sync - 0a57 SmartPhone Sync - 0a58 SmartPhone Sync - 0a59 SmartPhone Sync - 0a5a SmartPhone Sync - 0a5b SmartPhone Sync - 0a5c SmartPhone Sync - 0a5d SmartPhone Sync - 0a5e SmartPhone Sync - 0a5f SmartPhone Sync - 0a60 SmartPhone Sync - 0a61 SmartPhone Sync - 0a62 SmartPhone Sync - 0a63 SmartPhone Sync - 0a64 SmartPhone Sync - 0a65 SmartPhone Sync - 0a66 SmartPhone Sync - 0a67 SmartPhone Sync - 0a68 SmartPhone Sync - 0a69 SmartPhone Sync - 0a6a SmartPhone Sync - 0a6b SmartPhone Sync - 0a6c SmartPhone Sync - 0a6d SmartPhone Sync - 0a6e SmartPhone Sync - 0a6f SmartPhone Sync - 0a70 SmartPhone Sync - 0a71 SmartPhone Sync - 0a72 SmartPhone Sync - 0a73 SmartPhone Sync - 0a74 SmartPhone Sync - 0a75 SmartPhone Sync - 0a76 SmartPhone Sync - 0a77 SmartPhone Sync - 0a78 SmartPhone Sync - 0a79 SmartPhone Sync - 0a7a SmartPhone Sync - 0a7b SmartPhone Sync - 0a7c SmartPhone Sync - 0a7d SmartPhone Sync - 0a7e SmartPhone Sync - 0a7f SmartPhone Sync - 0a80 SmartPhone Sync - 0a81 SmartPhone Sync - 0a82 SmartPhone Sync - 0a83 SmartPhone Sync - 0a84 SmartPhone Sync - 0a85 SmartPhone Sync - 0a86 SmartPhone Sync - 0a87 SmartPhone Sync - 0a88 SmartPhone Sync - 0a89 SmartPhone Sync - 0a8a SmartPhone Sync - 0a8b SmartPhone Sync - 0a8c SmartPhone Sync - 0a8d SmartPhone Sync - 0a8e SmartPhone Sync - 0a8f SmartPhone Sync - 0a90 SmartPhone Sync - 0a91 SmartPhone Sync - 0a92 SmartPhone Sync - 0a93 SmartPhone Sync - 0a94 SmartPhone Sync - 0a95 SmartPhone Sync - 0a96 SmartPhone Sync - 0a97 SmartPhone Sync - 0a98 SmartPhone Sync - 0a99 SmartPhone Sync - 0a9a SmartPhone Sync - 0a9b SmartPhone Sync - 0a9c SmartPhone Sync - 0a9d SmartPhone Sync - 0a9e SmartPhone Sync - 0a9f SmartPhone Sync - 0b04 Hermes / TyTN / T-Mobile MDA Vario II / O2 Xda Trion - 0b06 Athena / Advantage x7500 / Dopod U1000 / T-Mobile AMEO - 0b0c Elf / Touch / P3450 / T-Mobile MDA Touch / O2 Xda Nova / Dopod S1 - 0bce Vario MDA -0bb5 Murata Manufacturing Co., Ltd -0bb6 Network Alchemy -0bb7 Joytech Computer Co., Ltd -0bb8 Hitachi Semiconductor and Devices Sales Co., Ltd -0bb9 Eiger M&C Co., Ltd -0bba ZAccess Systems -0bbb General Meters Corp. -0bbc Assistive Technology, Inc. -0bbd System Connection, Inc. -0bc0 Knilink Technology, Inc. -0bc1 Fuw Yng Electronics Co., Ltd -0bc2 Seagate RSS LLC - 2000 Storage Adapter V3 (TPP) -0bc3 IPWireless, Inc. -0bc4 Microcube Corp. -0bc5 JCN Co., Ltd -0bc6 ExWAY, Inc. -0bc7 X10 Wireless Technology, Inc. - 0001 ActiveHome (ACPI-compliant) - 0002 Firecracker Interface (ACPI-compliant) - 0003 VGA Video Sender (ACPI-compliant) - 0004 X10 Receiver - 0005 Wireless Transceiver (ACPI-compliant) - 0006 Wireless Transceiver (ACPI-compliant) - 0007 Wireless Transceiver (ACPI-compliant) - 0008 Wireless Transceiver (ACPI-compliant) - 0009 Wireless Transceiver (ACPI-compliant) - 000a Wireless Transceiver (ACPI-compliant) - 000b Transceiver (ACPI-compliant) - 000c Transceiver (ACPI-compliant) - 000d Transceiver (ACPI-compliant) - 000e Transceiver (ACPI-compliant) - 000f Transceiver (ACPI-compliant) -0bc8 Telmax Communications -0bc9 ECI Telecom, Ltd -0bca Startek Engineering, Inc. -0bcb Perfect Technic Enterprise Co., Ltd -0bd7 Andrew Pargeter & Associates - a021 Amptek DP4 multichannel signal analyzer -0bda Realtek Semiconductor Corp. - 0103 USB 2.0 Card Reader - 0104 Mass Storage Device - 0106 Mass Storage Device - 0107 Mass Storage Device - 0108 Mass Storage Device - 0111 Card Reader - 0113 Mass Storage Device - 0115 Mass Storage Device - 0116 Mass Storage Device - 0117 Mass Storage Device - 0118 Mass Storage Device - 0151 Mass Stroage Device - 0152 Mass Stroage Device - 0153 Mass Stroage Device - 0156 Mass Stroage Device - 0157 Mass Stroage Device - 0158 Mass Stroage Device - 0161 Mass Stroage Device - 0168 Mass Stroage Device - 0169 Mass Stroage Device - 0171 Mass Stroage Device - 0176 Mass Stroage Device - 0178 Mass Stroage Device - 2831 2831U Device - 8150 RTL8150 Fast Ethernet Adapter - 8151 RTL8151 Adapteon Business Mobile Networks BV - 8187 RTL8187 Wireless Adapter - 8189 RTL8187B Wireless 802.11g 54Mbps Network Adapter - 8197 RTL8187B Wireless Adapter -0bdb Ericsson Business Mobile Networks BV - 1000 BV Bluetooth Device - 1002 Bluetooth Device 1.2 -0bdc Y Media Corp. -0bdd Orange PCS -0be2 Kanda Tsushin Kogyo Co., Ltd -0be3 TOYO Corp. -0be4 Elka International, Ltd -0be5 DOME imaging systems, Inc. -0be6 Dong Guan Humen Wonderful Wire Cable Factory -0bee LTK Industries, Ltd -0bef Way2Call Communications -0bf0 Pace Micro Technology PLC -0bf1 Intracom S.A. - 0001 netMod Driver Ver 2.4.17 (CAPI) - 0002 netMod Driver Ver 2.4 (CAPI) - 0003 netMod Driver Ver 2.4 (CAPI) -0bf2 Konexx -0bf6 Addonics Technologies, Inc. - 0103 Storage Device - 1234 Storage Device - a000 Cable 205 (TPP) - a001 Cable 205 - a002 IDE Bridge -0bf7 Sunny Giken, Inc. -0bf8 Fujitsu Siemens Computers - 1001 Fujitsu Pocket Loox 600 PDA -0c04 MOTO Development Group, Inc. -0c05 Appian Graphics -0c06 Hasbro Games, Inc. -0c07 Infinite Data Storage, Ltd -0c08 Agate - 0378 Q 16MB Storage Device -0c09 Comjet Information System - a5a5 Litto Version USB2.0 -0c0a Highpoint Technologies, Inc. -0c0b Dura Micro, Inc. (Acomdata) - 27cb 6-in-1 Flash Reader and Writer - 27d7 Multi Memory reader/writer MD-005 - 27da Multi Memory reader/writer MD-005 - 27dc Multi Memory reader/writer MD-005 - 27e7 3,5'' HDD case MD-231 - 27ee 3,5'' HDD case MD-231 - 2814 3,5'' HDD case MD-231 - 2815 3,5'' HDD case MD-231 - 281d 3,5'' HDD case MD-231 - a109 CF/SM Reader and Writer - a10c SD/MS Reader and Writer - b001 USB 2.0 Mass Storage IDE adapter - b004 MMC/SD Reader and Writer -0c12 Zeroplus - 0005 PSX Vibration Feedback Converter - 8809 Red Octane Ignition Xbox DDR Pad -0c15 Iris Graphics -0c16 Gyration, Inc. - 0080 eHome Infrared Receiver - 0081 eHome Infrared Receiver -0c17 Cyberboard A/S -0c18 SynerTek Korea, Inc. -0c19 cyberPIXIE, Inc. -0c1a Silicon Motion, Inc. -0c1b MIPS Technologies -0c1c Hang Zhou Silan Electronics Co., Ltd -0c22 Tally Printer Corp. -0c23 Lernout + Hauspie -0c24 Taiyo Yuden - 0001 Bluetooth Adaptor - 0002 Bluetooth Device2 - 0005 Bluetooth Device(BC04-External) - 000b Bluetooth Device(BC04-External) - 000c Bluetooth Adaptor - 000e Bluetooth Device(BC04-External) - 000f Bluetooth Driver (V2.0+EDR) - 0010 Bluetooth Device(BC04-External) - 0012 Bluetooth Device(BC04-External) - 0018 Bluetooth Device(BC04-External) - 0019 Bluetooth Device - 0c24 Bluetooth Device(SAMPLE) - ffff Bluetooth module with BlueCore in DFU mode -0c25 Sampo Corp. - 0310 Scream Cam -0c27 RFIDeas, Inc - 3bfa pcProx Card Reader -0c2e Metro - 0200 Metrologic Scanner -0c35 Eagletron, Inc. -0c36 E Ink Corp. -0c37 e.Digital -0c38 Der An Electric Wire & Cable Co., Ltd -0c39 IFR -0c3a Furui Precise Component (Kunshan) Co., Ltd -0c3b Komatsu, Ltd -0c3c Radius Co., Ltd -0c3d Innocom, Inc. -0c3e Nextcell, Inc. -0c44 Motorola iDEN - 0021 iDEN P2k0 Device - 0022 iDEN P2k1 Device - 03a2 iDEN Smartphone -0c45 Microdia - 1020 Mass Storage Reader - 1028 Mass Storage Reader - 1030 Mass Storage Reader - 1031 Sonix Mass Storage Device - 1032 Mass Storage Reader - 1033 Sonix Mass Storage Device - 1034 Mass Storage Reader - 1035 Mass Storage Reader - 1036 Mass Storage Reader - 1037 Sonix Mass Storage Device - 1050 CF Card Reader - 1058 HDD Reader - 1060 iFlash SM-Direct Card Reader - 1061 Mass Storage Reader - 1062 Mass Storage Reader - 1063 Sonix Mass Storage Device - 1064 Mass Storage Reader - 1065 Mass Storage Reader - 1066 Mass Storage Reader - 1067 Mass Storage Reader - 1158 A56AK - 184c VoIP Phone - 6001 Genius VideoCAM NB - 6005 Sweex Mini WebCam - 6007 VideoCAM Eye - 6009 VideoCAM ExpressII - 600d TwinkleCam USB camera - 6011 PC Camera (SN9C102) - 6019 PC Camera (SN9C102) - 6024 VideoCAM ExpressII - 6025 VideoCAM ExpressII - 6028 Typhoon Easycam USB 330K (older) - 6029 Triplex i-mini PC Camera - 602a Meade ETX-105EC Camera - 602b VideoCAM NB 300 - 602c Clas Ohlson TWC-30XOP WebCam - 602d VideoCAM ExpressII - 602e VideoCAM Messenger - 6030 VideoCAM ExpressII - 603f VideoCAM ExpressII - 6040 CCD PC Camera (PC390A) - 606a CCD PC Camera (PC390A) - 607a CCD PC Camera (PC390A) - 607b Win2 PC Camera - 607c CCD PC Camera (PC390A) - 607e CCD PC Camera (PC390A) - 6080 Audio (Microphone) - 6082 VideoCAM Look - 6083 VideoCAM Look - 608c VideoCAM Look - 608e VideoCAM Look - 608f VideoCAM Look - 60a8 VideoCAM Look - 60aa VideoCAM Look - 60ab PC Camera - 60af VideoCAM Look - 60b0 Genius VideoCam Look - 60c0 PC Camera with Mic (SN9C105) - 60c8 Win2 PC Camera - 60cc Composite Device - 60ec Composite Device - 60ef Win2 PC Camera - 60fa PC Camera with Mic (SN9C105) - 60fb Composite Device - 60fc PC Camera with Mic (SN9C105) - 60fe Audio (Microphone) - 6108 Win2 PC Camera - 6122 PC Camera (SN9C110) - 6123 PC Camera (SN9C110) - 612a PC Camera (SN9C110) - 612c PC Camera (SN9C110) - 612e PC Camera (SN9C110) - 612f PC Camera (SN9C110) - 6130 PC Camera (SN9C120) - 6138 Win2 PC Camera - 613a PC Camera (SN9C120) - 613b Win2 PC Camera - 613c PC Camera (SN9C120) - 613e PC Camera (SN9C120) - 6240 PC Camera (SN9C201) - 6242 PC Camera (SN9C201) - 6243 PC Camera (SN9C201) - 6248 PC Camera (SN9C201) - 624b PC Camera (SN9C201) - 624c PC Camera (SN9C201) - 624e PC Camera (SN9C201) - 624f PC Camera (SN9C201) - 6260 PC Camera (SN9C201) - 6270 U-CAM PC Camera NE878 - 627a PC Camera (SN9C201) - 627b PC Camera (SN9C201) - 627c PC Camera (SN9C201) - 627f PC Camera (SN9C201) - 6280 Composite Device - 6282 Audio (Microphone) - 6283 Audio (Microphone) - 6288 Audio (Microphone) - 628a Composite Device - 628b PC Camera (SN9C202) - 628c PC Camera (SN9C202) - 628e Composite Device - 628f Composite Device - 62a0 Audio (Microphone) - 62b0 Audio (Microphone) - 62ba PC Camera (SN9C202) - 62bb PC Camera (SN9C202) - 62bc Composite Device - 62c0 Pavilion Webcam - 8000 DC31VC - 8006 Dual Mode Camera (8006 VGA) - 800a Vivitar Vivicam3350B -0c46 WaveRider Communications, Inc. -0c4b Reiner SCT Kartensysteme GmbH - 0100 cyberJack e-com/pinpad - 0300 cyberJack pinpad(a) -0c52 Sealevel Systems, Inc. - 2101 Serial Converter -0c53 ViewPLUS, Inc. -0c54 Glory, Ltd -0c55 Spectrum Digital, Inc. - 0510 Spectrum Digital XDS510 JTAG Debugger - 0540 SPI540 - 5416 TMS320C5416 DSK - 6416 TMS320C6416 DDB -0c56 Billion Bright, Ltd -0c57 Imaginative Design Operation Co., Ltd -0c58 Vidar Systems Corp. -0c59 Dong Guan Shinko Wire Co., Ltd -0c5a TRS International Mfg., Inc. -0c5e Xytronix Research & Design -0c62 Chant Sincere Co., Ltd -0c63 Toko, Inc. -0c64 Signality System Engineering Co., Ltd -0c65 Eminence Enterprise Co., Ltd -0c66 Rexon Electronics Corp. -0c67 Concept Telecom, Ltd -0c70 MCT Elektronikladen - 0000 USB08 Development board -0c74 Optronic Laboratories Inc. - 0002 OL 700-30 Goniometer -0c76 JMTek, LLC. - 0001 Mass Storage Controller - 0002 Mass Storage Controller - 0003 USBdisk - 0004 Mass Storage Controller - 0005 Transcend USB Flash disk - 0006 Transcend JetFlash - 0007 Mass Storage Device -0c77 Sipix Group, Ltd - 1001 SiPix Web2 - 1002 SiPix SC2100 - 1010 SiPix Snap - 1011 SiPix Blink 2 - 1015 SiPix CAMeleon -0c78 Detto Corp. -0c79 NuConnex Technologies Pte., Ltd -0c7a Wing-Span Enterprise Co., Ltd -0c86 NDA Technologies, Inc. -0c88 Kyocera Wireless Corp. - 0021 Handheld - 17da Qualcomm Kyocera CDMA Technologies MSM -0c89 Honda Tsushin Kogyo Co., Ltd -0c8a Pathway Connectivity, Inc. -0c8b Wavefly Corp. -0c8c Coactive Networks -0c8d Tempo -0c8e Cesscom Co., Ltd - 6000 Luxian Series -0c8f Applied Microsystems -0c98 Berkshire Products, Inc. - 1140 USB PC Watchdog -0c99 Innochips Co., Ltd -0c9a Hanwool Robotics Corp. -0c9b Jobin Yvon, Inc. -0c9d SemTek - 0170 3873 Manual Insert card reader -0ca2 Zyfer -0ca3 Sega Corp. -0ca4 ST&T Instrument Corp. -0ca5 BAE Systems Canada, Inc. -0ca6 Castles Technology Co., Ltd - 0010 EZUSB PC/SC Smart Card Reader - 0050 EZ220PU Reader Controller - 1077 Bludrive Family Smart Card Reader - 107e Reader Controller - 2010 myPad110 PC/SC Smart Card Reader -0ca7 Information Systems Laboratories -0cad Motorola CGISS - 9001 PowerPad Pocket PC Device -0cae Ascom Business Systems, Ltd -0caf Buslink - 2507 Hi-Speed USB-to-IDE Bridge Controller - 2515 Flash Disk Embedded Hub - 2516 Flash Disk Security Device - 2517 Flash Disk Mass Storage Device - 25c7 Hi-Speed USB-to-IDE Bridge Controller - 3a00 Hard Drive - 3a20 Mass Storage Device - 3acd Mass Storage Device -0cb0 Flying Pig Systems -0cb1 Innovonics, Inc. -0cb6 Celestix Networks, Pte., Ltd -0cb7 Singatron Enterprise Co., Ltd -0cb8 Opticis Co., Ltd -0cba Trust Electronic (Shanghai) Co., Ltd -0cbb Shanghai Darong Electronics Co., Ltd -0cbc Palmax Technology Co., Ltd - 0101 Pocket PC P6C - 0201 Personal Digital Assistant - 0301 Personal Digital Assistant P6M+ - 0401 Pocket PC -0cbd Pentel Co., Ltd (Electronics Equipment Div.) -0cbe Keryx Technologies, Inc. -0cbf Union Genius Computer Co., Ltd -0cc0 Kuon Yi Industrial Corp. -0cc1 Given Imaging, Ltd -0cc2 Timex Corp. -0cc3 Rimage Corp. -0cc4 emsys GmbH -0cc5 Sendo -0cc6 Intermagic Corp. -0cc7 Kontron Medical AG -0cc8 Technotools Corp. -0cc9 BroadMAX Technologies, Inc. -0cca Amphenol -0ccb SKNet Co., Ltd -0ccc Domex Technology Corp. -0ccd TerraTec Electronic GmbH - 0012 PHASE 26 - 0013 PHASE 26 - 0014 PHASE 26 - 0015 Flash Update for TerraTec PHASE 26 - 0021 Cameo Grabster 200 - 0023 Mystify Claw - 0028 Aureon 5.1 MkII - 0032 MIDI HUBBLE - 0035 Miditech Play'n Roll - 0036 Cinergy 250 Audio - 0037 Cinergy 250 Audio - 0038 Cinergy T^2 DVB-T Receiver - 0039 Grabster AV 400 - 003b Cinergy 400 - 003c Grabster AV 250 - 0042 Cinergy Hybrid T XS - 0043 Cinergy T XS - 004e Cinergy T XS - 004f Cinergy Analog XS - 005c Cinergy T² - 0069 Cinergy T XE DVB-T Receiver -0cd4 Bang Olufsen - 0101 BeolinkPC2 -0cd7 NewChip S.r.l. -0cd8 JS Digitech, Inc. - 2007 Smart Card Reader/JSTU-9700 -0cd9 Hitachi Shin Din Cable, Ltd -0cde Z-Com - 0001 M4Y-750 - 0002 XI-725/726 Prism2.5 802.11b Adapter - 0003 Sagem 802.11b Dongle - 0004 Sagem 802.11b Dongle - 0005 XI-735 Prism3 802.11b Adapter - 0006 Medion 40900 802.11b Adapter - 0008 Sitecom Wireless Network Adapter 100G+ WL-125 - 0009 (ZD1211)IEEE 802.11b+g Adapter - 0011 ZD1211 - 0012 AR5523 - 0013 AR5523 driver (no firmware) - 0014 NB 802.11g Wireless LAN Adapter(3887A) - 0015 Zoom Wireless-G - 0016 NB 802.11g Wireless LAN Adapter(3887A) - 0018 NB 802.11a/b/g Wireless LAN Adapter(3887A) - 001a ZD1211B - 001c 802.11b/g Wireless Network Adapter - 0020 Wi-Fi Wireless LAN Adapter - 0022 802.11b/g/n Wireless Network Adapter -0ce9 pico Technology - 1001 PicoScope3204 -0cf1 e-Conn Electronic Co., Ltd -0cf2 ENE Technology, Inc. -0cf3 Atheros Communications, Inc. - 0001 AR5523 - 0002 AR5523 (no firmware) - 0003 AR5523 - 0004 AR5523 (no firmware) - 0005 AR5523 - 0006 AR5523 (no firmware) -0cf4 Fomtex Corp. -0cf5 Cellink Co., Ltd -0cf6 Compucable Corp. -0cf7 ishoni Networks -0cf8 Clarisys, Inc. - 0750 Claritel-i750 - vp -0cf9 Central System Research Co., Ltd -0cfa Inviso, Inc. -0cfc Minolta-QMS, Inc. -0cff SAFA MEDIA Co., Ltd. - 0320 SR-380N -0d06 telos EDV Systementwicklung GmbH -0d08 UTStarcom - 0602 DV007 [serial] - 0603 DV007 [storage] -0d0b Contemporary Controls -0d0c Astron Electronics Co., Ltd -0d0d MKNet Corp. -0d0e Hybrid Networks, Inc. -0d0f Feng Shin Cable Co., Ltd -0d10 Elastic Networks - 0001 StormPort (WDM) -0d11 Maspro Denkoh Corp. -0d12 Hansol Electronics, Inc. -0d13 BMF Corp. -0d14 Array Comm, Inc. -0d15 OnStream b.v. -0d16 Hi-Touch Imaging Technologies Co., Ltd - 0001 PhotoShuttle - 0002 Photo Printer 730 series - 0004 Photo Printer 63xPL/PS - 0100 Photo Printer 63xPL/PS - 0102 Photo Printer 64xPS - 0103 Photo Printer 730 series - 0104 Photo Printer 63xPL/PS - 0105 Photo Printer 64xPS - 0200 Photo Printer 64xDL -0d17 NALTEC, Inc. -0d18 coaXmedia -0d19 Hank Connection Industrial Co., Ltd -0d32 Leo Hui Electric Wire & Cable Co., Ltd -0d33 AirSpeak, Inc. -0d34 Rearden Steel Technologies -0d35 Dah Kun Co., Ltd -0d3a Posiflex Technologies, Inc. -0d3c Sri Cable Technology, Ltd -0d3d Tangtop Technology Co., Ltd - 0001 HID Keyboard -0d3e Fitcom, inc. -0d3f MTS Systems Corp. -0d40 Ascor, Inc. -0d41 Ta Yun Terminals Industrial Co., Ltd -0d42 Full Der Co., Ltd -0d46 Kobil Systems GmbH - 2012 KAAN Standard Plus (Smartcard reader) - 3003 mIDentity Light / KAAN SIM III - 4000 mIDentity (mass storage) - 4001 mIDentity Basic/Classic (composite device) - 4081 mIDentity Basic/Classic (installationless) -0d49 Maxtor - 3000 Drive - 3010 3000LE Drive - 3100 Hi-Speed USB-IDE Bridge Controller - 5000 5000XT Drive - 5010 5000LE Drive - 5020 Mobile Hard Disk Drive - 7000 OneTouch - 7010 OneTouch -0d4a NF Corp. -0d4b Grape Systems, Inc. -0d4c Tedas AG -0d4d Coherent, Inc. -0d4e Agere Systems Netherland BV - 047a WLAN Card - 1000 Wireless Card Model 0801 - 1001 Wireless Card Model 0802 -0d4f EADS Airbus France -0d50 Cleware GmbH - 0011 USB-Temp2 Thermometer -0d51 Volex (Asia) Pte., Ltd -0d53 HMI Co., Ltd -0d54 Holon Corp. -0d55 ASKA Technologies, Inc. -0d56 AVLAB Technology, Inc. -0d57 Solomon Microtech, Ltd -0d5c Belkin - a002 F5D6050 802.11b Adapter -0d5e Myacom, Ltd - 2346 BT Digital Access adapter -0d5f CSI, Inc. -0d60 IVL Technologies, Ltd -0d61 Meilu Electronics (Shenzhen) Co., Ltd -0d62 Darfon Electronics Corp. - 0003 Smartcard Reader - 0004 Filter Driver - 0306 M530 Mouse - 0800 Magic Wheel - 2021 AM805 Keyboard - 2026 TECOM Bluetooth Device - a100 Benq Mouse -0d63 Fritz Gegauf AG -0d64 DXG Technology Corp. - 0105 Dual Mode Digital Camera 1.3M - 0107 Horus MT-409 Camera - 0108 Dual Mode Digital Camera - 0202 Dual Mode Video Camera Device - 0303 DXG-305V Camera - 1001 SiPix Stylecam/UMAX AstraPix 320s - 1002 Fashion Cam 01 Dual-Mode DSC (Video Camera) - 1003 Fashion Cam Dual-Mode DSC (Controller) - 1021 D-Link DSC 350F - 1208 Dual Mode Still Camera Device - 2208 Mass Storage - 3105 Dual Mode Digital Camera Disk - 3108 Digicam Mass Storage Device -0d65 KMJP Co., Ltd -0d66 TMT -0d67 Advanet, Inc. -0d68 Super Link Electronics Co., Ltd -0d69 NSI -0d6a Megapower International Corp. -0d6b And-Or Logic -0d70 Try Computer Co., Ltd -0d71 Hirakawa Hewtech Corp. -0d72 Winmate Communication, Inc. -0d73 Hit's Communications, Inc. -0d76 MFP Korea, Inc. -0d77 Power Sentry/Newpoint -0d78 Japan Distributor Corp. -0d7a MARX Datentechnik GmbH -0d7b Wellco Technology Co., Ltd -0d7c Taiwan Line Tek Electronic Co., Ltd -0d7d Phison Electronics Corp. - 0100 PS1001/1011/1006/1026 Flash Disk - 0110 Gigabyte FlexDrive - 0120 Disk Pro 64MB - 0124 GIGABYTE Disk - 0240 I/O-Magic/Transcend 6-in-1 Card Reader - 110e NEC uPD720121/130 USB-ATA/ATAPI Bridge - 1240 Apacer 6-in-1 Card Reader 2.0 - 1270 Wolverine SixPac 6000 - 1300 Flash Disk - 1320 PS2031 Flash Disk - 1400 Attache 256MB USB 2.0 Flash Drive - 1420 PS2044 Pen Drive - 1470 Vosonic X's-Drive II+ VP2160 - 1900 USB Thumb Drive -0d7e American Computer & Digital Components - 2507 Hi-Speed USB-to-IDE Bridge Controller - 2517 Hi-Speed Mass Storage Device - 25c7 Hi-Speed USB-to-IDE Bridge Controller -0d7f Essential Reality LLC -0d80 H.R. Silvine Electronics, Inc. -0d81 TechnoVision -0d83 Think Outside, Inc. -0d89 Oz Software -0d8a King Jim Co., Ltd - 0101 TEPRA PRO -0d8b Ascom Telecommunications, Ltd -0d8c C-Media Electronics, Inc. - 0001 Audio Device - 0002 Composite Device - 0003 Sound Device - 0006 Storm HP-USB500 5.1 Headset - 000c Audio Adapter - 000d Composite Device - 000e Audio Adapter (Planet UP-100, Genius G-Talk) - 0102 CM106 Like Sound Device - 0103 Turtle Beach Audio Advantage Micro - 0201 CM6501 - 5000 Mass Storage Controller - 5200 Mass Storage Controller(0D8C,5200) - b213 USB Phone CM109 (aka CT2000,VPT1000) -0d8d Promotion & Display Technology, Ltd - 0234 V-234 Composite Device - 0550 V-550 Composite Device - 0551 V-551 Composite Device - 0552 V-552 Composite Device - 0651 V-651 Composite Device - 0652 V-652 Composite Device - 0653 V-653 Composite Device - 0654 V-654 Composite Device - 0655 V-655 Composite Device - 0656 V-656 Composite Device - 0657 V-657 Composite Device - 0658 V-658 Composite Device - 0659 V-659 Composite Device - 0660 V-660 Composite Device - 0661 V-661 Composite Device - 0662 V-662 Composite Device - 0850 V-850 Composite Device - 0851 V-851 Composite Device - 0852 V-852 Composite Device - 0901 V-901 Composite Device - 0902 V-902 Composite Device - 0903 V-903 Composite Device - 4754 Voyager DMP Composite Device - bb00 Bloomberg Composite Device - bb01 Bloomberg Composite Device - bb02 Bloomberg Composite Device - bb03 Bloomberg Composite Device - bb04 Bloomberg Composite Device - bb05 Bloomberg Composite Device - fffe Global Tuner Composite Device - ffff Voyager DMP Composite Device -0d8e Global Sun Technology, Inc. - 0163 802.11g 54 Mbps Wireless Dongle - 1621 802.11b Wireless Adapter - 3762 802.11g Wireless Mini adapter - 3763 802.11g Wireless dongle - 7100 802.11b Adapter - 7110 WL-210 - 7801 AR5523 - 7802 AR5523 (no firmware) - 7811 AR5523 - 7812 AR5523 (no firmware) - 7a01 PRISM25 802.11b Adapter -0d8f Pitney Bowes -0d90 Sure-Fire Electrical Corp. -0d96 Skanhex Technology, Inc. - 0000 Jenoptik JD350 video - 3300 SX330z Camera - 4100 SX410z Camera - 4102 MD 9700 Camera - 4104 Jenoptik JD-4100z3s - 410a Medion 9801/Novatech SX-410z - 5200 SX-520z Camera -0d97 Santa Barbara Instrument Group - 0001 SBIG Astronomy Camera (without firmware) - 0101 SBIG Astronomy Camera (with firmware) -0d98 Mars Semiconductor Corp. - 0300 Avaya Wireless Card -0d99 Trazer Technologies, Inc. -0d9a RTX Telecom AS - 0001 Bluetooth Device -0d9b Tat Shing Electrical Co. -0d9c Chee Chen Hi-Technology Co., Ltd -0d9d Sanwa Supply, Inc. -0d9e Avaya - 0300 Wireless Card -0d9f Powercom Co., Ltd -0da0 Danger Research -0da1 Suzhou Peter's Precise Industrial Co., Ltd -0da2 Land Instruments International, Ltd -0da3 Nippon Electro-Sensory Devices Corp. -0da4 Polar Electro OY - 0001 Interface -0da7 IOGear, Inc. -0da8 softDSP Co., Ltd - 0001 SDS 200A Oscilloscope -0dab Cubig Group - 0100 DVR/CVR-M140 MP3 Player -0dad Westover Scientific -0db0 Micro Star International - 1020 PC2PC WLAN Card - 1967 Bluetooth Dongle - 4011 Medion Flash XL V2.0 Card Reader - 4600 802.11b/g Turbo Wireless Adapter - 5501 Mass Storage Device - 5502 Mass Storage Device - 5513 MP3 Player - 5515 MP3 Player - 5516 MP3 Player - 6823 UB11B/MS-6823 802.11b Wi-Fi adapter - 6826 IEEE 802.11g Wireless Network Adapter - 6855 Bluetooth Device - 6861 MSI-6861 802.11g WiFi adapter - 6865 RT2570 - 6869 RT2570 - 6874 RT2573 - 6877 RT2573 - 6881 Bluetooth Class I EDR Device - 688a Bluetooth Class I EDR Device - 6970 Bluetooth adapter - 697a Bluetooth Dongle - 6982 Medion Flash XL Card Reader - a861 RT2573 - a874 RT2573 - a970 Bluetooth dongle - a97a Bluetooth EDR Device - b970 Bluetooth EDR Device - b97a Bluetooth EDR Device -0db1 Wen Te Electronics Co., Ltd -0db2 Shian Hwi Plug Parts, Plastic Factory -0db3 Tekram Technology Co., Ltd -0db4 Chung Fu Chen Yeh Enterprise Corp. -0db7 ELCON Systemtechnik - 0002 Goldpfeil P-LAN -0dbe Jiuh Shiuh Precision Industry Co., Ltd -0dbf Quik Tech Solutions - 0002 SmartDongle Security Key - 0200 HDD Storage Solution - 021b USB-2.0 IDE Adapter - 0300 Storage Adapter - 0333 Storage Adapter - 0707 ZIV Drive -0dc0 Great Notions -0dc1 Tamagawa Seiki Co., Ltd -0dc3 Athena Smartcard Solutions, Inc. - 0801 ASEDrive III - 0802 ASEDrive IIIe - 1104 ASEDrive IIIe KB - 1701 ASEKey - 1702 ASEKey -0dc4 Macpower Peripherals, Ltd - 0040 Mass Storage Device - 0041 Mass Storage Device - 0042 Mass Storage Device - 0101 Hi-Speed Mass Storage Device -0dc5 SDK Co., Ltd -0dc6 Precision Squared Technology Corp. -0dc7 First Cable Line, Inc. -0dcd NetworkFab Corp. - 0001 Remote Interface Adapter - 0002 High Bandwidth Codec -0dd0 Access Solutions - 1002 Triple Talk Speech Synthesizer -0dd1 Contek Electronics Co., Ltd -0dd2 Power Quotient International Co., Ltd - 0003 Mass Storage (P) -0dd3 MediaQ -0dd4 Custom Engineering SPA -0dd5 California Micro Devices -0dd7 Kocom Co., Ltd -0dd8 Netac Technology Co., Ltd - 1060 USB-CF-Card - e007 OnlyDisk U222 Pendrive -0dd9 HighSpeed Surfing -0dda Integrated Circuit Solution, Inc. - 0001 Multi-Card Reader 6in1 - 0002 Multi-Card Reader 7in1 - 0003 Flash Disk - 0005 Internal Multi-Card Reader 6in1 - 0008 SD single card reader - 0009 MS single card reader - 000a MS+SD Dual Card Reader - 000b SM single card reader - 0101 All-In-One Card Reader - 0102 All-In-One Card Reader - 0301 MP3 Player - 0302 Multi-Card MP3 Player - 1001 Multi-Flash Disk - 2001 Multi-Card Reader - 2002 Q018 default PID - 2003 Multi-Card Reader - 2005 Datalux DLX-1611 16in1 Card Reader - 2006 All-In-One Card Reader - 2007 USB to ATAPI bridge - 2008 All-In-One Card Reader - 2013 SD/MS Combo Card Reader - 2014 SD/MS Single Card Reader - 2023 card reader SD/MS DEMO board with ICSI brand name (MaskROM version) - 2024 card reader SD/MS DEMO board with Generic brand name (MaskROM version) - 2026 USB2.0 Card Reader - 2027 USB 2.0 Card Reader - 2315 UFD MP3 player (model 2) - 2318 UFD MP3 player (model 1) - 2321 UFD MP3 player -0ddb Tamarack, Inc. -0ddd Datelink Technology Co., Ltd -0dde Ubicom, Inc. -0de0 BD Consumer Healthcare -0dea UTECH Electronic (D.G.) Co., Ltd. -0ded Novasonics -0dee Lifetime Memory Products - 4010 Storage Adapter -0def Full Rise Electronic Co., Ltd -0df6 Sitecom Europe B.V. - 0001 C-Media VOIP Device - 0004 Bluetooth 2.0 Adapter 100m - 0007 Bluetooth 2.0 Adapter 10m - 000b Bluetooth 2.0.USB Adapter DFU - 000d WL-168 Wireless Network Adapter 54g - 0017 WL-182 - 0019 Bluetooth 2.0 adapter 10m CN-512v2 001 - 001a Bluetooth 2.0 adapter 100m CN-521v2 001 - 061c LN-028 - 21f4 44 St Bluetooth Device - 2200 Sitecom bluetooth2.0 class 2 dongle CN-512 - 2208 Sitecom bluetooth2.0 class 2 dongle CN-520 - 2209 Sitecom bluetooth2.0 class 1 dongle CN-521 - 9071 zd1211 802.11g Adapter - 9075 ZD1211B - 90ac WL-172 - 9712 WL-113 rev 2 -0df7 Mobile Action Technology, Inc. - 0620 MA-620 Infrared Adapter - 0700 MA-700 Bluetooth Adapter - 0720 MA-720 Bluetooth Adapter - 0722 Bluetooth Dongle - 0800 Data Cable - 0820 Data Cable - 1800 Generic Card Reader - 1802 Card Reader -0dfa Toyo Communication Equipment Co., Ltd -0dfc GeneralTouch Technology Co., Ltd - 0001 Touchscreen -0e03 Nippon Systemware Co., Ltd -0e08 Winbest Technology Co., Ltd -0e0c Gesytec - 0101 LonUSB LonTalk Network Adapter -0e16 JMTek, LLC -0e17 Walex Electronic, Ltd -0e1b Crewave -0e21 Cowon Systems, Inc. - 0300 iAudio CW200 - 0400 MP3 Player - 0510 iAudio X5 - 0513 iAudio X5, side USB port - 0520 iAudio M5 - 0700 iAudio U3 -0e22 Symbian Ltd. -0e23 Liou Yuane Enterprise Co., Ltd -0e25 VinChip Systems, Inc. -0e26 J-Phone East Co., Ltd -0e30 HeartMath LLC -0e34 Micro Computer Control Corp. -0e35 3Pea Technologies, Inc. -0e36 TiePie engineering - 0008 Handyscope HS3 - 0009 Handyscope HS3 (br) - 000a Handyscope HS4 - 000b Handyscope HS4 (br) - 000e Handyscope HS4 Diff - 000f Handyscope HS4 Diff (br) - 0010 Handyscope HS2 - 0018 Handyprobe HP2 - 0042 TiePieSCOPE HS801 - 00fd USB To Parallel adapter - 00fe USB To Parallel adapter -0e38 Stratitec, Inc. -0e39 Smart Modular Technologies, Inc. - 0137 Bluetooth Device -0e3a Neostar Technology Co., Ltd - 1100 CW-1100 Wireless Network Adapter -0e3b Mansella, Ltd -0e41 Line6, Inc. - 4250 BassPODxt - 4252 BassPODxt Pro - 4642 BassPODxt Live - 4650 PODxt Live - 4750 GuitarPort - 5044 PODxt - 5050 PODxt Pro - 534d SeaMonkey -0e44 Sun-Riseful Technology Co., Ltd. -0e48 Julia Corp., Ltd - 0100 CardPro SmartCard Reader -0e4a Shenzhen Bao Hing Electric Wire & Cable Mfr. Co. -0e4c Radica Games, Ltd -0e55 Speed Dragon Multimedia, Ltd - 110b MS3303H USB-to-Serial Bridge -0e56 Kingston Technology Company, Inc. - 6021 K-PEX 100 -0e5a Active Co., Ltd -0e5b Union Power Information Industrial Co., Ltd -0e5c Bitland Information Technology Co., Ltd - 6118 LCD Device - 6119 remote receive and control device - 6441 C-Media Sound Device -0e5d Neltron Industrial Co., Ltd -0e66 Hawking - 400b UF100 10/100 Network Adapter - 400c UF100 Ethernet [pegasus2] -0e67 Fossil, Inc. - 0002 Wrist PDA -0e6a Megawin Technology Co., Ltd -0e70 Tokyo Electronic Industry Co., Ltd -0e72 Hsi-Chin Electronics Co., Ltd -0e75 TVS Electronics, Ltd -0e79 Archos, Inc. - 1106 Pocket Medai Assistant - PMA400 -0e7b On-Tech Industry Co., Ltd -0e7e Gmate, Inc. - 0001 Yopy 3000 PDA - 1001 YP3X00 PDA -0e82 Ching Tai Electric Wire & Cable Co., Ltd -0e83 Shin An Wire & Cable Co. -0e8c Well Force Electronic Co., Ltd -0e8d MediaTek Inc. -0e8f GreenAsia Inc. - 0012 Joystick -0e90 WiebeTech, LLC - 0100 Storage Adapter V1 -0e91 VTech Engineering Canada, Ltd -0e92 C's Glory Enterprise Co., Ltd -0e93 eM Technics Co., Ltd -0e95 Future Technology Co., Ltd -0e96 Aplux Communications, Ltd - c001 TRUST 380 USB2 SPACEC@M -0e97 Fingerworks, Inc. -0e98 Advanced Analogic Technologies, Inc. -0e99 Parallel Dice Co., Ltd -0e9a TA HSING Industries, Ltd -0e9b ADTEC Corp. -0e9c Streamzap, Inc. - 0000 Streamzap Remote Control -0e9f Tamura Corp. -0ea0 Ours Technology, Inc. - 2126 7-in-1 Card Reader - 2168 Transcend JetFlash 2.0 / Astone USB Drive - 6803 OTI-6803 Flash Disk - 6808 OTI-6808 Flash Disk - 6828 OTI-6828 Flash Disk -0ea6 Nihon Computer Co., Ltd -0ea7 MSL Enterprises Corp. -0ea8 CenDyne, Inc. -0ead Humax Co., Ltd -0eb0 NovaTech - 9020 NovaTech NV-902W - 9021 RT2573 -0eb1 WIS Technologies, Inc. - 6666 WinFast WalkieTV TV Loader - 6668 WinFast WalkieTV TV Loader - 7007 WinFast WalkieTV WDM Capture -0eb2 Y-S Electronic Co., Ltd -0eb3 Saint Technology Corp. -0eb7 Endor AG -0ebe VWeb Corp. -0ebf Omega Technology of Taiwan, Inc. -0ec0 LHI Technology (China) Co., Ltd -0ec1 Abit Computer Corp. -0ec2 Sweetray Industrial, Ltd -0ec3 Axell Co., Ltd -0ec4 Ballracing Developments, Ltd -0ec5 GT Information System Co., Ltd -0ec6 InnoVISION Multimedia, Ltd -0ec7 Theta Link Corp. - 1008 So., Show 301 Digital Camera -0ecd Lite-On IT Corp. - 1400 CD\RW 40X -0ece TaiSol Electronics Co., Ltd -0ecf Phogenix Imaging, LLC -0ed1 WinMaxGroup - 6660 USB Flash Disk 64M-C - 6680 USB Flash Disk 64M-B - 7634 MP3 Player -0ed2 Kyoto Micro Computer Co., Ltd -0ed3 Wing-Tech Enterprise Co., Ltd -0ed5 Fiberbyte - e000 USB-inSync Device - f000 Fiberbyte USB-inSync Device - f201 Fiberbyte USB-inSync DAQ-2500X -0eda Noriake Itron Corp. -0edf e-MDT Co., Ltd - 2060 FID irock! 100 Series -0ee0 Shima Seiki Mfg., Ltd -0ee1 Sarotech Co., Ltd -0ee2 AMI Semiconductor, Inc. -0ee3 ComTrue Technology Corp. - 1000 Image Tank 1.5 -0ee4 Sunrich Technology, Ltd -0eee Digital Stream Technology, Inc. - 8810 Mass Storage Drive -0eef D-WAV Scientific Co., Ltd - 0001 eGalax TouchScreen - 0002 Touchscreen Controller(Professional) -0ef0 Hitachi Cable, Ltd -0ef1 Aichi Micro Intelligent Corp. -0ef2 I/O Magic Corp. -0ef3 Lynn Products, Inc. -0ef4 DSI Datotech -0ef5 PointChips - 2202 Flash Disk - 2366 Flash Disk -0ef6 Yield Microelectronics Corp. -0ef7 SM Tech Co., Ltd (Tulip) -0efd Oasis Semiconductor -0efe Wem Technology, Inc. -0f06 Visual Frontier Enterprise Co., Ltd -0f08 CSL Wire & Plug (Shen Zhen) Co. -0f0c CAS Corp. -0f0d Hori Co., Ltd -0f0e Energy Full Corp. -0f12 Mars Engineering Corp. -0f13 Acetek Technology Co., Ltd -0f19 Oracom Co., Ltd -0f1b Onset Computer Corp. -0f1c Funai Electric Co., Ltd -0f1d Iwill Corp. -0f21 IOI Technology Corp. -0f22 Senior Industries, Inc. -0f23 Leader Tech Manufacturer Co., Ltd -0f24 Flex-P Industries, Snd., Bhd. -0f2d ViPower, Inc. -0f2e Geniality Maple Technology Co., Ltd -0f2f Priva Design Services -0f30 Jess Technology Co., Ltd - 001c PS3 Guitar Controller Dongle - 0110 10-Button Joypad -0f31 Chrysalis Development -0f32 YFC-BonEagle Electric Co., Ltd -0f37 Kokuyo Co., Ltd -0f38 Nien-Yi Industrial Corp. -0f3d Airprime, Incorporated - 0112 CDMA 1xEVDO PC Card, PC 5220 -0f41 RDC Semiconductor Co., Ltd -0f42 Nital Consulting Services, Inc. -0f44 Polhemus - ef11 Patriot (firmware not loaded) - ef12 Patriot - ff11 Liberty (firmware not loaded) - ff12 Liberty -0f4b St. John Technology Co., Ltd -0f4c WorldWide Cable Opto Corp. -0f4d Microtune, Inc. - 1000 Bluetooth Dongle -0f4e Freedom Scientific -0f52 Wing Key Electrical Co., Ltd -0f53 Dongguan White Horse Cable Factory, Ltd -0f54 Kawai Musical Instruments Mfg. Co., Ltd -0f55 AmbiCom, Inc. -0f5c Prairiecomm, Inc. -0f5d NewAge International, LLC - 9455 Compact Drive -0f5f Key Technology Corp. -0f60 NTK, Ltd -0f61 Varian, Inc. -0f62 Acrox Technologies Co., Ltd - 1001 Targus Mini Trackball Optical Mouse -0f68 Kobe Steel, Ltd -0f69 Dionex Corp. -0f6a Vibren Technologies, Inc. -0f6e INTELLIGENT SYSTEMS - 0100 GameBoy Color Emulator - 0201 GameBoy Advance Flash Gang Writer - 0202 GameBoy Advance Capture - 0300 Gamecube DOL Viewer - 0400 NDS Emulator - 0401 NDS UIC - 0402 NDS Writer - 0403 NDS Capture - 0404 NDS Emulator (Lite) -0f73 DFI -0f7c DQ Technology, Inc. -0f7d NetBotz, Inc. -0f7e Fluke Corp. -0f88 VTech Holdings, Ltd - 3012 RT2570 - 3014 ZD1211B -0f8b Yazaki Corp. -0f8c Young Generation International Corp. -0f8d Uniwill Computer Corp. -0f8e Kingnet Technology Co., Ltd -0f8f Soma Networks -0f97 CviLux Corp. -0f98 CyberBank Corp. -0f9c Hyun Won, Inc. - 0301 M-Any Premium DAH-610 MP3/WMA Player - 0332 mobiBLU DAH-1200 MP3/Ogg Player -0f9e Lucent Technologies -0fa3 Starconn Electronic Co., Ltd -0fa4 ATL Technology -0fa5 Sotec Co., Ltd -0fa7 Epox Computer Co., Ltd -0fa8 Logic Controls, Inc. -0faf Winpoint Electronic Corp. -0fb0 Haurtian Wire & Cable Co., Ltd -0fb1 Inclose Design, Inc. -0fb2 Juan-Chern Industrial Co., Ltd -0fb8 Wistron Corp. - 0002 eHome Infrared Receiver -0fb9 AACom Corp. -0fba San Shing Electronics Co., Ltd -0fbb Bitwise Systems, Inc. -0fc1 Mitac Internatinal Corp. -0fc2 Plug and Jack Industrial, Inc. -0fc5 Delcom Engineering - 1222 I/O Development Board -0fc6 Dataplus Supplies, Inc. -0fca Research In Motion, Ltd. - 0001 Blackberry Handheld -0fce Sony Ericsson Mobile Communications AB - 1010 WMC Modem - d008 V800-Vodafone 802SE WMC Modem - d016 K750i Phone - d017 K608i Phone - d019 VDC EGPRS Modem - d025 520 WMC Data Modem - d038 W850i Phone - d041 K510i Phone - d042 W810i Phone - d046 K610i Phone -0fcf Dynastream Innovations, Inc. -0fd0 Tulip Computers B.V. -0fd1 Giant Electronics Ltd. -0fd4 Tenovis GmbH & Co., KG -0fd5 Direct Access Technology, Inc. -0fdc Micro Plus -0fe4 IN-Tech Electronics, Ltd -0fe5 Greenconn (U.S.A.), Inc. -0fe9 DVICO - db00 FusionHDTV DVB-T (MT352+LgZ201) (uninitialized) - db01 FusionHDTV DVB-T (MT352+LgZ201) (initialized) - db10 FusionHDTV DVB-T (MT352+Thomson7579) (uninitialized) - db11 FusionHDTV DVB-T (MT352+Thomson7579) (initialized) -0fea United Computer Accessories -0feb CRS Electronic Co., Ltd -0fec UMC Electronics Co., Ltd -0fed Access Co., Ltd -0fee Xsido Corp. -0fef MJ Research, Inc. -0ff6 Core Valley Co., Ltd -0ff7 CHI SHING Computer Accessories Co., Ltd -0fff Aopen, Inc. -1000 Speed Tech Corp. -1001 Ritronics Components (S) Pte., Ltd -1003 Sigma Corp. - 0100 Sigma SD10 -1004 LG Electronics, Inc. - 1fae U8120 3G Cellphone - 6000 VX4400/VX6000 Cellphone - 6005 T5100 - 6800 CDMA Modem - 7000 LG LDP-7024D(LD)USB -1005 Apacer Technology, Inc. - 1001 MP3 Player - 1004 MP3 Player - 1006 MP3 Player - b113 Handy Steno 2.0/HT203 - b223 CD-RW + 6 in 1 Card Reader Digital Storage / Converter -1006 iRiver, Ltd. - 3001 iHP-100 - 3002 iHP-120/140 MP3 Player - 3003 H320/H340 - 3004 H340 (mtp) -1009 Emuzed, Inc. - 000e eHome Infrared Receiver - 0013 Angel MPEG Device - 0015 Lumanate Wave PAL SECAM DVBT Device - 0016 Lumanate Wave NTSC/ATSC Combo Device -100a AV Chaseway, Ltd - 2402 MP3 Player - 2404 MP3 Player - 2405 MP3 Player - 2406 MP3 Player - a0c0 MP3 Player -100b Chou Chin Industrial Co., Ltd -100d Netopia, Inc. - 3342 Cayman 3352 DSL Modem - 3382 3380 Series Network Interface - cb01 Cayman 3341 Ethernet DSL Router -1010 Fukuda Denshi Co., Ltd -1011 Mobile Media Tech. - 0001 AccFast Mp3 -1012 SDKM Fibres, Wires & Cables Berhad -1013 TST-Touchless Sensor Technology AG -1014 Densitron Technologies PLC -1015 Softronics Pty., Ltd -1016 Xiamen Hung's Enterprise Co., Ltd -1017 Speedy Industrial Supplies, Pte., Ltd -1019 Elitegroup Computer Systems (ECS) - 0c55 USB Flash Reader, Desknote UCR-61S2B -1020 Labtec - 000a Wireless Optical Mouse -1022 Shinko Shoji Co., Ltd -1025 Hyper-Paltek - 005e USB DVB-T device - 005f USB DVB-T device - 0300 MP3 Player - 0350 MP3 Player -1026 Newly Corp. -1027 Time Domain -1028 Inovys Corp. -1029 Atlantic Coast Telesys -102a Ramos Technology Co., Ltd -102b Infotronic America, Inc. -102c Etoms Electronics Corp. - 6251 Q-Cam -102d Winic Corp. -1031 Comax Technology, Inc. -1032 C-One Technology Corp. -1033 Nucam Corp. - 0068 3,5'' HDD case MD-231 -1038 Ideazon, Inc. - 0100 Zboard -1039 devolo AG - 2140 dsl+ 1100 duo -103d Stanton - 0100 ScratchAmp - 0101 ScratchAmp -1043 iCreate Technologies Corp. - 160f Wireless Network Adapter - 4901 AV-836 Video Capture Device - 8006 Flash Disk 32-256 MB -1044 Chu Yuen Enterprise Co., Ltd - 7001 U7000 TV tuner device - 8001 GN-54G - 8002 GN-BR402W - 8003 GN-WLBM101 - 8004 GN-WLBZ101 802.11b Adapter - 8005 GN-WLBZ201 802.11b Adapter - 8006 GN-WBZB-M 802.11b Adapter - 8007 GN-WBKG - 8008 GN-WB01GS - 800a GN-WI05GS - 800b GN-WB30N 802.11n WLAN Card -1046 Winbond Electronics Corp. [hex] - 8901 Bluetooth Device - 9967 W9967CF/W9968CF WebCam IC -1048 Targus Group International -104c AMCO TEC International, Inc. -1053 Immanuel Electronics Co., Ltd -1054 BMS International Beheer N.V. - 5004 DSL 7420 Loader - 5005 DSL 7420 LAN Modem -1055 Complex Micro Interconnection Co., Ltd -1056 Hsin Chen Ent Co., Ltd -1057 ON Semiconductor -1058 Western Digital Technologies, Inc. - 0200 Firewire USB Combo - 0400 External HDD - 0500 hub - 0702 Passport External HDD - 0901 MyBook External HDD - 1001 External Hard Disk -1059 Giesecke & Devrient GmbH - 000b StarSign Bio Token 3.0 -105c Hong Ji Electric Wire & Cable (Dongguan) Co., Ltd -105d Delkin Devices, Inc. -105e Valence Semiconductor Design, Ltd -105f Chin Shong Enterprise Co., Ltd -1060 Easthome Industrial Co., Ltd -1063 Motorola Electronics Taiwan, Ltd [hex] - 1555 MC141555 Hub - 4100 SB4100 USB Cable Modem -1065 CCYU Technology - 0020 USB-DVR2 Dev Board - 2136 EasyDisk ED1064 -106a Loyal Legend, Ltd -106c Curitel Communications, Inc. - 1101 CDMA 2000 1xRTT USB modem (HX-550C) - 1102 Packet Service - 1103 Packet Service Diagnostic Serial Port (WDM) - 1104 Packet Service Diagnostic Serial Port (WDM) - 1105 Composite Device - 1106 Packet Service Diagnostic Serial Port (WDM) - 1301 Composite Device - 1302 Packet Service Diagnostic Serial Port (WDM) - 1303 Packet Service - 1304 Packet Service - 1401 Composite Device - 1402 Packet Service - 1403 Packet Service Diagnostic Serial Port (WDM) - 1501 Packet Service - 1502 Packet Service Diagnostic Serial Port (WDM) - 1503 Packet Service - 1601 Packet Service - 1602 Packet Service Diagnostic Serial Port (WDM) - 1603 Packet Service - 2101 AudioVox 8900 Cell Phone - 2102 Packet Service - 2103 Packet Service Diagnostic Serial Port (WDM) - 2301 Packet Service - 2302 Packet Service Diagnostic Serial Port (WDM) - 2303 Packet Service - 2401 Packet Service Diagnostic Serial Port (WDM) - 2402 Packet Service - 2403 Packet Service Diagnostic Serial Port (WDM) - 2501 Packet Service - 2502 Packet Service Diagnostic Serial Port (WDM) - 2503 Packet Service - 2601 Packet Service - 2602 Packet Service Diagnostic Serial Port (WDM) - 2603 Packet Service - 3701 Broadband Wireless modem - 3702 Pantech PX-500 - 3eb4 Packet Service Diagnostic Serial Port (WDM) - 4101 Packet Service Diagnostic Serial Port (WDM) - 4102 Packet Service - 4301 Composite Device - 4302 Packet Service Diagnostic Serial Port (WDM) - 4401 Composite Device - 4402 Packet Service - 4501 Packet Service - 4502 Packet Service Diagnostic Serial Port (WDM) - 4601 Composite Device - 4602 Packet Service Diagnostic Serial Port (WDM) - 5101 Packet Service - 5102 Packet Service Diagnostic Serial Port (WDM) - 5301 Packet Service Diagnostic Serial Port (WDM) - 5302 Packet Service - 5401 Packet Service - 5402 Packet Service Diagnostic Serial Port (WDM) - 5501 Packet Service Diagnostic Serial Port (WDM) - 5502 Packet Service - 5601 Packet Service Diagnostic Serial Port (WDM) - 5602 Packet Service - 7101 Composite Device - 7102 Packet Service - a000 Packet Service - a001 Packet Service Diagnostic Serial Port (WDM) - c100 Packet Service - c200 Packet Service - c500 Packet Service Diagnostic Serial Port (WDM) - e200 Packet Service -106d San Chieh Manufacturing, Ltd -106e ConectL -106f Money Controls -1076 GCT Semiconductor, Inc. - 0031 Bluetooth Device - 0032 Bluetooth Device -107d Arlec Australia, Ltd -107e Midoriya Electric Co., Ltd -107f KidzMouse, Inc. -1082 Shin-Etsukaken Co., Ltd -1083 Canon Electronics, Inc. -1084 Pantech Co., Ltd -108a Chloride Power Protection -108b Grand-tek Technology Co., Ltd -108c Robert Bosch GmbH -108e Lotes Co., Ltd. -1099 Surface Optics Corp. -109a DATASOFT Systems GmbH -109f eSOL Co., Ltd - 3163 Trigem Mobile SmartDisplay84 - 3164 Trigem Mobile SmartDisplay121 -10a0 Hirotech, Inc. -10a3 Mitsubishi Materials Corp. -10a9 SK Teletech Co., Ltd -10aa Cables To Go -10ab USI Co., Ltd - 1002 Bluetooth Device - 1003 BC02-EXT in DFU - 1005 Bluetooth Adptr - 1006 BC04-EXT in DFU - 10c5 Sony-Ericsson / Samsung DataCable -10ac Honeywell, Inc. -10ae Princeton Technology Corp. -10af Liebert Corp. - 0000 UPS - 0001 PowerSure PSA UPS - 0002 PowerSure PST UPS - 0003 PowerSure PSP UPS - 0004 PowerSure PSI UPS - 0005 UPStation GXT 2U UPS - 0006 UPStation GXT UPS - 0007 Nfinity Power Systems UPS - 0008 PowerSure Interactive UPS -10b5 Comodo (PLX?) - 9060 Test Board -10b8 DiBcom - 0bb8 DiBcom USB DVB-T reference design (MOD300) (cold) - 0bb9 DiBcom USB DVB-T reference design (MOD300) (warm) - 0bc6 DiBcom USB2.0 DVB-T reference design (MOD3000P) (cold) - 0bc7 DiBcom USB2.0 DVB-T reference design (MOD3000P) (warm) -10bb TM Technology, Inc. -10bc Dinging Technology Co., Ltd -10bd TMT Technology, Inc. - 1427 Ethernet -10bf SmartHome - 0001 SmartHome PowerLinc -10c4 Cygnal Integrated Products, Inc. - 0002 F32x USBXpress Device - 80a9 CP210x to UART Bridge Controller - 80ca ATM2400 Sensor Device - ea60 CP210x Composite Device -10c5 Sanei Electric, Inc. -10c6 Intec, Inc. -10cb Eratech -10cc GBM Connector Co., Ltd - 1101 MP3 Player -10cd Kycon, Inc. -10ce Silicon Labs - ea6a MobiData EDGE USB Modem -10cf Velleman Components, Inc. - 5500 8055 Experiment Interface Board (address=0) - 5501 8055 Experiment Interface Board (address=1) - 5502 8055 Experiment Interface Board (address=2) - 5503 8055 Experiment Interface Board (address=3) -10d1 Hottinger Baldwin Measurement - 0101 USB-Module for Spider8, CP32 - 0202 CP22 - Communication Processor - 0301 CP42 - Communication Processor -10d4 Man Boon Manufactory, Ltd -10d5 Uni Class Technology Co., Ltd -10d6 Actions Semiconductor Co., Ltd - 1000 MP3 Player - 1100 MPMan MP-Ki 128 MP3 Player/Recorder - 1101 D-Wave 2GB MP4 Player - 8888 ADFU Device - ff51 ADFU Device -10de Authenex, Inc. -10df In-Win Development, Inc. -10e0 Post-Op Video, Inc. -10e1 CablePlus, Ltd -10e2 Nada Electronics, Ltd -10ec Vast Technologies, Inc. -10f5 Turtle Beach - 0200 Audio Advantage Roadie -10fb Pictos Technologies, Inc. -10fd Anubis Electronics, Ltd - 804d Typhoon Webshot II Webcam [zc0301] - 8050 FlyCAM-USB 300 XP2 - de00 WinFast WalkieTV WDM Capture Driver. -1100 VirTouch, Ltd - 0001 VTPlayer VTP-1 Braille Mouse -1101 EasyPass Industrial Co., Ltd - 0001 FSK Electronics Super GSM Reader -1108 Brightcom Technologies, Ltd -1110 Analog Devices Canada, Ltd (Allied Telesyn) - 5c01 Huawei MT-882 Remote NDIS Network Device - 6489 ADSL ETH/USB RTR - 9000 ADSL LAN Adapter - 9001 ADSL Loader - 900f AT-AR215 DSL Modem - 9010 AT-AR215 DSL Modem - 9021 ADSL WAN Adapter - 9022 ADSL Loader - 9023 ADSL WAN Adapter - 9024 ADSL Loader - 9031 ADSL LAN Adapter - 9032 ADSL Loader -1111 Pandora International Ltd. - 8888 Evolution Device -1112 YM ELECTRIC CO., Ltd -1113 Medion AG -111e VSO Electric Co., Ltd -112e Master Hill Electric Wire and Cable Co., Ltd -112f Cellon International, Inc. -1130 Tenx Technology, Inc. - f211 USB audio headset -1131 Integrated System Solution Corp. - 1001 KY-BT100 Bluetooth Adapter - 1002 Bluetooth Device - 1003 Bluetooth Device - 1004 Bluetooth Device -1132 Toshiba Corp., Digital Media Equipment [hex] - 4331 PDR-M4/M5/M70 Digital Camera - 4332 PDR-M60 Digital Camera - 4333 PDR-M2300/PDR-M700 - 4334 PDR-M65 - 4335 PDR-M61 - 4337 PDR-M11 - 4338 PDR-M25 -113c Arin Tech Co., Ltd -113d Mapower Electronics Co., Ltd -1141 V One Multimedia, Pte., Ltd -1142 CyberScan Technologies, Inc. -1145 Japan Radio Company - 0001 AirH PHONE AH-J3001V/J3002V -1146 Shimane SANYO Electric Co., Ltd. -1147 Ever Great Electric Wire and Cable Co., Ltd -114b Sphairon Access Systems GmbH - 0110 Turbolink UB801R WLAN USB Adapter -114c Tinius Olsen Testing Machine Co., Inc. -114d Alpha Imaging Technology Corp. -115b Salix Technology Co., Ltd. -1162 Secugen Corp. -1163 DeLorme Publishing, Inc. - 0100 Earthmate GPS -1164 YUAN High-Tech Development Co., Ltd - 0300 ELSAVISION 460D - 0601 Analog TV Tuner - 0900 TigerBird BMP837 USB2.0 WDM Encoder - 0bc7 Digital TV Tuner -1165 Telson Electronics Co., Ltd -1166 Bantam Interactive Technologies -1167 Salient Systems Corp. -1168 BizConn International Corp. -116e Gigastorage Corp. -116f Silicon 10 Technology Corp. -1175 Shengyih Steel Mold Co., Ltd -117d Santa Electronic, Inc. -117e JNC, Inc. -1182 Venture Corp., Ltd -1183 Compaq Computer Corp. [hex] (Digital Dream ??) - 0001 DigitalDream l'espion XS - 19c7 ISDN TA - 4008 56k FaxModem - 504a PJB-100 Personal Jukebox -1184 Kyocera Elco Corp. -1188 Bloomberg L.P. -1189 Acer Communications & Multimedia - 0893 EP-1427X-2 Ethernet Adapter -118f You Yang Technology Co., Ltd -1190 Tripace -1191 Loyalty Founder Enterprise Co., Ltd -1196 Yankee Robotics, LLC - 0010 Trifid Camera without code - 0011 Trifid Camera -1197 Technoimagia Co., Ltd -1198 StarShine Technology Corp. -1199 Sierra Wireless, Inc. - 0019 AC595U - 0021 AC597E - 0110 Composite Device - 0112 CDMA 1xEVDO PC Card, AirCard 580 - 0120 AC595U - 0218 MC5720 Wireless Modem - 6467 MP Series Network Adapter - 6468 MP Series Network Adapter - 6469 MP Series Network Adapter - 6802 MC8755 Device - 6803 MC8765 Device - 6804 MC8755 Device - 6805 MC8765 Device - 6812 MC8775 Device - 6820 AC875 Device - 6832 MC8780 Device - 6833 MC8781 Device - 683a MC8785 Device - 6850 AirCard 880 Device - 6851 AirCard 881 Device - 6852 AirCard 880E Device - 6853 AirCard 881E Device - 6854 AirCard 885 Device - 6870 MC8780 Device - 6871 MC8781 Device -119a ZHAN QI Technology Co., Ltd -119b ruwido austria GmbH - 0400 Infrared Keyboard V2.01 -11a0 Chipcon AS - eb11 CC2400EB 2.0 ZigBee Sniffer -11a3 Technovas Co., Ltd - 8031 MP3 Player - 8032 MP3 Player -11aa GlobalMedia Group, LLC - 1518 iREZ K2 -11ab Exito Electronics Co., Ltd -11b0 ATECH FLASH TECHNOLOGY -11db Topfield Co., Ltd. - 1000 PVR - 1100 PVR -11e6 K.I. Technology Co. Ltd. -11f5 Siemens AG (?) - 0001 SX1 - 0003 Mobile phone USB cable - 0004 X75 -11f6 Prolific - 2001 Willcom WSIM -11f7 Alcatel (?) - 02df TD10 Mobile phone USB cable -1209 InterBiometrics - 1001 USB Hub - 1002 USB Relais - 1003 IBSecureCam-P - 1004 IBSecureCam-O - 1005 IBSecureCam-N -120e Hudson Soft Co., Ltd -121e Jungsoft Co., Ltd - 3403 Muzio JM250 Audio Player -1223 SKYCABLE ENTERPRISE. CO., LTD. -1230 Chipidea-Microelectronica, S.A. -1235 Novation EMS - 0001 ReMOTE Audio/XStation - 0002 Speedio - 4661 ReMOTE25 -1241 Belkin - 1111 Mouse - 1122 Typhoon Stream Optical Mouse USB+PS/2 - 1155 PS2/USB Browser Combo Mouse - 1166 MI-2150 Trust Mouse - 1177 F8E842-DL Mouse - 1503 Keyboard -124a AirVast - 4017 PC-Chips 802.11b Adapter -124b Nyko (Honey Bee) - 4d01 Airflo EX Joystick -125f A-DATA Technology Co., Ltd. -1264 Covidien Energy-based Devices -1267 Logic3 / SpectraVideo plc - 0103 G-720 Keyboard - 0201 A4Tech SWOP-3 Mouse - a001 JP260 PC Game Pad - c002 Wireless Optical Mouse -126c Aristocrat Technologies -126d Bel Stewart -126e Strobe Data, Inc. -126f TwinMOS - 1325 Mobile Disk - 2168 Mobile Disk III - a006 G240 -1275 Xaxero Marine Software Engineering, Ltd. - 0002 WeatherFax 2000 Demodulator - 0080 SkyEye Weather Satellite Receiver -1286 Marvell Semiconductor, Inc. - 8001 BLOB boot loader firmware -1292 Innomedia - 0258 Creative Labs VoIP Blaster -1293 Belkin Components [hex] - 0002 F5U002 Parallel Port [uss720] - 2101 104-key keyboard -1294 RISO KAGAKU CORP. -129b CyberTAN Technology - 1666 TG54USB -12a7 Trendchip Technologies Corp. -12ab Honey Bee Electronic International Ltd. -12ba Licensed by Sony Computer Entertainment America - 0200 Harmonix Guitar for PlayStation(R)3 - 0210 Harmonix Drum Kit for PlayStation(R)3 -12d1 Huawei Technologies Co., Ltd. - 1001 E620 USB Modem - 1003 E220 HSDPA Modem / E270 HSDPA/HSUPA Modem -12d2 LINE TECH INDUSTRIAL CO., LTD. -12d7 BETTER WIRE FACTORY CO., LTD. -12ef Tapwave, Inc. - 0100 Tapwave Handheld [Tapwave Zodiac] -12f5 Dynamic System Electronics Corp. -12f7 Memorex Products, Inc. - 1a00 TD Classic 003B - 1e23 TravelDrive 2007 Flash Drive -12fd AIN Comm. Technology Co., Ltd - 1001 AWU2000b 802.11b Stick -1307 Transcend Information, Inc. - 0163 512MB USB Flash Drive - 1169 TS2GJF210 JetFlash 210 2GB -1310 Roper - 0001 Class 1 Bluetooth Dongle -1312 ICS Electronics -131d Natural Point - 0155 TrackIR 3 Pro Head Tracker -132b Konica Minolta - 0000 Dimage A2 Camera - 0001 Minolta DiMAGE A2 (ptp) - 0003 Dimage Xg Camera - 0006 Dimage Z2 Camera - 0007 Minolta DiMAGE Z2 (PictBridge mode) - 0008 Dimage X21 Camera - 000a Dimage Scan Dual IV - 000b Dimage Z10 Camera - 000d Dimage X50 Camera [storage?] - 000f Dimage X50 Camera [p2p?] - 0010 Dimage G600 Camera - 0012 Dimage Scan Elite5400 2 - 0013 Dimage X31 Camera - 0015 Dimage G530 Camera - 0017 Dimage Z3 Camera - 0018 Minolta DiMAGE Z3 (PictBridge mode) - 0019 Dimage A200 Camera - 0021 Dimage Z5 Camera - 0022 Minolta DiMAGE Z5 (PictBridge mode) -1342 Mobility - 0200 EasiDock 200 Hub - 0201 EasiDock 200 Keyboard and Mouse Port - 0202 EasiDock 200 Serial Port - 0203 EasiDock 200 Printer Port - 0204 Ethernet - 0304 EasiDock Ethernet -1348 Katsuragawa Electric Co., Ltd. -134e Digby's Bitpile, Inc. DBA D Bit -136b STEC -1370 Swissbit - 6828 Victorinox Flash Drive -1371 Dick Smith Electronics - 9022 RT2573 - 9032 C-Net CWD-854 rev F -1376 Vimtron Electronics Co., Ltd. -1385 Netgear, Inc - 4250 WG111T - 4251 WG111T (no firmware) - 5f00 WPN111 RangeMax(TM) Wireless USB 2.0 Adapter - 5f01 WPN111 (no firmware) -138e Jungo LTD - 9000 Raisonance S.A. STM32 ARM evaluation board -1390 TOMTOM B.V. -1395 Sennheiser Communications - 3556 USB Headset -1398 Q-tec - 2103 USB 2.0 Storage Device -13ad Baltech - 9999 Card reader -13b0 PerkinElmer Optoelectronics - 000a Alesis Photon X25 MIDI Controller -13b1 Linksys - 000b WUSB11 v4.0 802.11b Adapter - 000d WUSB54G Wireless Adapter - 0011 WUSB54GP v4.0 802.11g Adapter - 0018 USB200M 10/100 Ethernet Adapter - 001a HU200TS Wireless Adapter - 0020 WUSB54GC 802.11g Adapter [ralink rt73] - 0023 WUSB54GR - 0024 WUSBF54G v1.1 802.11g Adapter w/ Wi-Fi Finder -13b3 Nippon Dics Co., Ltd. -13be Ricoh Printing Systems, Ltd. -13ca JyeTai Precision Industrial Co., Ltd. -13cf Wisair Ltd. -13d1 A-Max Technology Macao Commercial Offshore Co. Ltd. -13d2 Shark Multimedia - 0400 Pocket Ethernet [klsi] -13d3 IMC Networks - 3201 VisionDTV USB-Ter/HAMA USB DVB-T device cold - 3202 VisionDTV USB-Ter/HAMA USB DVB-T device warm - 3203 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) - 3204 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) - 3205 DNTV Live! Tiny USB2 BDA (No Remote) - 3206 DNTV Live! Tiny USB2 BDA (No Remote) - 3207 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) - 3208 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) - 3209 DTV-DVB UDST7022BDA DVB-S Box(Without HID) - 3211 DTV-DVB Hybrid Analog/Capture / Pinnacle PCTV 310e - 3212 DTV-DVB UDTT704C - DVBT/NTSC/PAL Driver(PCM4) - 3213 DTV-DVB UDTT704D - DVBT/NTSC/PAL Driver (PCM4) - 3214 DTV-DVB UDTT704F -(MiniCard) DVBT/NTSC/PAL Driver(Without HID) - 3215 DTV-DVB UDAT7240 - ATSC/NTSC/PAL Driver(PCM4) - 3216 DTV-DVB UDTT 7047-USB 2.0 DVB-T Driver - 3217 Digital-TV Receiver. - 3219 DTV-DVB UDTT7049 - DVB-T Driver(Without HID) - 3220 DTV-DVB UDTT 7047M-USB 2.0 DVB-T Driver - 3223 DNTV Live! Tiny USB2 BDA (No Remote) - 3224 DNTV Live! Tiny USB2 BDA (No Remote) - 3226 DigitalNow TinyTwin DVB-T Receiver - 3236 DTV-DVB UDTT 7047A-USB 2.0 DVB-T Driver - 3237 DTV-DVB UDTT 704J - dual DVB-T Driver - 3239 DTV-DVB UDTT704D - DVBT/NTSC/PAL Driver(Without HID) - 3240 DTV-DVB UDXTTM6010 - A/D Driver(Without HID) - 3241 DTV-DVB UDXTTM6010 - A/D Driver(Without HID) - 3242 DTV-DVB UDAT7240LP - ATSC/NTSC/PAL Driver(Without HID) - 3243 DTV-DVB UDXTTM6010 - A/D Driver(Without HID) - 3244 DTV-DVB UDTT 7047Z-USB 2.0 DVB-T Driver - 3247 802.11 n/g/b Wireless LAN Adapter - 7020 DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) - 7022 DTV-DVB UDST7022BDA DVB-S Box(Without HID) -13dc ALEREON, INC. -13dd i.Tech Dynamic Limited -13e1 Kaibo Wire & Cable (Shenzhen) Co., Ltd. -13e5 Rane - 0001 SL-1 -13e6 TechnoScope Co., Ltd. -13fd Initio Corporation -13fe Kingston Technology Company Inc. - 1a00 512MB/1GB Flash Drive - 1a23 512MB Flash Drive - 1d00 DataTraveler 2.0 1GB/4GB Flash Drive / Patriot Xporter 4GB Flash Drive - 1f00 DataTraveler 2.0 4GB Flash Drive -1400 Axxion Group Corp. -1402 Bowe Bell & Howell -1403 Sitronix - 0001 Digital Photo Frame -140e Telechips, Inc. -1410 Novatel Wireless - 1110 Merlin S620 - 1120 Merlin EX720 - 1130 Merlin S720 - 1400 Merlin U740 - 2110 Ovation U720/MCD3000 - 4100 U727 -1415 Nam Tai E&E Products Ltd. or OmniVision Technologies, Inc. - 0000 Sony SingStar USBMIC - 2000 Sony Playstation Eye -1419 ABILITY ENTERPRISE CO., LTD. -1429 Vega Technologies Industrial (Austria) Co. -1430 RedOctane -1431 Pertech Resources, Inc. -1435 Wistron NeWeb - 0711 UR055G - 0826 AR5523 - 0827 AR5523 (no firmware) - 0828 AR5523 - 0829 AR5523 (no firmware) -1436 Denali Software, Inc. -143c Altek Corporation -1453 Radio Shack - 4026 26-183 Serial Cable -1456 Extending Wire & Cable Co., Ltd. -1457 First International Computer, Inc. - 5117 OpenMoko Neo1973 kernel usbnet (g_ether, CDC Ethernet) mode - 5118 OpenMoko Neo1973 Debug board (V2+) - 5119 OpenMoko Neo1973 u-boot cdc_acm serial port - 5120 OpenMoko Neo1973 u-boot usbtty generic serial - 5121 OpenMoko Neo1973 kernel mass storage (g_storage) mode - 5122 OpenMoko Neo1973 kernel cdc_ether USB network - 5123 OpenMoko Neo1973 internal USB CSR4 module - 5124 OpenMoko Neo1973 Bluetooth Device ID service -1461 Staccato Communications -1462 Micro Star International - 5512 MegaStick-1 Flash Stick -1472 Huawei-3Com - 0009 Aolynk WUB320g -147a Formosa Industrial Computing, Inc. - e015 eHome Infrared Receiver - e016 eHome Infrared Receiver -147f Hama GmbH & Co., KG -1484 Elsa AG [hex] - 1746 Ecomo 19H99 Monitor - 7616 Elsa Hub -1485 Silicom - 0001 U2E - 0002 Psion Gold Port Ethernet -1487 DSP Group, Ltd. -148e EVATRONIX SA -148f Ralink Technology, Corp. - 1706 RT2500USB Wireless Adapter - 2570 802.11g WiFi - 2573 RT2501USB Wireless Adapter - 2671 RT2601USB Wireless Adapter - 9020 RT2500USB Wireless Adapter - 9021 RT2501USB Wireless Adapter -1497 Panstrong Company Ltd. -149a Imagination Technologies - 2107 DBX1 DSP core -14aa AVerMedia (again) or C&E - 0001 Avermedia AverTV DVBT USB1.1 (cold) - 0002 Avermedia AverTV DVBT USB1.1 (warm) - 0201 AVermedia/Yakumo/Hama/Typhoon DVB-T USB2.0 (cold) - 0221 AVermedia DVBT Tuner Dongle - 0301 AVermedia/Yakumo/Hama/Typhoon DVB-T USB2.0 (warm) -14ad CTK Corporation -14ae Printronix Inc. -14af ATP Electronics Inc. -14b0 StarTech.com Ltd. -14b2 Atheros Communications Inc - 3a93 USB WLAN Device - 3c02 C54RU WLAN - 3c22 C54RU -14c0 Rockwell Automation, Inc. -14c2 Gemlight Computer, Ltd - 0250 Storage Adapter V2 - 0350 Storage Adapter V2 -14cd Super Top - 6600 USB 2.0 IDE DEVICE -14d8 JAMER INDUSTRIES CO., LTD. -14dd Raritan Computer, Inc. -14e5 SAIN Information & Communications Co., Ltd. -14ea Planex Communications - ab10 GW-US54GZ - ab11 GU-1000T - ab13 GW-US54Mini -14ed Shure Inc. -1500 Ellisys -1501 Pine-Tum Enterprise Co., Ltd. -1513 Hypercom -1516 CompUSA - 8628 128M Pen Drive -1518 Cheshire Engineering Corp. - 0001 HDReye High Dynamic Range Camera - 0002 HDReye (before firmware loads) -1520 Bitwire Corp. -1524 ENE Technology Inc - 6680 UTS 6680 -1527 Silicon Portals - 0200 YAP Phone (no firmware) - 0201 YAP Phone -1529 UBIQUAM Co., Ltd. - 3100 CDMA 1xRTT USB Modem (U-100/105/200/300/520) -152d JMicron Technology Corp. / JMicron USA Technology Corp. - 2338 JM20337 Hi-Speed USB to SATA & PATA Combo Bridge -152e LG (HLDS) - e001 GSA-5120D DVD-RW -1532 Razer USA, Ltd - 0001 RZ01-020300 Optical Mouse [Diamondback] - 0003 Krait Mouse - 0007 DeathAdder Mouse - 0102 Tarantula Keyboard -1546 U-Blox AG -154b PNY - 0010 USB 2.0 Flash Drive -154d ConnectCounty Holdings Berhad -154e D&M Holdings, Inc. (Denon/Marantz) - 3000 Marantz RC9001 Remote Control -1554 Prolink Microsystems Corp. -1557 OQO - 0002 model 01 WiFi interface - 0003 model 01 Bluetooth interface - 7720 model 01+ Ethernet - 8150 model 01 Ethernet interface -1568 Sunf Pu Technology Co., Ltd -156f Quantum Corporation -1570 ALLTOP TECHNOLOGY CO., LTD. -157b Ketron SRL -157e TRENDnet - 3006 TEW-444UB EU - 3007 TEW-444UB EU (no firmware) - 300a TEW-429UB 802.11g Adapter with HotSpot Detector - 300b TEW-429UB - 300d TEW-429UB C1 - 3204 ALL0298 v2 - 3205 AR5523 - 3206 AR5523 (no firmware) -1582 Fiberline - 6003 WL-430U -1587 SMA Technologie AG -158d Oakley Inc. -1598 Kunshan Guoji Electronics Co., Ltd. -15a2 Freescale Semiconductor, Inc. -15a8 Teams Power Limited -15aa Gearway Electronics (Dong Guan) Co., Ltd. -15ba Olimex Ltd. - 0003 OpenOCD JTAG - 0004 OpenOCD JTAG TINY -15c2 SoundGraph Inc. - ffdc iMON PAD Remote Controller -15c6 Laboratoires MXM - 1000 DigistimSP (cold) - 1001 DigistimSP (warm) - 1002 DigimapSP USB (cold) - 1003 DigimapSP USB (warm) -15c9 D-Box Technologies -15ca Textech International Ltd. - 00c3 Mini Optical Mouse -15d5 Coulomb Electronics Ltd. -15dc Hynix Semiconductor Inc. -15e0 Seong Ji Industrial Co., Ltd. -15e1 RSA - 2007 RSA SecurID (R) Authenticator -15e8 SohoWare - 9100 NUB100 Ethernet [pegasus] - 9110 10/100 USB Ethernet -15e9 Pacific Digital Corp. - 04ce MemoryFrame MF-570 - 1968 MemoryFrame MF-570 - 1969 Digital Frame -15ec Belcarra Technologies Corp. -15f4 HanfTek - 0001 HanfTek UMT-010 USB2.0 DVB-T (cold) - 0025 HanfTek UMT-010 USB2.0 DVB-T (warm) -1604 Tascam - 8000 US-428 Audio/Midi Controller (without fw) - 8001 US-428 Audio/Midi Controller - 8004 US-224 Audio/Midi Controller (without fw) - 8005 US-224 Audio/Midi Controller - 8006 US-122 Audio/Midi Interface (without fw) - 8007 US-122 Audio/Midi Interface -1606 Umax [hex] - 0002 Astra 1236U Scanner - 0010 Astra 1220U - 0030 Astra 2000U - 0050 Scanner - 0060 Astra 3400U - 0130 Astra 2100U - 0160 Astra 5400U - 0230 Astra 2200/2200SU - 0350 Astra 4800/4850 Scanner - 1030 Astra 4000U - 1220 Genesys Logic Scanner Controller NT5.0 - 2010 AstraCam Digital Camera - 2020 AstraCam 1000 - 2030 AstraCam 1800 Digital Camera -1608 Inside Out Networks [hex] - 0001 EdgePort/4 Serial Port - 0002 Edgeport/8 - 0003 Rapidport/4 - 0004 Edgeport/4 - 0005 Edgeport/2 - 0006 Edgeport/4i - 0007 Edgeport/2i - 0008 Edgeport/8 - 000c Edgeport/421 - 000d Edgeport/21 - 000e Edgeport/4 - 000f Edgeport/8 - 0010 Edgeport/2 - 0011 Edgeport/4 - 0012 Edgeport/416 - 0014 Edgeport/8i - 0018 Edgeport/412 - 0019 Edgeport/412 - 001a Edgeport/2+2i - 0101 Edgeport/4 - 0105 Edgeport/2 - 0106 Edgeport/4i - 0107 Edgeport/2i - 010c Edgeport/421 - 010d Edgeport/21 - 0110 Edgeport/2 - 0111 Edgeport/4 - 0112 Edgeport/416 - 0114 Edgeport/8i - 0201 Edgeport/4 - 0203 Rapidport/4 - 0204 Edgeport/4 - 0205 Edgeport/2 - 0206 Edgeport/4i - 0207 Edgeport/2i - 020c Edgeport/421 - 020d Edgeport/21 - 020e Edgeport/4 - 020f Edgeport/8 - 0210 Edgeport/2 - 0211 Edgeport/4 - 0212 Edgeport/416 - 0214 Edgeport/8i - 0215 Edgeport/1 - 0216 EPOS/44 - 0217 Edgeport/42 - 021a Edgeport/2+2i - 021b Edgeport/2c - 021c Edgeport/221c - 021d Edgeport/22c - 021e Edgeport/21c - 021f Edgeport/62 - 0240 Edgeport/1 - 0241 Edgeport/1i - 0242 Edgeport/4s - 0243 Edgeport/8s - 0244 Edgeport/8 - 0245 Edgeport/22c - 0301 Watchport/P - 0302 Watchport/M - 0303 Watchport/W - 0304 Watchport/T - 0305 Watchport/H - 0306 Watchport/E - 0307 Watchport/L - 0308 Watchport/R - 0309 Watchport/A - 030a Watchport/D - 030b Watchport/D - 030c Power Management Port - 030e Power Management Port - 030f Watchport/G - 0310 Watchport/Tc - 0311 Watchport/Hc - 1403 MultiTech Systems MT4X56 Modem - 1a17 Agilent Technologies (E6473) -1619 L & K Precision Technology Co., Ltd. -1621 Wionics Research -1628 Stonestreet One, Inc. -162a Airgo Networks Inc. -162f WiQuest Communications, Inc. -1631 Good Way Technology - 6200 GWUSB2E - c019 RT2573 -1645 Entrega [hex] - 0001 1S Serial Port - 0002 2S Serial Port - 0003 1S25 Serial Port - 0004 4S Serial Port - 0005 E45 Ethernet [klsi] - 0006 Parallel Port - 0007 U1-SC25 SCSI - 0008 Ethernet - 0016 Bi-directional to Parallel Printer Converter - 0080 1 port to Serial Converter - 0081 1 port to Serial Converter - 0093 1S9 Serial Port - 8000 EZ-USB - 8001 1 port to Serial - 8002 2x Serial Port - 8003 1 port to Serial - 8004 2U4S serial/usb hub - 8005 Ethernet - 8080 1 port to Serial - 8081 1 port to Serial - 8093 PortGear Serial Port -164a ChipX -1657 Struck Innovative Systeme GmbH - 3150 SIS3150 USB2.0 to VME interface -1660 Creatix Polymedia GmbH -1668 Actiontec Electronics, Inc. [hex] - 0009 Gateway - 0333 Modem - 0358 InternetPhoneWizard - 0405 Gateway - 0408 Prism2.5 802.11b Adapter - 0413 Gateway - 0421 Prism2.5 802.11b Adapter - 0441 IBM Integrated Bluetooth II - 0500 BTM200B BlueTooth Adapter - 1050 802.11g Wireless Mini adapter - 1441 IBM Integrated Bluetooth II - 2441 BMDC-2 IBM Bluetooth III w.56k - 3441 IBM Integrated Bluetooth III - 6010 Gateway - 6097 802.11b Wireless Adapter - 6106 ROPEX FreeLan 802.11b - 7605 UAT1 Wireless Ethernet Adapter -1669 PiKRON Ltd. [hex] - 1001 uLan2USB Converter - PS1 protocol -1679 Total Phase - 2001 Beagle USB 12 Protocol Analyzer -1682 Maxwise Production Enterprise Ltd. -1684 Godspeed Computer Corp. -1686 ZOOM Corporation - 0045 H4 Digital Recorder -1687 Kingmax Digital Inc. -168c Atheros Communications - 0001 AR5523 - 0002 AR5523 (no firmware) -1690 Askey Computer Corp. [hex] - 0101 Creative Modem Blaster DE5670 - 0102 CDC Modem Board - 0103 Askey 1456 VQE-R3 Modem [conexant] - 0104 HCF V90 Data Fax RTAD Modem - 0107 HCF V.90 Data,Fax,RTAD Modem - 0109 Askey MagicXpress V.90 Pocket Modem [conexant] - 0203 Voyager ADSL Modem Loader - 0204 Voyager ADSL Modem - 0205 DSL Modem - 0206 GlobeSpan ADSL WAN Modem - 0208 DSL Modem - 0209 Voyager 100 ADSL Modem - 0211 Globespan Virata ADSL LAN Modem - 0212 DSL Modem - 0213 HM121d DSL Modem - 0214 HM121d DSL Modem - 0215 Voyager 105 ADSL Modem - 0701 WLAN - 0710 SMCWUSBT-G - 0711 SMCWUSBT-G (no firmware) - 0712 AR5523 - 0713 AR5523 (no firmware) - 0715 Voyager 1055 Laptop Adapter - 0722 RT2573 - 0726 Wi-Fi Wireless LAN Adapter - 0901 Voyager 205 ADSL Router -1696 Hitachi Video and Information System, Inc. -1697 VTec Test, Inc. -16a5 Shenzhen Zhengerya Cable Co., Ltd. -16ab Global Sun Technology - 7801 AR5523 - 7802 AR5523 (no firmware) - 7811 AR5523 - 7812 AR5523 (no firmware) -16ac Dongguan ChingLung Wire & Cable Co., Ltd. -16c0 VOTI - 03e8 free for internal lab use 1000 - 03e9 free for internal lab use 1001 - 03ea free for internal lab use 1002 - 03eb free for internal lab use 1003 - 03ec free for internal lab use 1004 - 03ed free for internal lab use 1005 - 03ee free for internal lab use 1006 - 03ef free for internal lab use 1007 - 03f0 free for internal lab use 1008 - 03f1 free for internal lab use 1009 - 076b OpenPCD 13.56MHz RFID Reader - 076c OpenPICC 13.56MHz RFID Simulator (native) - 08ac OpenBeacon USB stick -16cc silex technology, Inc. -16d3 Frontline Test Equipment, Inc. -16d5 AnyDATA Corporation - 6501 CDMA 2000 1xRTT/EV-DO USB Modem -16d8 CMOTECH Co., Ltd. - 5141 CMOTECH CDMA Technologies USB modem - 5543 CDMA 2000 1xRTT/1xEVDO USB modem - 6280 CMOTECH CDMA Technologies USB modem -16df King Billion Electronics Co., Ltd. -16f5 Futurelogic Inc. -1706 BlueView Technologies, Inc. -1707 ARTIMI -170b Swissonic - 0011 MIDI-USB 1x1 -170d Avnera -1733 Cellink Technology Co., Ltd - 0101 RF Wireless Optical Mouse OP-701 -1736 CANON IMAGING SYSTEM TECHNOLOGIES INC. -1737 Linksys - 0039 USB1000 -1740 Senao - 2000 NUB-8301 -1743 General Atomics -174c ASMedia Technology Inc. -174f Syntek - 5a35 1.3MPixel Web Cam - Asus G1s - 6a31 Web Cam - Asus A8J, F3S, F5R, VX2S, V1S - 6a33 Web Cam - Asus F3SA, F9J, F9S - 6a51 2.0MPixel Web Cam - Asus Z96J, Z96S, S96S - 6a54 Web Cam - 6d51 2.0Mpixel Web Cam - Eurocom D900C - 8a12 0.3MPixel Web Cam - Packard Bell MX37-T-003 - a311 1.3MPixel Web Cam - Asus A3A, A6J, A6K, A6M, A6R, A6T, A6V, A7T, A7sv, A7U - a312 1.3MPixel Web Cam - a821 Web Cam - Packard Bell BU45, PB Easynote MX66-208W - aa11 Web Cam -1759 LucidPort Technology, Inc. -1772 System Level Solutions, Inc. -1781 Multiple Vendors - 083e MetaGeek Wi-Spy - 0938 Iguanaworks USB IR Transceiver -1782 Spreadtrum Communications Inc. -1784 TopSeed Technology Corp. -1788 ShenZhen Litkconn Technology Co., Ltd. -1796 Printrex, Inc. -1797 JALCO CO., LTD. -17a5 Advanced Connection Technology Inc. -17a7 MICOMSOFT CO., LTD. -17b3 Grey Innovation - 0004 Linux-USB Midi Gadget -17c3 Singim International Corp. -17cc Native Instruments - 0815 Audio Kontrol 1 - 1940 RigKontrol3 - 1969 RigKontrol2 - 1978 Audio 8 DJ - 4711 Kore Controller - 4712 Kore Controller 2 -17cf Hip Hing Cable & Plug Mfy. Ltd. -17d0 Sanford L.P. -17d3 Korea Techtron Co., Ltd. -17e9 Newnham Research - 0051 USB VGA Adaptor -17eb Cornice, Inc. -17ef Lenovo - 3815 ChipsBnk 2GB USB Stick -17f5 K.K. Rocky -17f6 Unicomp, Inc -1822 Twinhan - 3201 VisionDTV USB-Ter/HAMA USB DVB-T device cold - 3202 VisionDTV USB-Ter/HAMA USB DVB-T device warm -1831 Gwo Jinn Industries Co., Ltd. -1832 Huizhou Shenghua Industrial Co., Ltd. -1854 Memory Devices Ltd. -185b Compro - d000 Compro Videomate DVB-U2000 - DVB-T USB cold - d001 Compro Videomate DVB-U2000 - DVB-T USB warm -1861 Tech Technology Industrial Company -1862 Teridian Semiconductor Corp. -1871 Aveo Technology Corp. -1894 Topseed - 5632 Atek Tote Remote - 5641 TSAM-004 Presentation Remote -1897 Evertop Wire Cable Co. -18b6 Mikkon Technology Limited -18b7 Zotek Electronic Co., Ltd. -18c5 AMIT - 0002 CG-WLUSB2GO -18d5 Starline International Group Limited -18d9 Kaba - 01xy LEGIC advant desktop reader -18e3 Fitipower Integrated Technology Inc -18e8 Qcom - 6196 RT2573 - 6229 RT2573 -18ea Matrox Graphics, Inc. - 0002 DualHead2Go [Analog Edition] - 0004 TripleHead2Go [Digital Edition] -18fd FineArch Inc. -190d Motorola GSG -1914 Alco Digital Devices Limited -1915 Linksys - 2233 WUSB11 v2.8 802.11b Adapter - 2234 WUSB54G 802.11g Adapter -192f Avago Technologies, Pte. -1930 Shenzhen Xianhe Technology Co., Ltd. -1931 Ningbo Broad Telecommunication Co., Ltd. -1949 Lab126 -1951 Hyperstone AG -1953 Ironkey Inc. -1954 Radiient Technologies -195d Itron Technology iONE - 7002 Libra-Q11 IR remote - 7006 Libra-Q26 / 1.0 Remote - 7777 Scorpius wireless keyboard -1967 CASIO HITACHI Mobile Communications Co., Ltd. -196b Wispro Technology Inc. -1970 Dane-Elec Corp. USA -1975 Dongguan Guneetal Wire & Cable Co., Ltd. -1976 Chipsbrand Microelectronics (HK) Co., Ltd. -1977 T-Logic - 0111 TL203 MP3 Player and Voice Recorder -1989 Nuconn Technology Corp. -198f Beceem Communications Inc. -1990 Acron Precision Industrial Co., Ltd. -1995 Trillium Technology Pty. Ltd. - 3202 REC-ADPT-USB (recorder) - 3203 REC-A-ADPT-USB (recorder) -199e The Imaging Source Europe GmbH -199f Benica Corporation -19a8 Biforst Technology Inc. -19af S Life - 6611 Celestia VoIP Phone -19b5 B & W Group -19b6 Infotech Logistic, LLC -19ca Mindtribe - 0001 Sandio 3D HID Mouse -19cf Parrot SA -19e1 WeiDuan Electronic Accessory (S.Z.) Co., Ltd. -19e8 Industrial Technology Research Institute -19ef Pak Heng Technology (Shenzhen) Co., Ltd. -19ff Best Buy - 0201 Rocketfish Wireless 2.4G Laser Mouse -1a08 Bellwood International, Inc. -1a0a USB-IF non-workshop - badd USB OTG Compliance test device -1a12 KES Co., Ltd. -1a25 Amphenol East Asia Ltd. -1a2a Seagate Branded Solutions -1a36 Biwin Technology Ltd. -1a40 TERMINUS TECHNOLOGY INC. -1a41 Action Electronics Co., Ltd. -1a4a Silicon Image -1a4b SafeBoot International B.V. -1a61 Abbott Diabetes Care -1a6a Spansion Inc. -1a6d SamYoung Electronics Co., Ltd -1a6e Global Unichip Corp. -1a6f Sagem Orga GmbH -1a79 Bayer Health Care LLC -1a7b Lumberg Connect GmbH & Co. KG -1a89 Dynalith Systems Co., Ltd. -1a8b SGS Taiwan Ltd. -1a98 Leica Camera AG -1aa4 Data Drive Thru, Inc. -1aa5 UBeacon Technologies, Inc. -1aa6 eFortune Technology Corp. -1acb Salcomp Plc -1ad1 Desay Wire Co., Ltd. -1ae4 ic-design Reinhard Gottinger GmbH -1aed High Top Precision Electronic Co., Ltd. -1aef Conntech Electronic (Suzhou) Corporation -1b04 Meilhaus Electronic GmBH - 0630 ME-630 - 0940 ME-94 - 0950 ME-95 - 0960 ME-96 - 1000 ME-1000 - 100a ME-1000 - 100b ME-1000 - 1400 ME-1400 - 140a ME-1400A - 140b ME-1400B - 140c ME-1400C - 140d ME-1400D - 140e ME-1400E - 14ea ME-1400EA - 14eb ME-1400EB - 1604 ME-1600/4U - 1608 ME-1600/8U - 160c ME-1600/12U - 160f ME-1600/16U - 168f ME-1600/16U8I - 4610 ME-4610 - 4650 ME-4650 - 4660 ME-4660 - 4661 ME-4660I - 4662 ME-4660 - 4663 ME-4660I - 4670 ME-4670 - 4671 ME-4670I - 4672 ME-4670S - 4673 ME-4670IS - 4680 ME-4680 - 4681 ME-4680I - 4682 ME-4680S - 4683 ME-4680IS - 6004 ME-6000/4 - 6008 ME-6000/8 - 600f ME-6000/16 - 6014 ME-6000I/4 - 6018 ME-6000I/8 - 601f ME-6000I/16 - 6034 ME-6000ISLE/4 - 6038 ME-6000ISLE/8 - 603f ME-6000ISLE/16 - 6044 ME-6000/4/DIO - 6048 ME-6000/8/DIO - 604f ME-6000/16/DIO - 6054 ME-6000I/4/DIO - 6058 ME-6000I/8/DIO - 605f ME-6000I/16/DIO - 6074 ME-6000ISLE/4/DIO - 6078 ME-6000ISLE/8/DIO - 607f ME-6000ISLE/16/DIO - 6104 ME-6100/4 - 6108 ME-6100/8 - 610f ME-6100/16 - 6114 ME-6100I/4 - 6118 ME-6100I/8 - 611f ME-6100I/16 - 6134 ME-6100ISLE/4 - 6138 ME-6100ISLE/8 - 613f ME-6100ISLE/16 - 6144 ME-6100/4/DIO - 6148 ME-6100/8/DIO - 614f ME-6100/16/DIO - 6154 ME-6100I/4/DIO - 6158 ME-6100I/8/DIO - 615f ME-6100I/16/DIO - 6174 ME-6100ISLE/4/DIO - 6178 ME-6100ISLE/8/DIO - 617f ME-6100ISLE/16/DIO - 6259 ME-6200I/9/DIO - 6359 ME-6300I/9/DIO - 810a ME-8100A - 810b ME-8100B - 820a ME-8200A - 820b ME-8200B -1b20 MStar Semiconductor, Inc. -1b22 WiLinx Corp. -1b26 Cellex Power Products, Inc. -1b27 Current Electronics Inc. -1b28 NAVIsis Inc. -1b32 Ugobe Life Forms, Inc. -1b36 ViXS Systems, Inc. -1b3f Generalplus Technology Inc. -1b47 Energizer Holdings, Inc. - 0001 CHUSB Duo Charger (NiMH AA/AAA USB smart charger) -1b48 Plastron Precision Co., Ltd. -1b59 K.S. Terminals Inc. -1b5a Chao Zhou Kai Yuan Electric Co., Ltd. -1b65 The Hong Kong Standards and Testing Centre Ltd. -1b72 ATERGI TECHNOLOGY CO., LTD. -1b76 Legend Silicon Corp. -1b86 Dongguan Guanshang Electronics Co., Ltd. -1b88 ShenMing Electron (Dong Guan) Co., Ltd. -1b8c Altium Limited -1b8d e-MOVE Technology Co., Ltd. -1b8e Amlogic, Inc. -1b8f MA LABS, Inc. -1b98 YMax Communications Corp. -1b99 Shenzhen Yuanchuan Electronic -1ba1 JINQ CHERN ENTERPRISE CO., LTD. -1ba2 Lite Metals & Plastic (Shenzhen) Co., Ltd. -1ba4 Ember Corporation - 0001 InSight USB Link -1ba8 China Telecommunication Technology Labs -1bad Harmonix Music - 0002 Harmonix Guitar for Xbox 360 - 0003 Harmonix Drum Kit for Xbox 360 -1bbb T & A Mobile Phones -1bc4 Ford Motor Co. -1bc5 AVIXE Technology (China) Ltd. -1bce Contac Cable Industrial Limited -1bcf Sunplus Innovation Technology Inc. -1bd0 Hangzhou Riyue Electronic Co., Ltd. -1bde P-TWO INDUSTRIES, INC. -1bef Shenzhen Tongyuan Network-Communication Cables Co., Ltd -1bf0 RealVision Inc. -1bf5 Extranet Systems Inc. -1bf6 Orient Semiconductor Electronics, Ltd. -1bfd TouchPack - 1688 Resistive Touch Screen -1c02 Kreton Corporation -1c04 QNAP System Inc. -1c0d Relm Wireless -1c10 Lanterra Industrial Co., Ltd. -1c13 ALECTRONIC LIMITED -1c1a Datel Electronics Ltd. -1c1b Volkswagen of America, Inc. -1c1f Goldvish S.A. -1c20 Fuji Electric Device Technology Co., Ltd. -1c21 ADDMM LLC -1c22 ZHONGSHAN CHIANG YU ELECTRIC CO., LTD. -1c26 Shanghai Haiying Electronics Co., Ltd. -1c27 HuiYang D & S Cable Co., Ltd. -1c31 LS Cable Ltd. -1c37 Authorizer Technologies, Inc. -1c3d NONIN MEDICAL INC. -1c3e Wep Peripherals -1c49 Cherng Weei Technology Corp. -1c6b Philips & Lite-ON Digital Solutions Corporation -1c6c Skydigital Inc. -1c77 Kaetat Industrial Co., Ltd. -1c78 Datascope Corp. -1c79 Unigen Corporation -1c7a LighTuning Technology Inc. -1c7b LUXSHARE PRECISION INDUSTRY (SHENZHEN) CO., LTD. -1c87 2N TELEKOMUNIKACE a.s. -1c88 Somagic, Inc. -1c89 HONGKONG WEIDIDA ELECTRON LIMITED -1c8e ASTRON INTERNATIONAL CORP. -1c98 ALPINE ELECTRONICS, INC. -1ca0 ACCARIO Inc. -1cb3 Aces Electronic Co., Ltd. -1cb4 OPEX CORPORATION -1cbe Luminary Micro Inc. -1cbf FORTAT SKYMARK INDUSTRIAL COMPANY -1cc0 PlantSense -1cca NextWave Broadband Inc. -1ccd Bodatong Technology (Shenzhen) Co., Ltd. -1cd4 adp corporation -1cd5 Firecomms Ltd. -1cd6 Antonio Precise Products Manufactory Ltd. -1cde Telecommunications Technology Association (TTA) -1cdf WonTen Technology Co., Ltd. -1ce0 EDIMAX TECHNOLOGY CO., LTD. -1ce1 Amphenol KAE -1cfc ANDES TECHNOLOGY CORPORATION -1cfd Flextronics Digital Design Japan, LTD. -1d08 NINGBO HENTEK DRAGON ELECTRONICS CO., LTD. -1d09 TechFaith Wireless Technology Limited -1d0a Johnson Controls, Inc. The Automotive Business Unit -1d0b HAN HUA CABLE & WIRE TECHNOLOGY (J.X.) CO., LTD. -1d14 ALPHA-SAT TECHNOLOGY LIMITED -1d1f Diostech Co., Ltd. -1d20 SAMTACK INC. -1d50 OpenMoko, Inc. -1d5b Smartronix, Inc. -1d6b Linux Foundation - 0001 1.1 root hub - 0002 2.0 root hub - 0003 3.0 root hub -1ebb NuCORE Technology, Inc. -2001 D-Link Corp. [hex] - 0001 DWL-120 WIRELESS ADAPTER - 0201 DHN-120 10Mb Home Phoneline Adapter - 1a00 10/100 Ethernet - 200c 10/100 Ethernet - 3200 DWL-120 802.11b (Atmel RFMD503A) [usbvnetr] - 3500 Elitegroup Computer Systems WLAN card WL-162 - 3700 DWL-122 802.11b - 3701 DWL-G120 Spinnaker 802.11b - 3702 DWL-120 rev F - 3703 DWL-122 802.11b - 3704 DWL-G122 802.11g rev. A2 - 3705 AirPlus G DWL-G120 Wireless Adapter(rev.C) - 3761 IEEE 802.11g USB2.0 Wireless Network Adapter-PN - 3a00 DWL-AG132 - 3a01 DWL-AG132 (no firmware) - 3a02 DWL-G132 - 3a03 DWL-G132 (no firmware) - 3a04 DWL-AG122 - 3a05 DWL-AG122 (no firmware) - 3a80 AirPlus Xtreme G DWL-G132 Wireless Adapter - 3a81 predator Bootloader Download - 3a82 AirPremier AG DWL-AG132 Wireless Adapter - 3a83 predator Bootloader Download - 3b00 AirPlus DWL-120+ Wireless Adapter - 3b01 WLAN Boot Device - 3c00 DWL-G122 802.11g rev. B1 [ralink] - 3c01 AirPlus AG DWL-AG122 Wireless Adapter - 3c02 AirPlus G DWL-G122 Wireless Adapter - 3c05 DUB-E100 Fast Ethernet [asix] - 4000 DSB-650C Ethernet [klsi] - 4001 DSB-650TX Ethernet [pegasus] - 4002 DSB-650TX Ethernet [pegasus] - 4003 DSB-650TX-PNA Ethernet [pegasus] - 400b 10/100 Ethernet - 4102 10/100 Ethernet - 5100 DSL-200 ADSL ATM Modem - 5102 DSL-200 ADSL Loader - 5b00 Remote NDIS Network Device - 9414 Cable Modem - 9b00 Broadband Cable Modem Remote NDIS Device - abc1 DSB-650 Ethernet [pegasus] - f013 DLink 7 port USB2.0 Hub - f10d Accent Communications Modem - f110 DUB-AV300 A/V Capture - f111 DBT-122 Bluetooth adapter - f112 DUB-T210 Audio Device - f116 Formosa 2 - f117 Formosa 3 - f118 Formosa 4 -2019 PLANEX - 3220 GW-US11S WLAN - 5303 GW-US54GXS - ab01 GW-US54HP - ab50 GW-US54Mini2 - c002 GW-US54SG - c007 GW-US54GZL - ed02 GW-USMM -2040 Hauppauge - 6502 WinTV HVR-900 - 6503 WinTV HVR-930 - 7050 Nova-T Stick - 9300 WinTV NOVA-T USB2 (cold) - 9301 WinTV NOVA-T USB2 (warm) -2101 ActionStar - 0201 SIIG 4-to-2 Printer Switch -2162 Creative (?) - 2031 Network Blaster Wireless Adapter - 500c DE5771 Modem Blaster - 8001 Broadxent BritePort DSL Bridge 8010U -2222 MacAlly - 0004 iWebKey Keyboard - 4050 AirStick joystick -2233 RadioShack Corporation - 6323 USB Electronic Scale -22b8 Motorola PCS - 0001 Wally 2.2 chipset - 0002 Wally 2.4 chipset - 0005 V.60c/V.60i GSM Phone - 0850 Bluetooth Device - 1001 Patriot 1.0 (GSM) chipset - 1002 Patriot 2.0 chipset - 1005 T280e GSM/GPRS Phone - 1101 Patriot 1.0 (TDMA) chipset - 1801 Rainbow chipset flash - 2035 Bluetooth Device - 2805 GSM Modem - 2821 T720 GSM Phone - 2822 V.120e GSM Phone - 2823 Flash Interface - 2a01 MSM6050 chipset - 2a02 CDMA modem - 2a03 MSM6050 chipset flash - 2a21 V710 GSM Phone (P2K) - 2a22 V710 GSM Phone (AT) - 2a23 MSM6100 chipset flash - 2a41 MSM6300 chipset - 2a42 Usb Modem - 2a43 MSM6300 chipset flash - 2a61 E815 GSM Phone (P2K) - 2a62 E815 GSM Phone (AT) - 2a63 MSM6500 chipset flash - 2a81 MSM6025 chipset - 2a83 MSM6025 chipset flash - 2ac1 MSM6100 chipset - 2ac3 MSM6100 chipset flash - 3001 A835/E1000 GSM Phone (P2K) - 3002 A835/E1000 GSM Phone (AT) - 3801 C350L/C450 (P2K) - 3802 C330/C350L/C450/EZX GSM Phone (AT) - 3803 Neptune LT chipset flash - 4001 OMAP 1.0 chipset - 4002 A920/A925 UMTS Phone - 4003 OMAP 1.0 chipset flash - 4008 OMAP 1.0 chipset RDL - 4204 MPx200 Smartphone - 4214 MPc GSM - 4224 MPx220 Smartphone - 4234 MPc CDMA - 4244 MPx100 Smartphone - 4801 Neptune LTS chipset - 4803 Neptune LTS chipset flash - 4810 Triplet GSM Phone (storage) - 4901 Triplet GSM Phone (P2K) - 4902 Triplet GSM Phone (AT) - 4903 Neptune LTE chipset flash - 4a01 Neptune LTX chipset - 4a03 Neptune LTX chipset flash - 4a32 L6-imode Phone - 5801 Neptune ULS chipset - 5803 Neptune ULS chipset flash - 5901 Neptune VLT chipset - 5903 Neptune VLT chipset flash - 6001 Dalhart EZX - 6003 Dalhart flash - 6004 EZX GSM Phone (CDC Net) - 6008 Dalhart RDL - 6009 EZX GSM Phone (P2K) - 600a Dalhart EZX config 17 - 600b Dalhart EZX config 18 - 600c EZX GSM Phone (USBLAN) - 6021 JUIX chipset - 6023 JUIX chipset flash - 6026 Flash RAM Downloader/miniOS - 6027 USBLAN - 604c EZX GSM Phone (Storage) - 6101 Talon integrated chipset - 6401 Argon chipset - 6403 Argon chipset flash - 6415 ROKR Z6 (MTP mode) - 6604 Washington CDMA Phone - 6631 CDC Modem -22b9 eTurboTouch Technology, Inc. -22ba Technology Innovation Holdings, Ltd -2304 Pinnacle Systems, Inc. [hex] - 0109 Studio PCTV USB (SECAM) - 0110 Studio PCTV USB (PAL) - 0111 Miro PCTV USB - 0112 Studio PCTV USB (NTSC) with FM radio - 0201 Systems MovieBox Device - 0204 MovieBox USB_B - 0205 DVC 150B - 0206 Systems MovieBox Deluxe Device - 0207 Dazzle DVC90 Video Device - 0208 Studio PCTV USB2 - 020e PCTV 200e - 020f PCTV 400e BDA Device - 0210 Studio PCTV USB (PAL) with FM radio - 0212 Studio PCTV USB (NTSC) - 0213 500-USB Device - 0214 Studio PCTV USB (PAL) with FM radio - 0216 PCTV 60e - 0219 PCTV 260e - 021a Dazzle DVC100 Audio Device - 021b Dazzle DVC130/DVC170 - 021d Dazzle DVC130 - 021e Dazzle DVC170 - 021f PCTV Sat HDTV Pro BDA Device - 0222 PCTV Sat Pro BDA Device - 0223 DazzleTV Sat BDA Device - 0226 PCTV 330e - 0227 PCTV for Mac, HD Stick - 0228 PCTV DVB-T Flash Stick - 022a PCTV 160e - 022b PCTV 71e - 0232 PCTV 170e - 0300 Studio Linx Video input cable (NTSC) - 0301 Studio Linx Video input cable (PAL) - 0302 Dazzle DVC120 - 0419 PCTV Bungee USB (PAL) with FM radio - 061d PCTV Deluxe (NTSC) Device - 061e PCTV Deluxe (PAL) Device -2318 Shining Technologies, Inc. [hex] - 0011 CitiDISK Jr. IDE Enclosure -2375 Digit@lway, Inc. - 0001 Digital Audio Player -2406 SANHO Digital Electronics Co., Ltd. - 6688 PD7X Portable Storage -2478 Tripp-Lite - 2008 U209-000-R Serial Port -2632 TwinMOS - 3209 7-in-1 Card Reader -2650 Electronics For Imaging, Inc. [hex] -2730 Citizen - 200f CT-S310 Label printer -2735 DigitalWay - 0003 MPIO 1.5GB Hard Disc Drive -2770 NHJ, Ltd - 0a01 ScanJet 4600 series - 905c Che-Ez Snap SNAP-U/Digigr8/Soundstar TDC-35 - 9060 A130 - 9120 Che-ez! Snap / iClick Tiny VGA Digital Camera - 9130 TCG 501 - 913c Argus DC-1730 - 9150 Mini Cam - 9153 iClick 5X - 915d Cyberpix S-210S / Little Tikes My Real Digital Camera - 930b CCD Webcam(PC370R) - 930c CCD Webcam(PC370R) -2899 Toptronic Industrial Co., Ltd -2c02 Planex Communications - 14ea GW-US11H WLAN -2fb2 Fujitsu, Ltd -3125 Eagletron - 0001 TrackerPod Camera Stand -3176 Whanam Electronics Co., Ltd -3275 VidzMedia Pte Ltd - 4fb1 MonsterTV P2H -3334 AEI - 1701 Fast Ethernet -3340 Yakumo - 043a Mio A701 DigiWalker PPCPhone - 0e3a Pocket PC 300 GPS SL / Typhoon MyGuide 3500 - a0a3 deltaX 5 BT (D) PDA -3504 Micro Star - f110 Security Key -3538 Power Quotient International Co., Ltd - 0001 Travel Flash - 0015 Mass Storge Device - 0022 Hi-Speed Mass Storage Device - 0042 Cool Drive U339 Flash Disk -3579 DIVA - 6901 Media Reader -3636 InVibro -3838 WEM - 0001 5-in-1 Card Reader -3923 National Instruments Corp. - 12c0 DAQPad-6020E - 12d0 DAQPad-6507 - 12e0 NI 4350 - 12f0 NI 5102 - 1750 DAQPad-6508 - 17b0 USB-ISA-Bridge - 1820 DAQPad-6020E (68 pin I/O) - 1830 DAQPad-6020E (BNC) - 1f00 DAQPad-6024E - 1f10 DAQPad-6024E - 1f20 DAQPad-6025E - 1f30 DAQPad-6025E - 1f40 DAQPad-6036E - 1f50 DAQPad-6036E - 2f80 DAQPad-6052E - 2f90 DAQPad-6052E - 703c USB-485 RS485 Cable - 7254 NI MIO (data acquisition card) firmware updater - 729e USB-6251 (OEM) data acquisition card -40bb I-O Data - 0a09 USB2.0-SCSI Bridge USB2-SC -4101 i-rocks - 1301 IR-2510 usb phone -4102 iRiver, Ltd. - 1001 iFP-100 series mp3 player - 1003 iFP-300 series mp3 player - 1005 iFP-500 series mp3 player - 1007 iFP-700 series mp3/ogg vorbis player - 1008 iFP-800 series mp3/ogg vorbis player - 100a iFP-1000 series mp3/ogg vorbis player - 1014 T20 series mp3/ogg vorbis player (ums firmware) - 1101 iFP-100 series mp3 player (ums firmware) - 1103 iFP-300 series mp3 player (ums firmware) - 1105 iFP-500 series mp3 player (ums firmware) - 1113 T10 (alternate) - 1117 T10 - 1119 T30 series mp3/ogg/wma player - 2002 H10 6GB - 2101 H10 20GB (mtp) - 2102 H10 5GB (mtp) - 2105 H10 5/6GB (mtp) -413c Dell Computer Corp. - 0058 Port Replicator - 1001 Keyboard Hub - 1002 Keyboard Hub - 2001 Keyboard HID Support - 2002 SK-8125 Keyboard - 2003 Keyboard - 2005 RT7D50 Keyboard - 2100 SK-3106 Keyboard - 2101 SmartCard Reader Keyboard - 2500 DRAC4 Remote Access Card - 3010 Optical Wheel Mouse - 3200 Mouse - 4001 Axim X5 - 4002 Axim X3 - 4003 Axim X30 - 4004 Axim Sync - 4005 Axim Sync - 4006 Axim Sync - 4007 Axim Sync - 4008 Axim Sync - 4009 Axim Sync - 4011 Axim X51v - 5103 AIO Printer A940 - 5105 AIO Printer A920 - 5107 AIO Printer A960 - 5109 Photo AIO Printer 922 - 5110 Photo AIO Printer 962 - 5111 Photo AIO Printer 942 - 5112 Photo AIO Printer 924 - 5113 Photo AIO Printer 944 - 5114 Photo AIO Printer 964 - 5115 Photo AIO Printer 926 - 5116 AIO Printer 946 - 5117 Photo AIO Printer 966 - 5118 AIO 810 - 5124 Laser MFP 1815 - 5128 Photo AIO 928 - 5200 Laser Printer - 5202 Printing Support - 5203 Printing Support - 5210 Printing Support - 5211 Printing Support - 5220 Laser MFP 1600n - 5225 Printing Support - 5226 Printing Support - 5300 Laser Printer - 5400 Laser Printer - 5401 Laser Printer - 5601 Laser Printer 3100cn - 5602 Laser Printer 3000cn - 5631 Laser Printer 5100cn - 5905 Printing Support - 8000 BC02 Bluetooth USB Adapter - 8010 TrueMobile Bluetooth Module in - 8100 TrueMobile 1180 802.11b Adapter - 8102 TrueMobile 1300 USB2.0 WLAN Card - 8103 Wireless 350 Bluetooth - 8104 Wireless 1450 Dual-band (802.11a/b/g) USB2.0 Adapter - 8105 U2 in HID - Driver - 8106 Wireless 350 Bluetooth Internal Card in - 8110 Wireless 3xx Bluetooth Internal Card - 8111 Wireless 3xx Bluetooth Internal Card in - 8114 Wireless 5700 Mobile Broadband (CDMA EV-DO) Minicard Modem - 8115 Wireless 5500 Mobile Broadband (3G HSDPA) Minicard Modem - 8116 Wireless 5505 Mobile Broadband (3G HSDPA) Minicard Modem - 8117 Wireless 5700 Mobile Broadband (CDMA EV-DO) Expresscard Modem - 8118 Wireless 5510 Mobile Broadband (3G HSDPA) Expresscard Status Port - 8120 Bluetooth adapter - 8121 Eastfold in HID - 8122 Eastfold in DFU - 8123 eHome Infrared Receiver - 8124 eHome Infrared Receiver - 8126 Wireless 355 Bluetooth - 8127 Wireless 355 Module with Bluetooth 2.0 + EDR Technology. - 8128 Wireless 5700-Sprint Mobile Broadband (CDMA EV-DO) Mini-Card Status Port - 8129 Wireless 5700-Telus Mobile Broadband (CDMA EV-DO) Mini-Card Status Port - 8131 Wireless 360 Bluetooth 2.0 + EDR module. - 8133 Wireless 5720 VZW Mobile Broadband (EVDO Rev-A) Minicard GPS Port - 8134 Wireless 5720 Sprint Mobile Broadband (EVDO Rev-A) Minicard Status Port - 8135 Wireless 5720 TELUS Mobile Broadband (EVDO Rev-A) Minicard Diagnostics Port - 8136 Wireless 5520 Cingular Mobile Broadband (3G HSDPA) Minicard Diagnostics Port - 8137 Wireless 5520 Voda L Mobile Broadband (3G HSDPA) Minicard Status Port - 8138 Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard EAP-SIM Port - 8140 Wireless 360 Bluetooth - 8142 Mobile 360 in DFU - 8501 Bluetooth Adapter - a001 Hub - a005 Internal 2.0 Hub - a700 Hub (in 1905FP LCD Monitor) -4146 USBest Technology - 9281 Iomega Micro Mini 128MB Flash Drive - ba01 Intuix Flash Drive -4242 USB Design by Example - 4201 Buttons and Lights HID device - 4220 Echo 1 Camera -4348 WinChipHead - 5523 USB->RS 232 adapter with Prolifec PL 2303 chipset - 5537 13.56Mhz RFID Card Reader and Writer - 5584 CH34x printer adapter cable -4572 Shuttle, Inc. - 4572 Shuttle PN31 Remote -4586 Panram - 1026 Crystal Bar Flash Drive -4670 EMS Production - 9394 Game Cube USB Memory Adaptor 64M -4752 Miditech - 0011 Midistart-2 -4766 Aceeca - 0001 MEZ1000 RDA -4855 Memorex - 7288 Ultra Traveldrive 160G 2.5" HDD -5032 Grandtec - 0bb8 Grandtec USB1.1 DVB-T (cold) - 0bb9 Grandtec USB1.1 DVB-T (warm) - 0fa0 Grandtec USB1.1 DVB-T (cold) - 0fa1 Grandtec USB1.1 DVB-T (warm) -5041 Linksys (?) - 2234 WUSB54G 802.11g Adapter -5173 Sweex - 1809 ZD1211 -5345 Owon - 1234 PDS6062T Oscilloscope -544d Transmeta Corp. -5543 UC-Logic Technology Corp. - 0002 SuperPen WP3325U Tablet - 0003 Genius MousePen 4x3 Tablet/Aquila L1 Tablet - 0004 Genius MousePen 5x4 Tablet - 0005 Genius MousePen 8x6 Tablet - 0041 Genius PenSketch 6x8 Tablet - 0042 Genius PenSketch 12x9 Tablet -55aa OnSpec Electronic, Inc. - 0015 Hard Drive - 0102 SuperDisk - 0103 IDE Hard Drive - 0201 DDI to Reader-19 - 1234 ATAPI Bridge - a103 Sandisk SDDR-55 SmartMedia Card Reader - b000 USB to CompactFlash Card Reader - b004 OnSpec MMC/SD Reader/Writer - b00b USB to Memory Stick Card Reader - b00c USB to SmartMedia Card Reader - b012 Mitsumi FA402M 8-in-2 Card Reader - b200 Compact Flash Reader - b204 MMC/ SD Reader - b207 Memory Stick Reader -5986 Acer, Inc - 0102 Crystal Eye webcam -5a57 Zinwell - 0260 RT2570 -6189 Sitecom - 182d USB 2.0 Ethernet - 2068 USB to serial cable (v2) -6253 TwinHan Technology Co., Ltd - 0100 Ir reciver f. remote control -636c CoreLogic, Inc. -6547 Arkmicro Technologies Inc. - 0232 ARK3116 Serial -6666 Prototype product Vendor ID - 0667 WiseGroup Smart Joy PSX, PS-PC Smart JoyPad - 2667 JCOP BlueZ Smartcard reader - 8804 WiseGroup SuperJoy Box 5 -6891 3Com - a727 3CRUSB10075 -6993 Freshtel - b001 FT-102 VoIP USB Phone -6a75 Shanghai Jujo Electronics Co., Ltd -7104 CME (Central Music Co.) - 2202 UF5/UF6/UF7/UF8 MIDI Master Keyboard -8086 Intel Corp. - 0001 AnyPoint (TM) Home Network 1.6 Mbps Wireless Adapter - 0100 Personal Audio Player 3000 - 0101 Personal Audio Player 3000 - 0110 Easy PC Camera - 0120 PC Camera CS120 - 0200 AnyPoint(TM) Wireless II Network 11Mbps Adapter - 0431 Intel Pro Video PC Camera - 0510 Digital Movie Creator - 0630 Pocket PC Camera - 0780 CS780 Microphone Input - 07d3 BLOB boot loader firmware - 0dad Cherry MiniatureCard Keyboard - 1010 AnyPoint(TM) Home Network 10 Mbps Phoneline Adapter - 110a Bluetooth Controller from (Ericsson P4A) - 110b Bluetooth Controller from (Intel/CSR) - 1110 PRO/Wireless LAN Module - 1111 PRO/Wireless 2011B 802.11b Adapter - 1134 Hollister Mobile Monitor - 1234 Prototype Reader/Writer - 3100 PRO/DSL 3220 Modem - WAN - 3101 PRO/DSL 3220 Modem - 3240 AnyPoint® 3240 Modem - WAN - 3241 AnyPoint® 3240 Modem - 8602 Miniature Card Slot - 9303 Intel 8x930Hx Hub - 9890 82930 Test Board - beef SCM Miniature Card Reader/Writer - c013 Wireless HID Station - f001 XScale PXA27x Bulverde flash -8341 EGO Systems, Inc. - 2000 Flashdisk -9016 Sitecom - 182d WL-022 -9710 MosChip Semiconductor - 7703 MCS7703 Serial Port Adapter - 7705 Printer cable - 7715 Printer cable - 7780 MS7780 4Mbps Fast IRDA Adapter - 7830 MCS7830 Ethernet -a727 3Com - 6893 AR5523 - 6895 AR5523 - 6897 AR5523 -c251 Keil Software, Inc. - 2710 ULink -eb1a eMPIA Technology, Inc. - 17de KWorld V-Stream XPERT DTV - DVB-T USB cold - 17df KWorld V-Stream XPERT DTV - DVB-T USB warm - 2710 SilverCrest WebCam - 2750 ECS Elitegroup G220 integrated webcam - 2800 Terratec Cinergy 200 - 2801 GrabBeeX+ Video Encoder -f003 Hewlett Packard - 6002 PhotoSmart C500 - -# List of known device classes, subclasses and protocols - -# Syntax: -# C class class_name -# subclass subclass_name <-- single tab -# protocol protocol_name <-- two tabs - -C 00 (Defined at Interface level) -C 01 Audio - 01 Control Device - 02 Streaming - 03 MIDI Streaming -C 02 Communications - 01 Direct Line - 02 Abstract (modem) - 00 None - 01 AT-commands (v.25ter) - 02 AT-commands (PCCA101) - 03 AT-commands (PCCA101 + wakeup) - 04 AT-commands (GSM) - 05 AT-commands (3G) - 06 AT-commands (CDMA) - fe Defined by command set descriptor - ff Vendor Specific (MSFT RNDIS?) - 03 Telephone - 04 Multi-Channel - 05 CAPI Control - 06 Ethernet Networking - 07 ATM Networking - 08 Wireless Handset Control - 09 Device Management - 0a Mobile Direct Line - 0b OBEX - 0c Ethernet Emulation - 07 Ethernet Emulation (EEM) -C 03 Human Interface Device - 00 No Subclass - 00 None - 01 Keyboard - 02 Mouse - 01 Boot Interface Subclass - 00 None - 01 Keyboard - 02 Mouse -C 05 Physical Interface Device -C 06 Imaging - 01 Still Image Capture - 01 Picture Transfer Protocol (PIMA 15470) -C 07 Printer - 01 Printer - 00 Reserved/Undefined - 01 Unidirectional - 02 Bidirectional - 03 IEEE 1284.4 compatible bidirectional - ff Vendor Specific -C 08 Mass Storage - 01 RBC (typically Flash) - 00 Control/Bulk/Interrupt - 01 Control/Bulk - 50 Bulk (Zip) - 02 SFF-8020i, MMC-2 (ATAPI) - 03 QIC-157 - 04 Floppy (UFI) - 00 Control/Bulk/Interrupt - 01 Control/Bulk - 50 Bulk (Zip) - 05 SFF-8070i - 06 SCSI - 00 Control/Bulk/Interrupt - 01 Control/Bulk - 50 Bulk (Zip) -C 09 Hub - 00 Unused - 00 Full speed (or root) hub - 01 Single TT - 02 TT per port -C 0a CDC Data - 00 Unused - 30 I.430 ISDN BRI - 31 HDLC - 32 Transparent - 50 Q.921M - 51 Q.921 - 52 Q.921TM - 90 V.42bis - 91 Q.932 EuroISDN - 92 V.120 V.24 rate ISDN - 93 CAPI 2.0 - fd Host Based Driver - fe CDC PUF - ff Vendor specific -C 0b Chip/SmartCard -C 0d Content Security -C 0e Video - 00 Undefined - 01 Video Control - 02 Video Streaming - 03 Video Interface Collection -C dc Diagnostic - 01 Reprogrammable Diagnostics - 01 USB2 Compliance -C e0 Wireless - 01 Radio Frequency - 01 Bluetooth - 02 Ultra WideBand Radio Control - 03 RNDIS - 02 Wireless USB Wire Adapter - 01 Host Wire Adapter Control/Data Streaming - 02 Device Wire Adapter Control/Data Streaming - 03 Device Wire Adapter Isochronous Streaming -C ef Miscellaneous Device - 01 ? - 01 Microsoft ActiveSync - 02 Palm Sync - 02 ? - 01 Interface Association - 02 Wire Adapter Multifunction Peripheral - 03 ? - 01 Cable Based Association -C fe Application Specific Interface - 01 Device Firmware Update - 02 IRDA Bridge - 03 Test and Measurement - 01 TMC - 02 USB488 -C ff Vendor Specific Class - ff Vendor Specific Subclass - ff Vendor Specific Protocol - -# List of Audio Class Terminal Types - -# Syntax: -# AT terminal_type terminal_type_name - -AT 0100 USB Undefined -AT 0101 USB Streaming -AT 01ff USB Vendor Specific -AT 0200 Input Undefined -AT 0201 Microphone -AT 0202 Desktop Microphone -AT 0203 Personal Microphone -AT 0204 Omni-directional Microphone -AT 0205 Microphone Array -AT 0206 Processing Microphone Array -AT 0300 Output Undefined -AT 0301 Speaker -AT 0302 Headphones -AT 0303 Head Mounted Display Audio -AT 0304 Desktop Speaker -AT 0305 Room Speaker -AT 0306 Communication Speaker -AT 0307 Low Frequency Effects Speaker -AT 0400 Bidirectional Undefined -AT 0401 Handset -AT 0402 Headset -AT 0403 Speakerphone, no echo reduction -AT 0404 Echo-suppressing speakerphone -AT 0405 Echo-canceling speakerphone -AT 0500 Telephony Undefined -AT 0501 Phone line -AT 0502 Telephone -AT 0503 Down Line Phone -AT 0600 External Undefined -AT 0601 Analog Connector -AT 0602 Digital Audio Interface -AT 0603 Line Connector -AT 0604 Legacy Audio Connector -AT 0605 SPDIF interface -AT 0606 1394 DA stream -AT 0607 1394 DV stream soundtrack -AT 0700 Embedded Undefined -AT 0701 Level Calibration Noise Source -AT 0702 Equalization Noise -AT 0703 CD Player -AT 0704 DAT -AT 0705 DCC -AT 0706 MiniDisc -AT 0707 Analog Tape -AT 0708 Phonograph -AT 0709 VCR Audio -AT 070a Video Disc Audio -AT 070b DVD Audio -AT 070c TV Tuner Audio -AT 070d Satellite Receiver Audio -AT 070e Cable Tuner Audio -AT 070f DSS Audio -AT 0710 Radio Receiver -AT 0711 Radio Transmitter -AT 0712 Multitrack Recorder -AT 0713 Synthesizer - -# List of HID Descriptor Types - -# Syntax: -# HID descriptor_type descriptor_type_name - -HID 21 HID -HID 22 Report -HID 23 Physical - -# List of HID Descriptor Item Types -# Note: 2 bits LSB encode data length following - -# Syntax: -# R item_type item_type_name - -# Main Items -R 80 Input -R 90 Output -R b0 Feature -R a0 Collection -R c0 End Collection - -# Global Items -R 04 Usage Page -R 14 Logical Minimum -R 24 Logical Maximum -R 34 Physical Minimum -R 44 Physical Maximum -R 54 Unit Exponent -R 64 Unit -R 74 Report Size -R 84 Report ID -R 94 Report Count -R a4 Push -R b4 Pop - -# Local Items -R 08 Usage -R 18 Usage Minimum -R 28 Usage Maximum -R 38 Designator Index -R 48 Designator Minimum -R 58 Designator Maximum -R 78 String Index -R 88 String Minimum -R 98 String Maximum -R a8 Delimiter - -# List of Physical Descriptor Bias Types - -# Syntax: -# BIAS item_type item_type_name - -BIAS 0 Not Applicable -BIAS 1 Right Hand -BIAS 2 Left Hand -BIAS 3 Both Hands -BIAS 4 Either Hand - -# List of Physical Descriptor Item Types - -# Syntax: -# PHY item_type item_type_name - -PHY 00 None -PHY 01 Hand -PHY 02 Eyeball -PHY 03 Eyebrow -PHY 04 Eyelid -PHY 05 Ear -PHY 06 Nose -PHY 07 Mouth -PHY 08 Upper Lip -PHY 09 Lower Lip -PHY 0a Jaw -PHY 0b Neck -PHY 0c Upper Arm -PHY 0d Elbow -PHY 0e Forearm -PHY 0f Wrist -PHY 10 Palm -PHY 11 Thumb -PHY 12 Index Finger -PHY 13 Middle Finger -PHY 14 Ring Finger -PHY 15 Little Finger -PHY 16 Head -PHY 17 Shoulder -PHY 18 Hip -PHY 19 Waist -PHY 1a Thigh -PHY 1b Knee -PHY 1c calf -PHY 1d Ankle -PHY 1e Foot -PHY 1f Heel -PHY 20 Ball of Foot -PHY 21 Big Toe -PHY 22 Second Toe -PHY 23 Third Toe -PHY 24 Fourth Toe -PHY 25 Fifth Toe -PHY 26 Brow -PHY 27 Cheek - -# List of HID Usages - -# Syntax: -# HUT hi _usage_page hid_usage_page_name -# hid_usage hid_usage_name - -HUT 00 Undefined -HUT 01 Generic Desktop Controls - 000 Undefined - 001 Pointer - 002 Mouse - 004 Joystick - 005 Gamepad - 006 Keyboard - 007 Keypad - 008 Multi-Axis Controller - 030 Direction-X - 031 Direction-Y - 032 Direction-Z - 033 Rotate-X - 034 Rotate-Y - 035 Rotate-Z - 036 Slider - 037 Dial - 038 Wheel - 039 Hat Switch - 03a Counted Buffer - 03b Byte Count - 03c Motion Wakeup - 03d Start - 03e Select - 040 Vector-X - 041 Vector-Y - 042 Vector-Z - 043 Vector-X relative Body - 044 Vector-Y relative Body - 045 Vector-Z relative Body - 046 Vector - 080 System Control - 081 System Power Down - 082 System Sleep - 083 System Wake Up - 084 System Context Menu - 085 System Main Menu - 086 System App Menu - 087 System Menu Help - 088 System Menu Exit - 089 System Menu Select - 08a System Menu Right - 08b System Menu Left - 08c System Menu Up - 08d System Menu Down - 090 Direction Pad Up - 091 Direction Pad Down - 092 Direction Pad Right - 093 Direction Pad Left -HUT 02 Simulation Controls - 000 Undefined - 001 Flight Simulation Device - 002 Automobile Simulation Device - 003 Tank Simulation Device - 004 Spaceship Simulation Device - 005 Submarine Simulation Device - 006 Sailing Simulation Device - 007 Motorcycle Simulation Device - 008 Sports Simulation Device - 009 Airplane Simualtion Device - 00a Helicopter Simulation Device - 00b Magic Carpet Simulation Device - 00c Bicycle Simulation Device - 020 Flight Control Stick - 021 Flight Stick - 022 Cyclic Control - 023 Cyclic Trim - 024 Flight Yoke - 025 Track Control - 0b0 Aileron - 0b1 Aileron Trim - 0b2 Anti-Torque Control - 0b3 Autopilot Enable - 0b4 Chaff Release - 0b5 Collective Control - 0b6 Dive Break - 0b7 Electronic Countermeasures - 0b8 Elevator - 0b9 Elevator Trim - 0ba Rudder - 0bb Throttle - 0bc Flight COmmunications - 0bd Flare Release - 0be Landing Gear - 0bf Toe Break - 0c0 Trigger - 0c1 Weapon Arm - 0c2 Weapons Select - 0c3 Wing Flaps - 0c4 Accelerator - 0c5 Brake - 0c6 Clutch - 0c7 Shifter - 0c8 Steering - 0c9 Turret Direction - 0ca Barrel Elevation - 0cb Drive Plane - 0cc Ballast - 0cd Bicylce Crank - 0ce Handle Bars - 0cf Front Brake - 0d0 Rear Brake -HUT 03 VR Controls - 000 Unidentified - 001 Belt - 002 Body Suit - 003 Flexor - 004 Glove - 005 Head Tracker - 006 Head Mounted Display - 007 Hand Tracker - 008 Oculometer - 009 Vest - 00a Animatronic Device - 020 Stereo Enable - 021 Display Enable -HUT 04 Sport Controls - 000 Unidentified - 001 Baseball Bat - 002 Golf Club - 003 Rowing Machine - 004 Treadmill - 030 Oar - 031 Slope - 032 Rate - 033 Stick Speed - 034 Stick Face Angle - 035 Stick Heel/Toe - 036 Stick Follow Through - 047 Stick Temp - 038 Stick Type - 039 Stick Height - 050 Putter - 051 1 Iron - 052 2 Iron - 053 3 Iron - 054 4 Iron - 055 5 Iron - 056 6 Iron - 057 7 Iron - 058 8 Iron - 059 9 Iron - 05a 10 Iron - 05b 11 Iron - 05c Sand Wedge - 05d Loft Wedge - 05e Power Wedge - 05f 1 Wood - 060 3 Wood - 061 5 Wood - 062 7 Wood - 063 9 Wood -HUT 05 Game Controls - 000 Undefined - 001 3D Game Controller - 002 Pinball Device - 003 Gun Device - 020 Point Of View - 021 Turn Right/Left - 022 Pitch Right/Left - 023 Roll Forward/Backward - 024 Move Right/Left - 025 Move Forward/Backward - 026 Move Up/Down - 027 Lean Right/Left - 028 Lean Forward/Backward - 029 Height of POV - 02a Flipper - 02b Secondary Flipper - 02c Bump - 02d New Game - 02e Shoot Ball - 02f Player - 030 Gun Bolt - 031 Gun Clip - 032 Gun Selector - 033 Gun Single Shot - 034 Gun Burst - 035 Gun Automatic - 036 Gun Safety - 037 Gamepad Fire/Jump - 038 Gamepad Fun - 039 Gamepad Trigger -HUT 07 Keyboard - 000 No Event - 001 Keyboard ErrorRollOver - 002 Keyboard POSTfail - 003 Keyboard Error Undefined - 004 A - 005 B - 006 C - 007 D - 008 E - 009 F - 00a G - 00b H - 00c I - 00d J - 00e K - 00f L - 010 M - 011 N - 012 O - 013 P - 014 Q - 015 R - 016 S - 017 T - 018 U - 019 V - 01a W - 01b X - 01c Y - 01d Z - 01e 1 and ! (One and Exclamation) - 01f 2 and @ (2 and at) - 020 3 and # (3 and Hash) - 021 4 and $ (4 and Dollar Sign) - 022 5 and % (5 and Percent Sign) - 023 6 and ^ (6 and circumflex) - 024 7 and & (Seven and Ampersand) - 025 8 and * (Eight and asterisk) - 026 9 and ( (Nine and Parenthesis Left) - 027 0 and ) (Zero and Parenthesis Right) - 028 Return (Enter) - 029 Escape - 02a Delete (Backspace) - 02b Tab - 02c Space Bar - 02d - and _ (Minus and underscore) - 02e = and + (Equal and Plus) - 02f [ and { (Bracket and Braces Left) - 030 ] and } (Bracket and Braces Right) - 031 \ and | (Backslash and Bar) - 032 # and ~ (Hash and Tilde, Non-US Keyboard near right shift) - 033 ; and : (Semicolon and Colon) - 034 ´ and " (Accent Acute and Double Quotes) - 035 ` and ~ (Accent Grace and Tilde) - 036 , and < (Comma and Less) - 037 . and > (Period and Greater) - 038 / and ? (Slash and Question Mark) - 039 Caps Lock - 03a F1 - 03b F2 - 03c F3 - 03d F4 - 03e F5 - 03f F6 - 040 F7 - 041 F8 - 042 F9 - 043 F10 - 044 F11 - 045 F12 - 046 Print Screen - 047 Scroll Lock - 048 Pause - 049 Insert - 04a Home - 04b Page Up - 04c Delete Forward (without Changing Position) - 04d End - 04e Page Down - 04f Right Arrow - 050 Left Arrow - 051 Down Arrow - 052 Up Arrow - 053 Num Lock and Clear - 054 Keypad / (Division Sign) - 055 Keypad * (Multiplication Sign) - 056 Keypad - (Subtraction Sign) - 057 Keypad + (Addition Sign) - 058 Keypad Enter - 059 Keypad 1 and END - 05a Keypad 2 and Down Arrow - 05b Keypad 3 and Page Down - 05c Keypad 4 and Left Arrow - 05d Keypad 5 (Tactilei Raised) - 05f Keypad 6 and Right Arrow - 060 Keypad 7 and Home - 061 Keypad 8 and Up Arrow - 062 Keypad 8 and Page Up - 063 Keypad . (decimal delimiter) and Delete - 064 \ and | (Backslash and Bar, UK and Non-US Keyboard near left shift) - 065 Keyboard Application (Windows Key for Win95 or Compose) - 066 Power (not a key) - 067 Keypad = (Equal Sign) - 068 F13 - 069 F14 - 06a F15 - 06b F16 - 06c F17 - 06d F18 - 06e F19 - 06f F20 - 070 F21 - 071 F22 - 072 F23 - 073 F24 - 074 Execute - 075 Help - 076 Menu - 077 Select - 078 Stop - 079 Again - 07a Undo - 07b Cut - 07c Copy - 07d Paste - 07e Find - 07f Mute - 080 Volume Up - 081 Volume Down - 082 Locking Caps Lock - 083 Locking Num Lock - 084 Locking Scroll Lock - 085 Keypad Comma - 086 Keypad Equal Sign (AS/400) - 087 International 1 (PC98) - 088 International 2 (PC98) - 089 International 3 (PC98) - 08a International 4 (PC98) - 08b International 5 (PC98) - 08c International 6 (PC98) - 08d International 7 (Toggle Single/Double Byte Mode) - 08e International 8 - 08f International 9 - 090 LANG 1 (Hangul/English Toggle, Korea) - 091 LANG 2 (Hanja Conversion, Korea) - 092 LANG 3 (Katakana, Japan) - 093 LANG 4 (Hiragana, Japan) - 094 LANG 5 (Zenkaku/Hankaku, Japan) - 095 LANG 6 - 096 LANG 7 - 097 LANG 8 - 098 LANG 9 - 099 Alternate Erase - 09a SysReq/Attention - 09b Cancel - 09c Clear - 09d Prior - 09e Return - 09f Separator - 0a0 Out - 0a1 Open - 0a2 Clear/Again - 0a3 CrSel/Props - 0a4 ExSel - 0e0 Control Left - 0e1 Shift Left - 0e2 Alt Left - 0e3 GUI Left - 0e4 Control Right - 0e5 Shift Right - 0e6 Alt Rigth - 0e7 GUI Right -HUT 08 LEDs - 000 Undefined - 001 NumLock - 002 CapsLock - 003 Scroll Lock - 004 Compose - 005 Kana - 006 Power - 007 Shift - 008 Do not disturb - 009 Mute - 00a Tone Enabke - 00b High Cut Filter - 00c Low Cut Filter - 00d Equalizer Enable - 00e Sound Field ON - 00f Surround On - 010 Repeat - 011 Stereo - 012 Sampling Rate Detect - 013 Spinning - 014 CAV - 015 CLV - 016 Recording Format Detect - 017 Off-Hook - 018 Ring - 019 Message Waiting - 01a Data Mode - 01b Battery Operation - 01c Battery OK - 01d Battery Low - 01e Speaker - 01f Head Set - 020 Hold - 021 Microphone - 022 Coverage - 023 Night Mode - 024 Send Calls - 025 Call Pickup - 026 Conference - 027 Stand-by - 028 Camera On - 029 Camera Off - 02a On-Line - 02b Off-Line - 02c Busy - 02d Ready - 02e Paper-Out - 02f Paper-Jam - 030 Remote - 031 Forward - 032 Reverse - 033 Stop - 034 Rewind - 035 Fast Forward - 036 Play - 037 Pause - 038 Record - 039 Error - 03a Usage Selected Indicator - 03b Usage In Use Indicator - 03c Usage Multi Indicator - 03d Indicator On - 03e Indicator Flash - 03f Indicator Slow Blink - 040 Indicator Fast Blink - 041 Indicator Off - 042 Flash On Time - 043 Slow Blink On Time - 044 Slow Blink Off Time - 045 Fast Blink On Time - 046 Fast Blink Off Time - 047 Usage Color Indicator - 048 Indicator Red - 049 Indicator Green - 04a Indicator Amber - 04b Generic Indicator - 04c System Suspend - 04d External Power Connected -HUT 09 Buttons - 000 No Button Pressed - 001 Button 1 (Primary) - 002 Button 2 (Secondary) - 003 Button 3 (Tertiary) - 004 Button 4 - 005 Button 5 -HUT 0a Ordinal - 001 Instance 1 - 002 Instance 2 - 003 Instance 3 -HUT 0b Telephony - 000 Unassigned - 001 Phone - 002 Answering Machine - 003 Message Controls - 004 Handset - 005 Headset - 006 Telephony Key Pad - 007 Programmable Button - 020 Hook Switch - 021 Flash - 022 Feature - 023 Hold - 024 Redial - 025 Transfer - 026 Drop - 027 Park - 028 Forward Calls - 029 Alternate Function - 02a Line - 02b Speaker Phone - 02c Conference - 02d Ring Enable - 02e Ring Select - 02f Phone Mute - 030 Caller ID - 050 Speed Dial - 051 Store Number - 052 Recall Number - 053 Phone Directory - 070 Voice Mail - 071 Screen Calls - 072 Do Not Disturb - 073 Message - 074 Answer On/Offf - 090 Inside Dial Tone - 091 Outside Dial Tone - 092 Inside Ring Tone - 093 Outside Ring Tone - 094 Priority Ring Tone - 095 Inside Ringback - 096 Priority Ringback - 097 Line Busy Tone - 098 Recorder Tone - 099 Call Waiting Tone - 09a Confirmation Tone 1 - 09b Confirmation Tone 2 - 09c Tones Off - 09d Outside Ringback - 0b0 Key 1 - 0b1 Key 2 - 0b3 Key 3 - 0b4 Key 4 - 0b5 Key 5 - 0b6 Key 6 - 0b7 Key 7 - 0b8 Key 8 - 0b9 Key 9 - 0ba Key Star - 0bb Key Pound - 0bc Key A - 0bd Key B - 0be Key C - 0bf Key D -HUT 0c Consumer - 000 Unassigned - 001 Consumer Control - 002 Numeric Key Pad - 003 Programmable Buttons - 020 +10 - 021 +100 - 022 AM/PM - 030 Power - 031 Reset - 032 Sleep - 033 Sleep After - 034 Sleep Mode - 035 Illumination - 036 Function Buttons - 040 Menu - 041 Menu Pick - 042 Menu Up - 043 Menu Down - 044 Menu Left - 045 Menu Right - 046 Menu Escape - 047 Menu Value Increase - 048 Menu Value Decrease - 060 Data on Screen - 061 Closed Caption - 062 Closed Caption Select - 063 VCR/TV - 064 Broadcast Mode - 065 Snapshot - 066 Still - 080 Selection - 081 Assign Selection - 082 Mode Step - 083 Recall Last - 084 Enter Channel - 085 Order Movie - 086 Channel - 087 Media Selection - 088 Media Select Computer - 089 Media Select TV - 08a Media Select WWW - 08b Media Select DVD - 08c Media Select Telephone - 08d Media Select Program Guide - 08e Media Select Video Phone - 08f Media Select Games - 090 Media Select Messages - 091 Media Select CD - 092 Media Select VCR - 093 Media Select Tuner - 094 Quit - 095 Help - 096 Media Select Tape - 097 Media Select Cable - 098 Media Select Satellite - 099 Media Select Security - 09a Media Select Home - 09b Media Select Call - 09c Channel Increment - 09d Channel Decrement - 09e Media Select SAP - 0a0 VCR Plus - 0a1 Once - 0a2 Daily - 0a3 Weekly - 0a4 Monthly - 0b0 Play - 0b1 Pause - 0b2 Record - 0b3 Fast Forward - 0b4 Rewind - 0b5 Scan Next Track - 0b6 Scan Previous Track - 0b7 Stop - 0b8 Eject - 0b9 Random Play - 0ba Select Disc - 0bb Enter Disc - 0bc Repeat - 0bd Tracking - 0be Track Normal - 0bf Slow Tracking - 0c0 Frame Forward - 0c1 Frame Back - 0c2 Mark - 0c3 Clear Mark - 0c4 Repeat from Mark - 0c5 Return to Mark - 0c6 Search Mark Forward - 0c7 Search Mark Backward - 0c8 Counter Reset - 0c9 Show Counter - 0ca Tracking Increment - 0cb Tracking Decrement - 0cc Stop/Eject - 0cd Play/Pause - 0ce Play/Skip - 0e0 Volume - 0e1 Balance - 0e2 Mute - 0e3 Bass - 0e4 Treble - 0e5 Bass Boost - 0e6 Surround Mode - 0e7 Loudness - 0e8 MPX - 0e9 Volume Increment - 0ea Volume Decrement - 0f0 Speed Select - 0f1 Playback Speed - 0f2 Standard Play - 0f3 Long Play - 0f4 Extended Play - 0f5 Slow - 100 Fan Enable - 101 Fan Speed - 102 Light Enable - 103 Light Illumination Level - 104 Climate Control Enable - 105 Room Temperature - 106 Security Enable - 107 Fire Alarm - 108 Police Alarm - 150 Balance Right - 151 Balance Left - 152 Bass Increment - 153 Bass Decrement - 154 Treble Increment - 155 Treble Decrement - 160 Speaker System - 161 Channel Left - 162 Channel Right - 163 Channel Center - 164 Channel Front - 165 Channel Center Front - 166 Channel Side - 167 Channel Surround - 168 Channel Low Frequency Enhancement - 169 Channel Top - 16a Channel Unknown - 170 Sub-Channel - 171 Sub-Channel Increment - 172 Sub-Channel Decrement - 173 Alternative Audio Increment - 174 Alternative Audio Decrement - 180 Application Launch Buttons - 181 AL Launch Button Configuration Tool - 182 AL Launch Button Configuration - 183 AL Consumer Control Configuration - 184 AL Word Processor - 185 AL Text Editor - 186 AL Spreadsheet - 187 AL Graphics Editor - 188 AL Presentation App - 189 AL Database App - 18a AL Email Reader - 18b AL Newsreader - 18c AL Voicemail - 18d AL Contacts/Address Book - 18e AL Calendar/Schedule - 18f AL Task/Project Manager - 190 AL Log/Jounal/Timecard - 191 AL Checkbook/Finance - 192 AL Calculator - 193 AL A/V Capture/Playback - 194 AL Local Machine Browser - 195 AL LAN/Wan Browser - 196 AL Internet Browser - 197 AL Remote Networking/ISP Connect - 198 AL Network Conference - 199 AL Network Chat - 19a AL Telephony/Dialer - 19b AL Logon - 19c AL Logoff - 19d AL Logon/Logoff - 19e AL Terminal Local/Screensaver - 19f AL Control Panel - 1a0 AL Command Line Processor/Run - 1a1 AL Process/Task Manager - 1a2 AL Select Task/Application - 1a3 AL Next Task/Application - 1a4 AL Previous Task/Application - 1a5 AL Preemptive Halt Task/Application - 200 Generic GUI Application Controls - 201 AC New - 202 AC Open - 203 AC CLose - 204 AC Exit - 205 AC Maximize - 206 AC Minimize - 207 AC Save - 208 AC Print - 209 AC Properties - 21a AC Undo - 21b AC Copy - 21c AC Cut - 21d AC Paste - 21e AC Select All - 21f AC Find - 220 AC Find and Replace - 221 AC Search - 222 AC Go To - 223 AC Home - 224 AC Back - 225 AC Forward - 226 AC Stop - 227 AC Refresh - 228 AC Previous Link - 229 AC Next Link - 22b AC History - 22c AC Subscriptions - 22d AC Zoom In - 22e AC Zoom Out - 22f AC Zoom - 230 AC Full Screen View - 231 AC Normal View - 232 AC View Toggle - 233 AC Scroll Up - 234 AC Scroll Down - 235 AC Scroll - 236 AC Pan Left - 237 AC Pan Right - 238 AC Pan - 239 AC New Window - 23a AC Tile Horizontally - 23b AC Tile Vertically - 23c AC Format -HUT 0d Digitizer - 000 Undefined - 001 Digitizer - 002 Pen - 003 Light Pen - 004 Touch Screen - 005 Touch Pad - 006 White Board - 007 Coordinate Measuring Machine - 008 3D Digitizer - 009 Stereo Plotter - 00a Articulated Arm - 00b Armature - 00c Multiple Point Digitizer - 00d Free Space Wand - 020 Stylus - 021 Puck - 022 Finger - 030 Tip Pressure - 031 Barrel Pressure - 032 In Range - 033 Touch - 034 Untouch - 035 Tap - 036 Quality - 037 Data Valid - 038 Transducer Index - 039 Tablet Function Keys - 03a Program Change Keys - 03b Battery Strength - 03c Invert - 03d X Tilt - 03e Y Tilt - 03f Azimuth - 040 Altitude - 041 Twist - 042 Tip Switch - 043 Secondary Tip Switch - 044 Barrel Switch - 045 Eraser - 046 Tablet Pick -HUT 0f PID Page - 000 Undefined - 001 Physical Interface Device - 020 Normal - 021 Set Effect Report - 022 Effect Block Index - 023 Parameter Block Offset - 024 ROM Flag - 025 Effect Type - 026 ET Constant Force - 027 ET Ramp - 028 ET Custom Force Data - 030 ET Square - 031 ET Sine - 032 ET Triangle - 033 ET Sawtooth Up - 034 ET Sawtooth Down - 040 ET Spring - 041 ET Damper - 042 ET Inertia - 043 ET Friction - 050 Duration - 051 Sample Period - 052 Gain - 053 Trigger Button - 054 Trigger Repeat Interval - 055 Axes Enable - 056 Direction Enable - 057 Direction - 058 Type Specific Block Offset - 059 Block Type - 05A Set Envelope Report - 05B Attack Level - 05C Attack Time - 05D Fade Level - 05E Fade Time - 05F Set Condition Report - 060 CP Offset - 061 Positive Coefficient - 062 Negative Coefficient - 063 Positive Saturation - 064 Negative Saturation - 065 Dead Band - 066 Download Force Sample - 067 Isoch Custom Force Enable - 068 Custom Force Data Report - 069 Custom Force Data - 06A Custom Force Vendor Defined Data - 06B Set Custom Force Report - 06C Custom Force Data Offset - 06D Sample Count - 06E Set Periodic Report - 06F Offset - 070 Magnitude - 071 Phase - 072 Period - 073 Set Constant Force Report - 074 Set Ramp Force Report - 075 Ramp Start - 076 Ramp End - 077 Effect Operation Report - 078 Effect Operation - 079 Op Effect Start - 07A Op Effect Start Solo - 07B Op Effect Stop - 07C Loop Count - 07D Device Gain Report - 07E Device Gain - 07F PID Pool Report - 080 RAM Pool Size - 081 ROM Pool Size - 082 ROM Effect Block Count - 083 Simultaneous Effects Max - 084 Pool Alignment - 085 PID Pool Move Report - 086 Move Source - 087 Move Destination - 088 Move Length - 089 PID Block Load Report - 08B Block Load Status - 08C Block Load Success - 08D Block Load Full - 08E Block Load Error - 08F Block Handle - 090 PID Block Free Report - 091 Type Specific Block Handle - 092 PID State Report - 094 Effect Playing - 095 PID Device Control Report - 096 PID Device Control - 097 DC Enable Actuators - 098 DC Disable Actuators - 099 DC Stop All Effects - 09A DC Device Reset - 09B DC Device Pause - 09C DC Device Continue - 09F Device Paused - 0A0 Actuators Enabled - 0A4 Safety Switch - 0A5 Actuator Override Switch - 0A6 Actuator Power - 0A7 Start Delay - 0A8 Parameter Block Size - 0A9 Device Managed Pool - 0AA Shared Parameter Blocks - 0AB Create New Effect Report - 0AC RAM Pool Available -HUT 10 Unicode -HUT 14 Alphanumeric Display - 000 Undefined - 001 Alphanumeric Display - 020 Display Attributes Report - 021 ASCII Character Set - 022 Data Read Back - 023 Font Read Back - 024 Display Control Report - 025 Clear Display - 026 Display Enable - 027 Screen Saver Delay - 028 Screen Saver Enable - 029 Vertical Scroll - 02a Horizontal Scroll - 02b Character Report - 02c Display Data - 02d Display Status - 02e Stat Not Ready - 02f Stat Ready - 030 Err Not a loadable Character - 031 Err Font Data Cannot Be Read - 032 Cursur Position Report - 033 Row - 034 Column - 035 Rows - 036 Columns - 037 Cursor Pixel Positioning - 038 Cursor Mode - 039 Cursor Enable - 03a Cursor Blink - 03b Font Report - 03c Font Data - 03d Character Width - 03e Character Height - 03f Character Spacing Horizontal - 040 Character Spacing Vertical - 041 Unicode Character Set -HUT 80 USB Monitor - 001 Monitor Control - 002 EDID Information - 003 VDIF Information - 004 VESA Version -HUT 81 USB Monitor Enumerated Values -HUT 82 Monitor VESA Virtual Controls - 001 Degauss - 010 Brightness - 012 Contrast - 016 Red Video Gain - 018 Green Video Gain - 01a Blue Video Gain - 01c Focus - 020 Horizontal Position - 022 Horizontal Size - 024 Horizontal Pincushion - 026 Horizontal Pincushion Balance - 028 Horizontal Misconvergence - 02a Horizontal Linearity - 02c Horizontal Linearity Balance - 030 Vertical Position - 032 Vertical Size - 034 Vertical Pincushion - 036 Vertical Pincushion Balance - 038 Vertical Misconvergence - 03a Vertical Linearity - 03c Vertical Linearity Balance - 040 Parallelogram Balance (Key Distortion) - 042 Trapezoidal Distortion (Key) - 044 Tilt (Rotation) - 046 Top Corner Distortion Control - 048 Top Corner Distortion Balance - 04a Bottom Corner Distortion Control - 04c Bottom Corner Distortion Balance - 056 Horizontal Moire - 058 Vertical Moire - 05e Input Level Select - 060 Input Source Select - 06c Red Video Black Level - 06e Green Video Black Level - 070 Blue Video Black Level - 0a2 Auto Size Center - 0a4 Polarity Horizontal Sychronization - 0a6 Polarity Vertical Synchronization - 0aa Screen Orientation - 0ac Horizontal Frequency in Hz - 0ae Vertical Frequency in 0.1 Hz - 0b0 Settings - 0ca On Screen Display (OSD) - 0d4 Stereo Mode -HUT 84 Power Device Page - 000 Undefined - 001 iName - 002 Present Status - 003 Changed Status - 004 UPS - 005 Power Supply - 010 Battery System - 011 Battery System ID - 012 Battery - 013 Battery ID - 014 Charger - 015 Charger ID - 016 Power Converter - 017 Power Converter ID - 018 Outlet System - 019 Outlet System ID - 01a Input - 01b Input ID - 01c Output - 01d Output ID - 01e Flow - 01f Flow ID - 020 Outlet - 021 Outlet ID - 022 Gang - 023 Gang ID - 024 Power Summary - 025 Power Summary ID - 030 Voltage - 031 Current - 032 Frequency - 033 Apparent Power - 034 Active Power - 035 Percent Load - 036 Temperature - 037 Humidity - 038 Bad Count - 040 Config Voltage - 041 Config Current - 042 Config Frequency - 043 Config Apparent Power - 044 Config Active Power - 045 Config Percent Load - 046 Config Temperature - 047 Config Humidity - 050 Switch On Control - 051 Switch Off Control - 052 Toggle Control - 053 Low Voltage Transfer - 054 High Voltage Transfer - 055 Delay Before Reboot - 056 Delay Before Startup - 057 Delay Before Shutdown - 058 Test - 059 Module Reset - 05a Audible Alarm Control - 060 Present - 061 Good - 062 Internal Failure - 063 Voltage out of range - 064 Frequency out of range - 065 Overload - 066 Over Charged - 067 Over Temperature - 068 Shutdown Requested - 069 Shutdown Imminent - 06a Reserved - 06b Switch On/Off - 06c Switchable - 06d Used - 06e Boost - 06f Buck - 070 Initialized - 071 Tested - 072 Awaiting Power - 073 Communication Lost - 0fd iManufacturer - 0fe iProduct - 0ff iSerialNumber -HUT 85 Battery System Page - 000 Undefined - 001 SMB Battery Mode - 002 SMB Battery Status - 003 SMB Alarm Warning - 004 SMB Charger Mode - 005 SMB Charger Status - 006 SMB Charger Spec Info - 007 SMB Selector State - 008 SMB Selector Presets - 009 SMB Selector Info - 010 Optional Mfg. Function 1 - 011 Optional Mfg. Function 2 - 012 Optional Mfg. Function 3 - 013 Optional Mfg. Function 4 - 014 Optional Mfg. Function 5 - 015 Connection to SMBus - 016 Output Connection - 017 Charger Connection - 018 Battery Insertion - 019 Use Next - 01a OK to use - 01b Battery Supported - 01c SelectorRevision - 01d Charging Indicator - 028 Manufacturer Access - 029 Remaining Capacity Limit - 02a Remaining Time Limit - 02b At Rate - 02c Capacity Mode - 02d Broadcast To Charger - 02e Primary Battery - 02f Charge Controller - 040 Terminate Charge - 041 Terminate Discharge - 042 Below Remaining Capacity Limit - 043 Remaining Time Limit Expired - 044 Charging - 045 Discharging - 046 Fully Charged - 047 Fully Discharged - 048 Conditioning Flag - 049 At Rate OK - 04a SMB Error Code - 04b Need Replacement - 060 At Rate Time To Full - 061 At Rate Time To Empty - 062 Average Current - 063 Max Error - 064 Relative State Of Charge - 065 Absolute State Of Charge - 066 Remaining Capacity - 067 Full Charge Capacity - 068 Run Time To Empty - 069 Average Time To Empty - 06a Average Time To Full - 06b Cycle Count - 080 Batt. Pack Model Level - 081 Internal Charge Controller - 082 Primary Battery Support - 083 Design Capacity - 084 Specification Info - 085 Manufacturer Date - 086 Serial Number - 087 iManufacturerName - 088 iDeviceName - 089 iDeviceChemistry - 08a Manufacturer Data - 08b Rechargeable - 08c Warning Capacity Limit - 08d Capacity Granularity 1 - 08e Capacity Granularity 2 - 08f iOEMInformation - 0c0 Inhibit Charge - 0c1 Enable Polling - 0c2 Reset To Zero - 0d0 AC Present - 0d1 Battery Present - 0d2 Power Fail - 0d3 Alarm Inhibited - 0d4 Thermistor Under Range - 0d5 Thermistor Hot - 0d6 Thermistor Cold - 0d7 Thermistor Over Range - 0d8 Voltage Out Of Range - 0d9 Current Out Of Range - 0da Current Not Regulated - 0db Voltage Not Regulated - 0dc Master Mode - 0f0 Charger Selector Support - 0f1 Charger Spec - 0f2 Level 2 - 0f3 Level 3 -HUT 86 Power Pages -HUT 87 Power Pages -HUT 8c Bar Code Scanner Page (POS) -HUT 8d Scale Page (POS) -HUT 90 Camera Control Page -HUT 91 Arcade Control Page -HUT f0 Cash Device - 0f1 Cash Drawer - 0f2 Cash Drawer Number - 0f3 Cash Drawer Set - 0f4 Cash Drawer Status -HUT ff Vendor Specific - -# List of Languages - -# Syntax: -# L language_id language_name -# dialect_id dialect_name - -L 0001 Arabic - 01 Saudi Arabia - 02 Iraq - 03 Egypt - 04 Libya - 05 Algeria - 06 Morocco - 07 Tunesia - 08 Oman - 09 Yemen - 0a Syria - 0b Jordan - 0c Lebanon - 0d Kuwait - 0e U.A.E - 0f Bahrain - 10 Qatar -L 0002 Bulgarian -L 0003 Catalan -L 0004 Chinese - 01 Traditional - 02 Simplified - 03 Hongkong SAR, PRC - 04 Singapore - 05 Macau SAR -L 0005 Czech -L 0006 Danish -L 0007 German - 01 German - 02 Swiss - 03 Austrian - 04 Luxembourg - 05 Liechtenstein -L 0008 Greek -L 0009 English - 01 US - 02 UK - 03 Australian - 04 Canadian - 05 New Zealand - 06 Ireland - 07 South Africa - 08 Jamaica - 09 Carribean - 0a Belize - 0b Trinidad - 0c Zimbabwe - 0d Philippines -L 000a Spanish - 01 Castilian - 02 Mexican - 03 Modern - 04 Guatemala - 05 Costa Rica - 06 Panama - 07 Dominican Republic - 08 Venzuela - 09 Colombia - 0a Peru - 0b Argentina - 0c Ecuador - 0d Chile - 0e Uruguay - 0f Paraguay - 10 Bolivia - 11 El Salvador - 12 Honduras - 13 Nicaragua - 14 Puerto Rico -L 000b Finnish -L 000c French - 01 French - 02 Belgian - 03 Canadian - 04 Swiss - 05 Luxembourg - 06 Monaco -L 000d Hebrew -L 000e Hungarian -L 000f Idelandic -L 0010 Italian - 01 Italian - 02 Swiss -L 0011 Japanese -L 0012 Korean - 01 Korean -L 0013 Dutch - 01 Dutch - 02 Belgian -L 0014 Norwegian - 01 Bokmal - 02 Nynorsk -L 0015 Polish -L 0016 Portuguese - 01 Portuguese - 02 Brazilian -L 0017 forgotten -L 0018 Romanian -L 0019 Russian -L 001a Serbian - 01 Croatian - 02 Latin - 03 Cyrillic -L 001b Slovak -L 001c Albanian -L 001d Swedish - 01 Swedish - 02 Finland -L 001e Thai -L 001f Turkish -L 0020 Urdu - 01 Pakistan - 02 India -L 0021 Indonesian -L 0022 Ukrainian -L 0023 Belarusian -L 0024 Slovenian -L 0025 Estonian -L 0026 Latvian -L 0027 Lithuanian - 01 Lithuanian -L 0028 forgotten -L 0029 Farsi -L 002a Vietnamese -L 002b Armenian -L 002c Azeri - 01 Cyrillic - 02 Latin -L 002d Basque -L 002e forgotten -L 002f Macedonian -L 0036 Afrikaans -L 0037 Georgian -L 0038 Faeroese -L 0039 Hindi -L 003e Malay - 01 Malaysia - 02 Brunei Darassalam -L 003f Kazak -L 0041 Awahili -L 0043 Uzbek - 01 Latin - 02 Cyrillic -L 0044 Tatar -L 0045 Bengali -L 0046 Punjabi -L 0047 Gujarati -L 0048 Oriya -L 0049 Tamil -L 004a Telugu -L 004b Kannada -L 004c Malayalam -L 004d Assamese -L 004e Marathi -L 004f Sanskrit -L 0057 Konkani -L 0058 Manipuri -L 0059 Sindhi -L 0060 Kashmiri - 02 India -L 0061 Nepali - 02 India - -# HID Descriptor bCountryCode -# HID Specification 1.11 (2001-06-27) page 23 -# -# Syntax: -# HCC country_code keymap_type - -HCC 00 Not supported -HCC 01 Arabic -HCC 02 Belgian -HCC 03 Canadian-Bilingual -HCC 04 Canadian-French -HCC 05 Czech Republic -HCC 06 Danish -HCC 07 Finnish -HCC 08 French -HCC 09 German -HCC 10 Greek -HCC 11 Hebrew -HCC 12 Hungary -HCC 13 International (ISO) -HCC 14 Italian -HCC 15 Japan (Katakana) -HCC 16 Korean -HCC 17 Latin American -HCC 18 Netherlands/Dutch -HCC 19 Norwegian -HCC 20 Persian (Farsi) -HCC 21 Poland -HCC 22 Portuguese -HCC 23 Russia -HCC 24 Slovakia -HCC 25 Spanish -HCC 26 Swedish -HCC 27 Swiss/French -HCC 28 Swiss/German -HCC 29 Switzerland -HCC 30 Taiwan -HCC 31 Turkish-Q -HCC 32 UK -HCC 33 US -HCC 34 Yugoslavia -HCC 35 Turkish-F - -# List of Video Class Terminal Types - -# Syntax: -# VT terminal_type terminal_type_name - -VT 0100 USB Vendor Specific -VT 0101 USB Streaming -VT 0200 Input Vendor Specific -VT 0201 Camera Sensor -VT 0202 Sequential Media -VT 0300 Output Vendor Specific -VT 0301 Generic Display -VT 0302 Sequential Media -VT 0400 External Vendor Specific -VT 0401 Composite Video -VT 0402 S-Video -VT 0403 Component Video diff --git a/drivers/staging/usbip/vhci.h b/drivers/staging/usbip/vhci.h index d5bc8e7e3d7..71a586e00fd 100644 --- a/drivers/staging/usbip/vhci.h +++ b/drivers/staging/usbip/vhci.h @@ -6,15 +6,6 @@ * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * - * This is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - * USA. */ #include <linux/device.h> @@ -105,7 +96,7 @@ struct vhci_hcd { }; extern struct vhci_hcd *the_controller; -extern struct attribute_group dev_attr_group; +extern const struct attribute_group dev_attr_group; #define hardware (&the_controller->pdev.dev) /* vhci_hcd.c */ diff --git a/drivers/staging/usbip/vhci_hcd.c b/drivers/staging/usbip/vhci_hcd.c index a76e8fa69b6..2ee97e2095b 100644 --- a/drivers/staging/usbip/vhci_hcd.c +++ b/drivers/staging/usbip/vhci_hcd.c @@ -92,14 +92,28 @@ static const char * const bit_desc[] = { "R31", /*31*/ }; -static void dump_port_status(u32 status) +static void dump_port_status_diff(u32 prev_status, u32 new_status) { int i = 0; - - pr_debug("status %08x:", status); - for (i = 0; i < 32; i++) { - if (status & (1 << i)) - pr_debug(" %s", bit_desc[i]); + u32 bit = 1; + + pr_debug("status prev -> new: %08x -> %08x\n", prev_status, new_status); + while (bit) { + u32 prev = prev_status & bit; + u32 new = new_status & bit; + char change; + + if (!prev && new) + change = '+'; + else if (prev && !new) + change = '-'; + else + change = ' '; + + if (prev || new) + pr_debug(" %c%s\n", change, bit_desc[i]); + bit <<= 1; + i++; } pr_debug("\n"); } @@ -273,9 +287,8 @@ static int vhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, /* store old status and compare now and old later */ if (usbip_dbg_flag_vhci_rh) { - int i = 0; - for (i = 0; i < VHCI_NPORTS; i++) - prev_port_status[i] = dum->port_status[i]; + memcpy(prev_port_status, dum->port_status, + sizeof(prev_port_status)); } switch (typeReq) { @@ -344,9 +357,9 @@ static int vhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, * */ if (dum->resuming && time_after(jiffies, dum->re_timeout)) { dum->port_status[rhport] |= - (1 << USB_PORT_FEAT_C_SUSPEND); + (1 << USB_PORT_FEAT_C_SUSPEND); dum->port_status[rhport] &= - ~(1 << USB_PORT_FEAT_SUSPEND); + ~(1 << USB_PORT_FEAT_SUSPEND); dum->resuming = 0; dum->re_timeout = 0; /* if (dum->driver && dum->driver->resume) { @@ -464,8 +477,11 @@ static int vhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, if (usbip_dbg_flag_vhci_rh) { pr_debug("port %d\n", rhport); - dump_port_status(prev_port_status[rhport]); - dump_port_status(dum->port_status[rhport]); + /* Only dump valid port status */ + if (rhport >= 0) { + dump_port_status_diff(prev_port_status[rhport], + dum->port_status[rhport]); + } } usbip_dbg_vhci_rh(" bye\n"); @@ -639,9 +655,7 @@ no_need_xmit: usb_hcd_unlink_urb_from_ep(hcd, urb); no_need_unlink: spin_unlock_irqrestore(&the_controller->lock, flags); - usb_hcd_giveback_urb(vhci_to_hcd(the_controller), urb, urb->status); - return ret; } @@ -846,9 +860,9 @@ static void vhci_shutdown_connection(struct usbip_device *ud) } /* kill threads related to this sdev, if v.c. exists */ - if (vdev->ud.tcp_rx) + if (vdev->ud.tcp_rx && !task_is_dead(vdev->ud.tcp_rx)) kthread_stop(vdev->ud.tcp_rx); - if (vdev->ud.tcp_tx) + if (vdev->ud.tcp_tx && !task_is_dead(vdev->ud.tcp_tx)) kthread_stop(vdev->ud.tcp_tx); pr_info("stop threads\n"); @@ -1033,9 +1047,8 @@ static int vhci_bus_resume(struct usb_hcd *hcd) hcd->state = HC_STATE_RUNNING; } spin_unlock_irq(&vhci->lock); - return rc; - return 0; + return rc; } #else @@ -1212,7 +1225,7 @@ static struct platform_device the_pdev = { }, }; -static int __init vhci_init(void) +static int __init vhci_hcd_init(void) { int ret; @@ -1236,14 +1249,14 @@ err_driver_register: return ret; } -static void __exit vhci_cleanup(void) +static void __exit vhci_hcd_exit(void) { platform_device_unregister(&the_pdev); platform_driver_unregister(&vhci_driver); } -module_init(vhci_init); -module_exit(vhci_cleanup); +module_init(vhci_hcd_init); +module_exit(vhci_hcd_exit); MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_DESCRIPTION(DRIVER_DESC); diff --git a/drivers/staging/usbip/vhci_rx.c b/drivers/staging/usbip/vhci_rx.c index e42ce9dab7a..09c44abb89e 100644 --- a/drivers/staging/usbip/vhci_rx.c +++ b/drivers/staging/usbip/vhci_rx.c @@ -179,8 +179,6 @@ static void vhci_recv_ret_unlink(struct vhci_device *vdev, } kfree(unlink); - - return; } static int vhci_priv_tx_empty(struct vhci_device *vdev) diff --git a/drivers/staging/usbip/vhci_sysfs.c b/drivers/staging/usbip/vhci_sysfs.c index d9736f9c402..0cd039bb5fd 100644 --- a/drivers/staging/usbip/vhci_sysfs.c +++ b/drivers/staging/usbip/vhci_sysfs.c @@ -135,7 +135,7 @@ static DEVICE_ATTR(detach, S_IWUSR, NULL, store_detach); static int valid_args(__u32 rhport, enum usb_device_speed speed) { /* check rhport */ - if ((rhport < 0) || (rhport >= VHCI_NPORTS)) { + if (rhport >= VHCI_NPORTS) { pr_err("port %u\n", rhport); return -EINVAL; } @@ -192,7 +192,7 @@ static ssize_t store_attach(struct device *dev, struct device_attribute *attr, /* check sockfd */ socket = sockfd_to_socket(sockfd); if (!socket) - return -EINVAL; + return -EINVAL; /* now need lock until setting vdev status as used */ @@ -239,6 +239,6 @@ static struct attribute *dev_attrs[] = { NULL, }; -struct attribute_group dev_attr_group = { +const struct attribute_group dev_attr_group = { .attrs = dev_attrs, }; |