USB 3.0 : xHCI, BOT, UASP, Windows 7 et 8... pas si simple !

Tag : USB 3;
Publié le 21/03/2013 par
Imprimer

Windows 7 : pas de gestion native

Lancé en octobre 2009, Windows 7 intègre nativement un pilote EHCI capable de piloter les contrôleurs USB 2.0. Si sa sortie est ultérieure à celle de la spécification USB 3.0, elle reste antérieure à celle de la version finale du standard xHCI. Résultat, Microsoft n'a pas souhaité développer de pilote xHCI basé sur les drafts et il n'y a pas de pilote natif fourni dans l'OS pour l'USB 3.0.

Conséquence concrète pour les marques qui vendent des contrôleurs : chaque fabricant doit fournir un pilote qui inclut sa propre implémentation d'une stack xHCI. Un travail redondant mais obligatoire.

Autre point à noter comme nous l'avons expliqué précédemment, par défaut, Windows 7 ne sait pas gérer des périphériques de stockage dans un autre mode d'accès que le mode USB traditionnel (BOT).

Microsoft à cependant été assez proactif sur la question, et propose de contourner cette limitation (voir ce document ) en ajoutant ce que l'on appelle un Class Driver qui se chargera à la volée lorsque l'on connectera un périphérique (le driver xHCI "marquant" le périphérique USB pour qu'il soit géré par le Class Driver UASP). La spécification fournie par Microsoft permet de développer un tel pilote et explique comment réaliser l'accrochage dans les xHCI.

Bien entendu cela n'est pas obligatoire, à tel point qu'aucun des fabricants principaux (Intel, NEC/Renasas, Asmedia, EtronTech) ne fournit de Class Driver UASP avec ses xHCI Windows 7 ! Un tel Class Driver UASP existe cependant, développé par la société MCCI  (qui a participé à l'élaboration de la spécification UASP).


Un fabricant de cartes mères, Asus, fournit d'ailleurs ce pilote avec ses cartes mères via un utilitaire baptisé USB Boost.

Windows 8 : gestion native, ou presque

Si les fabricants de contrôleurs ne se sont pas pressés pour développer des pilotes UASP, c'est avant tout parce que Microsoft avait annoncé qu'il proposerait une stack de pilotes USB 3.0 native pour Windows 8.


Le constructeur a tenu ses promesses comme vous pouvez le voir sur ce schéma. En plus d'un pilote xHCI natif, la stack est complète et inclut un Class Driver supportant à la fois le more BOT et le mode UASP. Cependant, et c'est là que les choses se corsent : le Class Driver UASP ne s'activera pas sur tous les contrôleurs. Sur le point Microsoft est assez peu loquace, indiquant simplement que leur implémentation est universelle, avec si nécessaire une émulation logicielle pour les Streams nécéssaires à l'utilisation de l'UASP. Mais que dans certains cas d'incompatibilités matérielles connus (par Microsoft, et non précisés), l'UASP peut ne pas s'activer.

On voit la différence uniquement en regardant le nom du disque connecté. S'il contient USB drive, le disque fonctionne en mode BOT. S'il contient SCSI drive, il fonctionne en mode UASP.

Nous avons testés les contrôleurs USB 3.0 que nous avions sous la main, et avons vu quelques surprises. Si l'on pensait dans un premier temps que seuls les puces certifiées xHCI 1.0 seraient compatibles UASP, en pratique les choses sont bien plus complexes, voici un résumé de ce que nous avons obtenu pour les modèles que nous avons pu tester. Nous avons également ajouté le niveau de xHCI des autres modèles qui leurs sont liés :


On ne trouvera pas de lien logique entre la version du xHCI du contrôleur et son support ou non de l'UASP. En pratique, seuls les chipsets d'AMD (basés sur le Renasas PD720200) et d'Intel ont permis de charger le driver UASP de Microsoft.

Pour les fabricants tiers taïwanais, c'est par contre une déconvenue, a commencer par le 1042 d'Asmedia, extrêmement répandu sur les cartes mères récentes et qui est incompatible xHCI 1.0. Une version 1042A, compatible xHCI 1.0 a bel et bien été annoncée par le constructeur en octobre dernier , mais ne nous l'avons pour l'instant pas vu chez les constructeurs de cartes mères. On ne sait pas si elle permettra d'activer ou non l'UASP sous Windows 8.

Bien évidement, on sait aussi que l'Asmedia 1042 permet d'utiliser l'UASP via le pilote de MCCI, ce qui rend la situation un peu plus ubuesque !

Le cas d'EtronTech est encore plus surprenant puisque la puce est annoncée compatible xHCI 1.0  sur le site du constructeur. Ce dernier ne parle que de mode isosynchrones et de transferts types contrôles et bulk ce qui pourrait mettre la puce à l'oreille sur une gestion imparfaite des streams.

Autant dire que cela est pour le moins confus pour les utilisateurs. Notez que le pilote xHCI de Microsoft indique, dans le gestionnaire de périphérique, le mode dans lequel il fonctionne via quelques chiffres (on lit "- 0100" pour xHCI 1.0, et "- 0096" pour xHCI 0.96) :


Notez qu'il reste toujours possible pour un constructeur de fournir son propre pilote UASP, même s'ils ne le font pas à l'image de Windows 7. Et donc, tout comme pour Windows 7, MCCI propose lui aussi son propre pilote UASP sous Windows 8. Ce pilote est fourni une fois de plus par Asus.

Maintenant, avoir le bon modèle de contrôleur supporté par Microsoft, un pilote UASP et/ou un Windows compatible ne suffit pas forcément pour que l'UASP soit actif, mais avant de vous expliquer pourquoi, revenons un instant sur les fameux modes Turbo disponibles sur certaines cartes mères.
Vos réactions

Top articles