Modifier

USB dans Windows - FAQ

Cette rubrique présente les questions fréquemment posées pour les développeurs de pilotes qui débutent dans le développement et l’intégration de périphériques et de pilotes USB avec les systèmes d’exploitation Windows.

J’entends de nombreux termes USB jetés de façon presque indifféremment. Qu’est-ce que ça veut dire ?

Supposons que vous voyiez quelque chose comme : « Grâce à l’USB 3.0, je peux connecter une clé USB SuperSpeed au contrôleur hôte xHCI de mon PC et copier des fichiers plus rapidement. »

Comprenons les termes USB de cette phrase. USB 3.0, USB 2.0 et USB 1.0 font référence au numéro de révision de la spécification USB du forum des implémenteurs USB. Les spécifications USB définissent la façon dont le PC hôte et le périphérique USB communiquent entre eux.

Le numéro de version indique également la vitesse de transmission maximale. La dernière révision de spécification est USB 3.0, qui spécifie une vitesse de transmission maximale jusqu’à 5 Gbits/s. USB 1.0 définit deux débits de données différents, usb à faible vitesse (jusqu’à 1,5 Mbits/s) et USB à pleine vitesse (jusqu’à 12 Mbits/s). USB 2.0 définit un nouveau débit de données, usb haut débit (480 Mbits/s), tout en conservant la prise en charge des appareils à vitesse faible et complète. USB 3.0 continue de fonctionner avec tous les débits de données définis précédemment. Si vous examinez l’emballage du produit, SuperSpeed USB référence les appareils USB 3.0 les plus récents. L’USB haute vitesse est utilisé pour décrire les appareils USB 2.0 à haut débit. USB, sans descripteur, fait référence aux appareils à vitesse faible et à vitesse maximale.

En plus du protocole USB, il existe une deuxième spécification pour le contrôleur hôte USB, le matériel sur le PC auquel un appareil est connecté. La spécification de l’interface du contrôleur d’hôte définit la façon dont le matériel et les logiciels du contrôleur hôte interagissent. L’interface du contrôleur hôte eXtensible (xHCI) définit un contrôleur hôte USB 3.0. L’interface de contrôleur d’hôte améliorée (EHCI) définit un contrôleur hôte USB 2.0. Le contrôleur d’hôte universel (UHCI) et le contrôleur d’hôte ouvert (OHCI) sont deux implémentations alternatives d’un contrôleur hôte USB 1.0.

Mon PC a-t-il des ports USB 3.0 ?

Les ports USB 3.0 sont marqués avec le logo USB SuperSpeed ou le port est généralement bleu.

port avec logo USB

port usb 3.0 bleu

Les PC plus récents ont à la fois des ports USB 3.0 et USB 2.0. Si vous souhaitez que votre périphérique USB SuperSpeed fonctionne à la vitesse maximale, recherchez un port USB 3.0 et connectez-le à ce port. Un appareil SuperSpeed connecté à un port USB 2.0 fonctionne à grande vitesse.

Vous pouvez également vérifier qu’un port particulier est un port USB 3.0 dans Gestionnaire de périphériques. Dans Windows Vista ou une version ultérieure de Windows, ouvrez Gestionnaire de périphériques, puis sélectionnez le port dans la liste.

Contrôleurs hôtes usb dans le Gestionnaire de périphériques

Si vous disposez d’un contrôleur d’hôte eXtensible, il prend en charge USB 3.0.

Dois-je installer des pilotes pour mon contrôleur hôte eXtensible ?

Windows 8 et Windows Server 2012 incluent la prise en charge de l’USB 3.0.

Si le PC a des ports USB 3.0 et exécute une version de Windows antérieure à Windows 8, les pilotes du contrôleur hôte sont fournis par le fabricant du PC. Si vous devez réinstaller ces pilotes, vous devez les obtenir auprès du fabricant.

Si vous avez ajouté un contrôleur USB 3.0 carte à votre PC qui exécute une version de Windows antérieure à Windows 8, vous devez installer les pilotes fournis par le contrôleur carte fabricant.

Dans Windows 8, l’ensemble de pilotes USB 3.0 fournis par Microsoft (pile de pilotes USB) fonctionne avec la plupart des contrôleurs hôtes. La pile de pilotes Microsoft USB 3.0 ne fonctionne pas avec le contrôleur Fresco Logic FL1000. Pour déterminer si vous disposez d’un contrôleur FL1000, ouvrez Gestionnaire de périphériques et développez les contrôleurs Universal Serial Bus. Affichez les propriétés du contrôleur en sélectionnant et en maintenant (ou en cliquant avec le bouton droit) le nœud du contrôleur. Sous l’onglet Détails , sélectionnez la propriété Id matériel dans la liste. Si l’ID matériel commence par PCI\VEN_1B73&DEV_1000, il s’agit du FL1000. Pour ce contrôleur, téléchargez et installez des pilotes à partir de votre PC ou contrôleur carte fabricant.

Pourquoi plusieurs contrôleurs hôtes s’affichent-ils sur mon système ?

Outre les périphériques USB que vous connectez à votre PC, il existe un certain nombre d’appareils intégrés au PC qui peuvent être connectés via USB, tels qu’une webcam, un lecteur d’empreintes digitales, un lecteur de carte SD. Pour connecter tous ces appareils et fournir des ports USB externes, le PC prend en charge plusieurs contrôleurs hôtes USB.

Le contrôleur hôte USB 3.0 xHCI est entièrement rétrocompatible avec toutes les vitesses d’appareil USB, SuperSpeed, haute vitesse, pleine vitesse et vitesse faible. Vous pouvez connecter n’importe quel appareil directement à un contrôleur xHCI et vous attendre à ce que cet appareil fonctionne. Pour le contrôleur EHCI, ce n’est pas le cas. Alors que la spécification USB 2.0 prend en charge toutes les vitesses des appareils, le contrôleur EHCI prend uniquement en charge les périphériques USB à haut débit. Pour que les périphériques USB à vitesse maximale et à faible vitesse fonctionnent, ils doivent être connectés au contrôleur EHCI via un hub USB 2.0, ou ils doivent être connectés à un contrôleur UHCI ou OHCI.

Pour les PC plus récents, la plupart des ports USB 2.0 exposés par les PC se trouvent en aval d’un hub USB 2.0. Ce hub est connecté à un contrôleur EHCI. Cela permet au port USB 2.0 du PC de fonctionner avec toutes les vitesses des appareils. Les appareils SuperSpeed se comportent comme des appareils à haut débit lorsqu’ils sont connectés à un port 2.0.

Après la publication de la spécification USB 2.0, les PC ont utilisé une combinaison de contrôleurs hôtes afin de prendre en charge toutes les vitesses des appareils. Un seul port USB 2.0 est connecté à deux contrôleurs hôtes, un contrôleur hôte EHCI et un contrôleur hôte UHCI ou OHCI. Lorsque vous attachez un appareil, le matériel achemine dynamiquement la connexion à l’un des deux hôtes. La routine dépend de la vitesse de l’appareil.

Pourquoi deux hubs s’affichent-ils dans Gestionnaire de périphériques alors que je n’ai connecté qu’un seul hub USB 3.0 ?

Alors que les contrôleurs hôtes xHCI fonctionnent avec n’importe quelle vitesse d’appareil, un hub SuperSpeed fonctionne uniquement avec les appareils SuperSpeed. Pour garantir que les hubs USB 3.0 peuvent fonctionner avec toutes les vitesses, ils disposent de deux parties : un hub SuperSpeed et un hub USB 2.0. Un hub USB 3.0 peut prendre en charge toutes les vitesses en acheminant dynamiquement les appareils vers le hub SuperSpeed ou le hub 2.0, en fonction de la vitesse de l’appareil.

Ouvrez Gestionnaire de périphériques, affichez Appareils par connexion, puis localisez votre contrôleur d’hôte eXtensible. Lorsque vous connectez un seul hub USB 3.0 à votre port USB 3.0, il existe deux hubs en aval du hub racine des contrôleurs.

Hub usb 3.0 dans le gestionnaire de périphériques

Dans l’exemple ci-dessous, un périphérique de stockage USB SuperSpeed et un périphérique Audio USB sont tous deux connectés à un hub USB 3.0. Vous pouvez voir que le périphérique de stockage est en aval du hub SuperSpeed et que le périphérique audio est en aval du hub USB 2.0.

Hub usb 3.0 avec des appareils connectés dans le gestionnaire de périphériques

Quel ensemble de pilotes est chargé pour les appareils connectés aux ports 2.0 ?

Un ensemble différent de fichiers binaires est chargé pour chaque type de contrôleur hôte. Il est important de comprendre que la pile de pilotes USB que Windows charge est corrélée au type de contrôleur hôte, et non à la vitesse de l’appareil connecté.

Dans cette image, vous pouvez voir quels pilotes sont chargés pour chacun des différents types de contrôleurs hôtes USB.

Pile de pilotes usb dans windows 8

Si le port USB 3.0 est correctement acheminé vers un contrôleur xHCI, Windows charge la pile de pilotes xHCI (également appelée pile de pilotes USB 3.0).

Si le port USB 2.0 est connecté à un contrôleur EHCI via un hub USB 2.0, le trafic passe par le contrôleur EHCI et la pile de pilotes USB 2.0 est chargée.

Pour plus d’informations sur les pilotes de la pile de pilotes USB, consultez Pilotes côté hôte USB dans Windows.

Si les ports USB 2.0 du PC utilisent un contrôleur complémentaire, le contrôleur hôte vers lequel le port est acheminé dépend de la vitesse de l’appareil. Par exemple, un appareil à faible vitesse se connecte via un contrôleur UHCI ou OHCI et utilise le pilote USBUHCI ou USBOHCI. Le PC achemine un appareil à grande vitesse vers un contrôleur EHCI. Par conséquent, Windows utilise le pilote USBEHCI.

Les différentes vitesses d’appareil ne déterminent pas le pilote chargé pour le contrôleur. Toutefois, des vitesses d’appareil différentes peuvent déterminer le contrôleur utilisé. Le contrôleur utilise toujours le même pilote.

Comment faire déterminer si mon appareil USB 3.0 fonctionne comme SuperSpeed ?

Dans Windows 8, vérifiez tout d’abord que vous disposez d’un port USB 3.0 et d’un contrôleur hôte xHCI. Si votre périphérique USB SuperSpeed est connecté au contrôleur hôte xHCI, Windows 8 affiche un message « Connecté à USB 3.0 » dans des parties spécifiques de l’interface utilisateur Windows 8. Si l’appareil est connecté à un contrôleur EHCI au lieu de votre contrôleur XHCI, les messages indiquent à la place : « L’appareil peut s’exécuter plus rapidement lorsqu’il est connecté à USB 3.0 ».

Vous pouvez afficher ces messages d’interface utilisateur dans Paramètres du PC.

  1. Ouvrez la barre d’icônes (Faites glisser le curseur vers le coin supérieur ou inférieur droit de l’écran, tapez Touche Windows + C, ou balayez à partir de la droite avec votre doigt).
  2. Sélectionnez Paramètres , puis Modifier les paramètres du PC.
  3. Sélectionnez Appareils sous Paramètres du PC.

Cette image montre le message d’interface utilisateur lorsque l’appareil USB 3.0 fonctionne à SuperSpeed.

Capture d’écran montrant « Paramètres du PC » avec « Appareils » sélectionné et « U S B 3.0 RAIDrive » mis en évidence.

Cette image montre le message d’interface utilisateur lorsque le périphérique USB fonctionne à une vitesse de bus inférieure à superspeed.

Capture d’écran montrant « Appareils » sélectionnés et « U S B 3.0 RAIDrive » mis en évidence avec le message « L’appareil peut s’exécuter plus rapidement lorsqu’il est connecté à U S B 3.0 ».

Vous pouvez afficher des messages similaires dans Appareils et imprimantes, comme illustré dans ces images.

Capture d’écran montrant « Stockage - Périphériques et imprimantes » avec un appareil sélectionné avec un message « Connecté à U S B 3.0 » affiché.

appareil à grande vitesse fonctionnant à grande vitesse

Si le périphérique USB 3.0 est un périphérique de stockage, Windows Explorer affiche des messages similaires lorsque l’étiquette du volume est sélectionnée, comme indiqué ci-dessous. Notez que le volet Affichage -> Détails doit être sélectionné pour que le message soit visible.

Capture d’écran montrant un appareil U S B à grande vitesse sélectionné dans « Explorer » avec un message « Connecté à U S B 3.0 » mis en évidence dans le volet « Détails ».

appareil usb superspeed fonctionnant à haute vitesse

Si vous écrivez un pilote de périphérique, l’outil USBView , inclus dans le Kit de pilotes Windows (WDK), est très utile. Pour la Windows 8 WDK, Microsoft a mis à jour USBView pour afficher les informations USB SuperSpeed. Vous pouvez utiliser cet outil pour déterminer si votre appareil fonctionne à SuperSpeed. Cette image montre un appareil USB 3.0 fonctionnant à SuperSpeed dans USBView.

périphérique usb superspeed fonctionnant à super vitesse

Si vous êtes développeur de pilotes de périphérique, la pile de pilotes USB expose un nouvel IOCTL appelé IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2, que vous pouvez utiliser pour interroger les informations de vitesse des périphériques USB 3.0.

Pourquoi mon périphérique USB SuperSpeed n’est-il pas plus rapide qu’un périphérique USB haute vitesse équivalent ?

En règle générale, si un périphérique USB 3.0 USB n’est pas plus rapide qu’un périphérique USB haut débit, il ne fonctionne pas à SuperSpeed. Si le périphérique USB SuperSpeed est connecté à un port USB 3.0, il peut ne pas fonctionner à SuperSpeed pour les raisons suivantes :

  • Vous utilisez un hub USB 2.0.

    Si vous utilisez un hub, vérifiez qu’il s’agit d’un hub USB 3.0. Si vous utilisez un hub USB 2.0, tout périphérique USB SuperSpeed connecté fonctionnera à haute vitesse. Remplacez le hub par un hub USB 3.0 ou connectez l’appareil directement au port USB 3.0.

  • Le microprogramme sur le hub USB 3.0 est obsolète.

    Certains hubs USB 3.0 antérieurs ne fonctionnaient pas correctement. Par conséquent, Windows utilise uniquement la partie 2.0 de ces hubs. Si Gestionnaire de périphériques indique un hub « non fonctionnel », comme indiqué dans cette image, Windows 8 n’utilise pas la partie 3.0 de votre hub.

    hub usb superspeed non fonctionnel

    Vous pouvez connecter votre appareil SuperSpeed directement au port USB 3.0 ou mettre à jour le microprogramme sur votre hub. Windows 8 reconnaît les hubs qui ont un microprogramme plus récent.

  • L’appareil est connecté avec un câble USB 2.0.

    Assurez-vous que le câble utilisé pour connecter l’appareil est un câble USB 3.0. Il est également possible que le câble USB 3.0 présente des problèmes d’intégrité du signal. Dans ce cas, l’appareil peut basculer vers une vitesse élevée. Si cela se produit, vous devez utiliser un autre câble USB 3.0.

  • Le microprogramme de l’appareil est obsolète.

    Mettez à jour le microprogramme du périphérique USB SuperSpeed en obtenant la dernière version sur le site web du fabricant. Certains fabricants de périphériques USB SuperSpeed publient des correctifs, pour les bogues détectés dans l’appareil, en tant que mises à jour du microprogramme.

  • Le microprogramme sur le contrôleur hôte est obsolète.

    Mettez à jour le microprogramme du contrôleur USB 3.0 en obtenant la dernière version à partir du site du fabricant de votre PC ou de votre ajout dans carte site du fabricant. Certains fabricants de contrôleurs USB 3.0 publient des correctifs, pour les bogues trouvés dans le contrôleur, en tant que mises à jour du microprogramme.

  • Le BIOS de votre système est obsolète.

    Mettez à jour le BIOS de votre système en obtenant la dernière version auprès de votre fabricant de PC. Sur certaines cartes mères, le BIOS peut acheminer incorrectement un appareil connecté à un contrôleur hôte xHCI vers un contrôleur EHCI. Ce routage incorrect force un périphérique USB SuperSpeed à fonctionner à haute vitesse. Une mise à jour du BIOS peut résoudre ce problème.

Est-il possible d’avoir un appareil composite et un appareil composé dans une seule pièce de matériel ?

Oui. Le Microsoft Natural Keyboard Pro, qui dispose d’un hub à trois ports alimenté par bus, est un exemple de périphérique USB composite composé. L’appareil a un appareil composite attaché au port 1. Deux ports supplémentaires sont exposés à l’utilisateur final.

L’appareil qui est attaché au port 1 est un appareil composite à faible vitesse. L’appareil a deux interfaces, qui sont toutes deux conformes à la définition de classe de périphérique standard USB pour les périphériques d’interface humaine (HID). L’appareil composite fournit deux interfaces HID au lieu de multiplexer toutes les collections sur une seule interface HID à l’aide de collections de niveau supérieur. Cette conception a été choisie pour la compatibilité avec les BIOS plus anciens.

Pourquoi certains de mes périphériques USB sont-ils réinstallés lorsqu’ils sont déplacés vers un nouveau port ?

Dans les systèmes d’exploitation Windows 2000 et ultérieurs, un nouvel objet de périphérique physique (PDO) est créé lorsqu’un périphérique USB est déplacé d’un port à un autre. Si le matériel signale un numéro de série USB unique, aucun PDO n’est créé.

Pour réutiliser le même PDO et s’assurer que l’expérience de l’appareil est inchangée que l’appareil soit réinséré dans le même port ou un nouveau port, les fournisseurs de matériel doivent stocker un numéro de série sur leur appareil. Conformément aux exigences du programme de certification matérielle Windows, le numéro de série doit être unique pour tous les appareils qui partagent l’identificateur d’installation de l’appareil.

Existe-t-il une liste de recommandations de conception pour l’empaquetage de produits USB ?

L’USB-IF a travaillé avec Microsoft et d’autres sociétés membres de l’USB-IF pour développer une liste de recommandations à l’adresse des fournisseurs de matériel indépendants à inclure dans leur emballage.

Vous trouverez plus d’informations sur le site Web USB.

Pour USB Hi-Speed et SuperSpeed, reportez-vous à : https://www.usb.org/.

Dois-je réécrire mon pilote client pour prendre en charge les périphériques USB 3.0 ?

Tous les pilotes clients existants doivent continuer à fonctionner, en l’état, lorsqu’un appareil à faible, plein ou haut débit est connecté à un port USB 3.0. Dans Windows 8, nous avons assuré la compatibilité avec les pilotes clients existants.

La pile de pilotes USB 3.0 gère les niveaux IRQL, le contexte de l’appelant et les status d’erreur, la fréquence et le minutage des nouvelles tentatives lors de l’interaction avec les appareils, etc. pour s’assurer que les pilotes existants continuent de fonctionner. Il est toujours très important de tester.

Les défaillances courantes se produisent pour les raisons suivantes :

  • L’analyse du descripteur de point de terminaison du conducteur s’interrompt en raison de la présence de descripteurs compagnons de point de terminaison SuperSpeed.
  • En raison de l’augmentation de la vitesse, vous pouvez rencontrer des problèmes de minutage au niveau du protocole d’application.
  • La taille maximale des paquets prise en charge par le point de terminaison peut être différente.
  • En raison de la gestion de l’alimentation des fonctions, le minutage de l’opération de suspension sélective peut être différent.

Dans Windows 7 et les versions antérieures des systèmes d’exploitation, la pile de pilotes USB 3.0 est fournie par un tiers. Par conséquent, nous vous recommandons vivement de tester votre pilote pour qu’il fonctionne avec des piles de pilotes USB tierces.

Les nouveaux pilotes clients dans Windows 8 pour les périphériques USB haute vitesse et SuperSpeed doivent opter pour de nouvelles fonctionnalités.

Quel pilote est chargé pour mon utilisation du périphérique de stockage SuperSpeed, Uaspstor.sys ou Usbstor.sys ?

Le protocole UAS (USB Attached SCSI) est un nouveau protocole de stockage de masse conçu pour améliorer les performances par rapport au protocole de stockage de masse USB établi, BULK-Only-Transport (BOT). Pour ce faire, il réduit la surcharge du protocole, prend en charge la mise en file d’attente de commandes natives SATA (NCQ) et traite plusieurs commandes en parallèle. Pour ce faire, UAS utilise une nouvelle fonctionnalité USB 3.0 pour les transferts en bloc appelés flux.

Le pilote de stockage de masse existant, Usbstor.sys, utilise le protocole BOT. Il fonctionne avec toutes les vitesses des appareils, y compris les périphériques USB SuperSpeed.

Pour Windows 8, Microsoft inclut un nouveau pilote de classe de stockage de masse, Uaspstor.sys qui utilise le protocole UAS. Étant donné que les flux sont nouveaux dans USB 3.0, Uaspstor.sys ne pouvez utiliser des flux que lorsque le matériel prend en charge les flux (un périphérique USB SuperSpeed est connecté à un contrôleur hôte xHCI). Le pilote prend également en charge les flux de logiciels, de sorte qu’il peut également charger pour les appareils fonctionnant à haute vitesse, quel que soit le type d’hôte.

Si vous connectez un appareil de stockage de masse à Windows 8 et que cet appareil prend en charge UAS, Windows charge Uaspstor.sys. Dans certains cas, il peut y avoir des problèmes connus avec les flux matériels sur un contrôleur hôte xHCI spécifique ou des problèmes connus avec l’implémentation du protocole UAS d’un appareil. Dans ce cas, Windows revient au protocole BOT et charge le pilote Usbstor.sys à la place.

Uaspstor.sys est nouveau dans Windows 8. Il n’est pas présent dans les versions antérieures de Windows.

Quelles classes DWG USB Microsoft prend-il en charge ?

Windows prend en charge plusieurs classes USB que le groupe de travail de périphérique USB (DWG) a définies. Pour obtenir la liste actuelle des spécifications de classe USB et des codes de classe, visitez le site Web USB DWG à l’adresse https://www.usb.org/documents.

Ce tableau met en évidence les classes USB DWG prises en charge dans Windows et identifie également les versions de Windows qui prennent en charge chaque classe.

Spécification de classe bDeviceClass Code Nom du pilote Prise en charge de Windows
Classe Bluetooth 0xE0 Bthusb.sys Windows XP et versions ultérieures
Périphériques d’interface de carte (CCID) 0x0B Usbccid.sys

Windows Server 2008 et versions ultérieures

Windows Vista et versions ultérieures

Windows Server 2003

Windows XP

Windows 2000

Classe Hub 0x09 Usbhub.sys

Windows Server 2003 et versions ultérieures

Windows XP et versions ultérieures

Windows 2000 et versions ultérieures

Périphérique d’interface utilisateur (HID) 0x03 Hidusb.sys

Windows Server 2003 et versions ultérieures

Windows XP et versions ultérieures

Windows 2000 et versions ultérieures

Classe de stockage de masse (MSC) 0x08 Usbstor.sys

Windows Server 2003 et versions ultérieures

Windows XP et versions ultérieures

Windows 2000 et versions ultérieures

USB Attached SCSI (UAS) 0x08 Uaspstor.sys

Windows Server 2012

Windows 8

Classe d’impression 0x07 Usbprint.sys

Windows Server 2003 et versions ultérieures

Windows XP et versions ultérieures

Windows 2000 et versions ultérieures

Analyse/imagerie (PTP) 0x06

WpdUsb.sys

Usbscan.sys

Windows Server 2003 et versions ultérieures

Windows XP et versions ultérieures

Windows 2000 et versions ultérieures

Transfert multimédia (MTP) 0x06 WpdUsb.sys

Windows Server 2003 et versions ultérieures

Windows XP et versions ultérieures

Classe Audio USB 0x01 Usbaudio.sys

Windows Server 2003 et versions ultérieures

Windows XP et versions ultérieures

Windows 2000 et versions ultérieures

Classe de modem (CDC) 0x02 Usbser.sys

Windows Server 2003 et versions ultérieures

Windows XP et versions ultérieures

Windows 2000 et versions ultérieures

Classe vidéo (UVC) 0x0E Usbvideo.sys

Windows Vista et versions ultérieures

Windows XP

*Des instructions spéciales sont nécessaires pour charger ce pilote, car ce pilote a peut-être été libéré plus tard que le système d’exploitation. Les pilotes de classe Windows peuvent ne pas prendre en charge toutes les fonctionnalités décrites dans une spécification de classe DWG. Dans ce cas, le pilote ne se charge pas en fonction de la correspondance de classe. Pour plus d’informations sur les fonctionnalités implémentées dans une spécification de classe, consultez la documentation WDK.

Quelle classe d’installation d’appareil dois-je utiliser pour un appareil USB personnalisé ?

Microsoft fournit des classes d’installation définies par le système pour la plupart des types d’appareils. Les GUID de classe d’installation définis par le système sont définis dans Devguid.h. Pour plus d’informations, consultez WDK. Pour obtenir la liste des GUID de classe Windows, consultez les rubriques suivantes :

Les fournisseurs de matériel indépendants doivent utiliser la classe d’installation associée au type de périphérique USB, et non au type de bus. Si vous développez un type d’appareil pour lequel Microsoft n’a pas fourni de GUID de classe existant, vous pouvez définir une nouvelle classe d’installation d’appareil.

Dans Windows 8, une nouvelle classe d’installation a été définie, nommée USBDevice (ClassGuid = {88BAE032-5A81-49f0-BC3D-A4FF138216D6}). Si vous développez un type d’appareil, associez votre appareil à USBDevice au lieu de la classe d’installation USB. La classe USBDevice fonctionne sur Windows Vista et les versions ultérieures du système d’exploitation.

La classe d’installation USB (ClassGuid = {36fc9e60-c465-11cf-8056-444553540000}) est réservée uniquement aux contrôleurs hôtes USB et aux hubs USB, et ne doit pas être utilisée pour d’autres catégories d’appareils. L’utilisation incorrecte de cette classe d’installation peut entraîner l’échec du test du logo Windows du pilote de périphérique.

Pourquoi mon processeur n’entre-t-il pas dans C3 quand j’attache des périphériques USB ?

Lorsqu’un périphérique USB est connecté, le contrôleur hôte USB interroge le planificateur d’images, qui est un bus d’accès direct à la mémoire (DMA) master opération. Les « événements d’arrêt » tels que le master de bus, le trafic, les interruptions ou plusieurs autres activités système déplacent un processeur hors de C3, car, par définition, le cache du processeur ne peut pas être espionné lorsqu’il se trouve en C3.

Il existe deux façons de contourner ce problème :

  • Suppression du matériel.

    Parfois, le matériel peut être déconnecté électroniquement du bus série universel. Par exemple, lorsque le support de stockage est supprimé du lecteur USB, celui-ci peut émuler une déconnexion électronique et se reconnecter lorsque le média est réinséré. Dans ce cas, les transitions C3 peuvent se produire, car aucun périphérique USB ne se trouve sur le contrôleur hôte.

  • Suspension sélective.

    La seule alternative disponible dans Windows XP et les systèmes d’exploitation ultérieurs consiste à prendre en charge la suspension sélective USB. Cette fonctionnalité permet à un pilote de suspendre un périphérique USB qu’il contrôle lorsque l’appareil devient inactif, même si le système lui-même reste dans un état d’alimentation complètement opérationnel (S0). La suspension sélective est particulièrement puissante si tous les pilotes de fonction USB le prennent en charge. Si même un pilote ne le prend pas en charge, le processeur ne peut pas entrer C3. Pour plus d’informations sur la suspension sélective, consultez WDK.

Quels pilotes de classe USB prennent en charge la suspension sélective ?

Voici la liste des pilotes de classe USB dans Windows 8 qui prennent en charge la suspension sélective :

  • Bluetooth

    Ce pilote peut suspendre de manière sélective des appareils sur des ordinateurs qui exécutent Windows XP Service Pack 2 et les versions ultérieures de Windows. Le pilote a besoin de la radio Bluetooth pour définir les bits de veille à distance et auto-alimentés dans le descripteur de configuration. Le pilote interrompt de manière sélective (D2) la radio Bluetooth lorsqu’il n’existe aucune connexion Bluetooth active.

  • USB HID

    Ce pilote peut suspendre de manière sélective un périphérique HID. Il est de votre responsabilité de déclencher le signal de veille à distance sur toutes les modifications d’état de l’appareil. Pour activer la suspension sélective dans la pile HID, la valeur de Registre SelectiveSuspendEnabled doit être activée pour le VID+PID spécifique de l’appareil. Pour obtenir des exemples, consultez Input.inf.

    Sur les systèmes qui prennent en charge la veille connectée de Windows 8, ce pilote entre en suspension sélective (D2) lorsque le système est en veille connectée. Ce pilote peut réveiller le système et activer l’écran.

  • Concentrateur USB

    Ce pilote peut suspendre de manière sélective un hub racine ou externe lorsqu’aucun appareil n’y est attaché ou lorsque tous les appareils attachés à ce hub peuvent être suspendus de manière sélective.

  • USB Modem

    Ce pilote peut suspendre de manière sélective l’appareil lorsqu’il n’existe aucune connexion de modem active.

  • Stockage USB (BOT)

    Ce pilote peut suspendre de manière sélective (D3) des périphériques de stockage sur les systèmes qui prennent en charge Windows 8 veille connectée, lorsque ces systèmes passent en veille connectée. Comme HID, il existe un remplacement du Registre pour activer la suspension sélective sur tous les systèmes Windows 8.

  • Stockage USB (UAS)

    Ce pilote peut suspendre de manière sélective (D3) un périphérique de stockage lorsqu’il est inactif pendant une période de délai d’expiration du disque.

  • Vidéo USB

    Ce pilote peut suspendre sélectivement (D3) une webcam sur Windows Vista et le système d’exploitation ultérieur.

  • USB Audio

    Ce pilote peut suspendre de manière sélective (D3) un périphérique audio USB sur les systèmes d’exploitation Windows 7 et versions ultérieures lorsque l’ordinateur est sur batterie.

  • Composite USB

    Ce pilote peut suspendre sélectivement (D3) des périphériques composites lorsque tous les enfants sont en suspension. Sur les systèmes qui prennent en charge D3-Cold, tous les enfants doivent opter pour D3-Cold.

  • Carte à puce USB

    Ce pilote peut suspendre sélectivement (D2) les périphériques d’interface de carte à puce par défaut dans les systèmes d’exploitation Windows 7 et ultérieurs.

  • Périphériques USB génériques (WinUSB)

    Ce pilote peut suspendre de manière sélective (D3) des appareils par défaut sur Windows Vista et les systèmes d’exploitation ultérieurs.

  • WWAN : 3G ou WiMax Dongles

    Ce pilote peut suspendre sélectivement des appareils. Lorsqu’il existe un abonnement actif, l’appareil entre dans D2, sans abonnement actif, l’appareil entre en D3.

Pourquoi un périphérique USB ne peut-il pas réveiller Windows à partir de S3 ?

Un périphérique USB ne peut pas réveiller Windows à partir de S3 pour plusieurs raisons, notamment :

  1. BIOS incorrect.

    Vérifiez que le BIOS le plus récent est installé sur l’ordinateur. Pour obtenir la dernière révision du BIOS pour l’ordinateur, visitez le site Web de l’OEM ou de l’ODM.

  2. BIOS qui n’est pas activé pour la mise en éveil.

    Certains BIOS permettent de désactiver la veille à partir de S3 et S4. Vérifiez que le BIOS est activé pour se réveiller à partir de S3.

  3. La clé de Registre USBBIOSx n’est pas définie.

    Une propre installation de Windows XP n’a pas la clé de Registre USBBIOSx. Si l’OEM ou ODM vérifie que le BIOS peut se réveiller à partir de S3, définissez cette clé de Registre sur 0x00 et redémarrez l’ordinateur.

  4. Le contrôleur d’hôte n’a pas d’alimentation dans S3 ou S4.

    Souvent, le PC coupe l’alimentation d’un complément carte lorsque l’état d’alimentation du PC est inférieur. Si le complément carte n’a pas d’alimentation, il ne pourra pas détecter d’événement de veille et ne pourra pas réveiller le PC.

Pour plus d’informations, consultez l’utilitaire de résolution des problèmes USB dans le Centre d’aide et de support dans Windows XP et les versions ultérieures de Windows.

Dois-je installer des pilotes pour mon contrôleur hôte (USB 2.0) amélioré ?

Les versions suivantes de Windows prennent en charge le contrôleur hôte amélioré USB 2.0 :

  • Windows Vista et versions ultérieures
  • Windows Server 2003 et versions ultérieures
  • Windows XP Service Pack 1
  • Windows 2000 Service Pack 4

Note Étant donné que Windows 2000 et Windows XP ont été publiés avant la disponibilité du matériel USB 2.0, les pilotes ont été publiés pour ces systèmes d’exploitation dans les Service Packs. Pour installer des pilotes :

  1. Suivez la procédure décrite dans la réponse à la première question pour vérifier que votre ordinateur dispose de ports USB 2.0 et que vous devez installer un pilote pour le contrôleur hôte amélioré.

  2. Dans la fenêtre Gestionnaire de périphériques, développez la section Autres appareils, comme expliqué dans la première question, puis double-cliquez sur Contrôleur USB (Universal Serial Bus).

  3. Sous l’onglet Général de la boîte de dialogue Propriétés, sélectionnez Réinstaller le pilote.

    réinstaller le pilote

  4. Dans l’Assistant Ajouter un nouveau matériel, sélectionnez Installer automatiquement le logiciel (recommandé), puis Suivant. Passez à l’Assistant, en acceptant toutes les options par défaut, jusqu’à atteindre la dernière page de l’Assistant, puis sélectionnez Terminer. Vous devrez peut-être redémarrer votre ordinateur pour terminer l’installation.

Note Pour vous assurer que les dernières mises à jour sont installées sur votre ordinateur, consultez Windows Update régulièrement.

Puis-je désactiver l’avis « Périphérique USB HI-SPEED branché sur un port USB non HI-SPEED » ?

Windows XP et les versions ultérieures de Windows créent une notification contextuelle lorsqu’un périphérique USB haute vitesse est connecté à un port USB qui ne prend pas en charge la vitesse élevée. Pour obtenir les performances les plus rapides de l’appareil, les utilisateurs doivent sélectionner l’avis et suivre les instructions à l’écran.

Pour désactiver la notification, procédez comme suit :

  1. Commencez Gestionnaire de périphériques, comme décrit dans la première question de cette FAQ.
  2. Dans la fenêtre Gestionnaire de périphériques, développez le nœud Contrôleurs de bus série universel. Recherchez un contrôleur hôte avec le mot « Universal » ou « Open » dans le titre. Si vous en trouvez un, double-cliquez dessus.
  3. Sous l’onglet Avancé de la boîte de dialogue Propriétés , sélectionnez Ne pas m’indiquer les erreurs USB.

Note La procédure précédente désactive toutes les notifications USB, pas seulement « Périphérique USB HI-SPEED branché sur un port non HI-SPEED ».

Mon hub USB 2.0 est-il un TT unique ou multi-TT ?

Un hub USB 2.0 peut avoir un traducteur de transactions (TT) pour tous les ports orientés vers l’aval sur le hub (TT unique), ou il peut avoir un TT pour chaque port en aval sur le hub (plusieurs TT).

La valeur du champ bDeviceProtocol du descripteur de périphérique USB et du champ bInterfaceProtocol du descripteur d’interface USB indiquent si un hub est un TT unique ou plusieurs TT :

  • TT unique. bDeviceProtocol == 0x01
  • Multi-TT. bDeviceProtocol == 0x02

Usbhub.sys utilise ce paramètre pour activer le mode multiT ou le mode TT unique. Sur Windows XP et versions ultérieures, Usbhub.sys active toujours le mode multiT sur un hub multiT. Pour plus d’informations sur la disposition TT, consultez les sections 11.14.1.3 et 11.23.1 de la spécification USB 2.0.

Quels caractères ou octets sont valides dans un numéro de série USB ?

Le champ iSerialNumber du descripteur de périphérique USB indique si l’appareil a un numéro de série et où il est stocké, comme suit :

  • iSerialNumber == 0x00 : le périphérique USB n’a pas de numéro de série.
  • iSerialNumber != 0x00 : le périphérique USB a un numéro de série. La valeur affectée à iSerialNumber est l’index de chaîne du numéro de série.

Si l’appareil a un numéro de série, celui-ci doit identifier de manière unique chaque instance du même appareil.

Par exemple, si deux descripteurs d’appareil ont des valeurs identiques pour les champs idVendor, idProduct et bcdDevice , le champ iSerialNumber doit être différent pour distinguer un appareil de l’autre.

Plug-and-Play exige que chaque octet d’un numéro de série USB soit valide. Si un seul octet n’est pas valide, Windows ignore le numéro de série et traite l’appareil comme s’il n’avait pas de numéro de série. Les valeurs d’octet suivantes ne sont pas valides pour les numéros de série USB :

  • 0x2C.
  • Valeurs inférieures à 0x20.
  • Valeurs supérieures à 0x7F.

Pour plus d’informations sur la valeur iSerialNumber , consultez la section 9.6.1 de la spécification USB 2.0.

Quel LANGID est utilisé dans une demande de chaîne sur les builds localisées de Windows ?

Un périphérique USB indique la présence d’un numéro de série en définissant le champ iSerialNumber du descripteur de périphérique USB sur l’index de chaîne du numéro de série. Pour récupérer le numéro de série, Windows émet une demande de chaîne avec l’identificateur de langue (LANGID) défini sur 0x0409 (anglais américain). Windows utilise toujours ce LANGID pour récupérer les numéros de série USB, même pour les versions de Windows localisées pour d’autres langues.

Quel LANGID est utilisé pour extraire le numéro de série d’un appareil ?

Un périphérique USB indique la présence d’un numéro de série en définissant le champ iSerialNumber du descripteur de périphérique USB sur l’index de chaîne du numéro de série. Pour récupérer le numéro de série, Windows émet une demande de chaîne avec l’identificateur de langue (LANGID) défini sur 0x0409 (anglais américain). Windows utilise toujours ce LANGID pour récupérer les numéros de série USB, même pour les versions de Windows localisées pour d’autres langues.

Comment attribuer des nombres à plusieurs interfaces sur un appareil composite ?

Windows traite les périphériques USB qui ont plusieurs interface sur la première configuration comme des appareils composites.

Pour Windows XP Service Pack 1 et les versions antérieures de Windows :

  • Les numéros d’interface doivent être de base zéro.
  • Les numéros d’interface doivent être consécutifs et croissants.

Pour Windows XP Service Pack 2 et versions ultérieures de Windows, les numéros d’interface doivent uniquement être croissants, et non consécutifs.

Les autres paramètres d’une interface doivent être attribués comme suit pour toutes les versions de Windows :

  • La valeur par défaut d’une interface est toujours un paramètre de remplacement zéro.
  • Les autres numéros de paramètres supplémentaires doivent être consécutifs et croissants.

Pour plus d’informations sur les autres paramètres, consultez la section 9.6.5 de la spécification USB 2.0.

Quelles sont les principales restrictions imposées par Usbccgp.sys ?

Usbccgp.sys prend en charge les appareils composites pour :

  • Windows Me
  • Windows XP
  • Windows Server 2003
  • Windows Vista
  • Windows Server 2008

Bien qu’il soit toujours possible de charger Usbhub.sys en tant que pilote parent pour l’appareil composite sur ces versions et les versions ultérieures de Windows, Microsoft ne le recommande pas, car cela peut entraîner des erreurs de compatibilité matérielle. Vous devez utiliser Usbccgp.sys à la place.

Pour vous assurer que vous chargez le pilote approprié pour votre appareil composite, utilisez les directives Include et Needs dans vos fichiers INF, comme suit :

Include = USB.INF
Needs = Composite.Dev

Les principales restrictions imposées aux périphériques et pilotes matériels par Usbccgp.sys sont les suivantes :

  • Usbccgp prend uniquement en charge la configuration par défaut, la configuration 0.

  • Usbccgp ne prend pas en charge la suspension sélective dans Windows XP et Windows Server 2003. Cette fonctionnalité est prise en charge uniquement dans Windows Vista et les versions ultérieures de Windows. Note Usbccgp prend en charge la suspension sélective dans Windows XP SP1 et les versions ultérieures de Windows XP, mais avec des fonctionnalités limitées. Pour ces versions de Windows, l’appareil composite est mis en suspension sélective uniquement si chaque fonction enfant de l’appareil a un IRP inactif en attente. Usbccgp ne prend pas en charge la suspension sélective dans Windows XP RTM

  • Usbccgp prend en charge le descripteur d’association d’interface (IAD) uniquement dans Windows XP SP2, Windows Server 2003 SP1 et les versions ultérieures de Windows.

  • Usbccgp prend en charge les numéros d’interface non compatibles uniquement dans Windows XP SP2, Windows Server 2003 SP1 et les versions ultérieures de Windows.

Comment faire activer le suivi de débogage pour les fichiers binaires clés USB ?

Consultez le billet de blog sur comment inclure et afficher des messages de trace WPP dans les fichiers PDB publics d’un pilote.

Pour plus d’informations sur les périphériques USB et les événements ETW, consultez Débogage des problèmes de périphérique USB à l’aide d’événements ETW.

Windows prend-il en charge les descripteurs d’association d’interface ?

Oui. Le descripteur de modification d’interface USB 2.0 (IAD) Engineering Change Notification (ECN) a introduit une nouvelle méthode standard pour décrire un regroupement d’interfaces et leurs autres paramètres au sein d’une fonction. L’IAD peut être utilisé pour identifier au moins deux interfaces consécutives et d’autres paramètres au sein d’une seule fonction.

Microsoft travaille actuellement avec les IHV pour développer des appareils qui prennent en charge l’IAD. Les systèmes d’exploitation suivants prennent en charge IAD :

  • Windows XP Service Pack 2 et versions ultérieures
  • Windows Server 2003 Service Pack 1 et versions ultérieures
  • Windows Vista

La pile USB gère-t-elle les DLL chaînées dans un URB ?

Cette fonctionnalité est prise en charge par la pile de pilotes USB 3.0 fournie avec Windows.

Un pilote peut-il avoir plusieurs URB dans un IRP ?

Non. Cette fonctionnalité n’est pas prise en charge par la pile USB incluse avec Windows.

Windows prend-il en charge les hubs composites USB ?

Un périphérique USB composite, également appelé périphérique USB multifonction, expose plusieurs fonctions, chacune pouvant être traitée comme un appareil indépendant. Le système charge le pilote parent générique USB, Usbccgp.sys, pour servir de pilote parent pour eaech des fonctions de l’appareil. Le pilote parent générique USB énumère les fonctions du périphérique composite comme s’il s’agissait de périphériques USB distincts, puis crée un PDO et construit une pile d’appareils pour chaque fonction.

Un périphérique USB composite ne peut pas exposer une fonction qui sert de hub. Windows n’énumère pas correctement ces hubs et la tentative d’installation de l’appareil peut provoquer un blocage du système.