Connecter des appareils USB

Ce guide décrit les étapes nécessaires pour connecter un périphérique USB à une distribution Linux s’exécutant sur WSL 2 en utilisant le projet open source USB/IP, usbipd-win.

La configuration du projet USB/IP sur votre machine Windows vous permettra de réaliser des scénarios de développement USB courants, tels que le flashage d’un Arduino ou l’accès à un lecteur de carte à puce.

Prérequis

  • Exécution de Windows 11 (build 22000 ou version ultérieure). (La prise en charge de Windows 10 est possible, voir la note ci-dessous).
  • Une machine avec un processeur x64 est nécessaire. (x86 et Arm64 ne sont actuellement pas pris en charge avec usbipd-win).
  • WSL est installé et configuré avec la dernière version.
  • Distribution Linux installée et définie sur WSL 2.

Remarque

Pour vérifier le numéro de build et la version de Windows, sélectionnez la touche de logo Windows+R, tapez winver et sélectionnez OK. Vous pouvez mettre à jour la dernière version de Windows en sélectionnant Démarrer>Paramètres>Windows Update>Rechercher les mises à jour. Pour vérifier votre version du noyau Linux, ouvrez votre distribution Linux et entrez la commande : uname -a. Pour effectuer une mise à jour manuelle vers le noyau le plus récent, ouvrez PowerShell et entrez la commande « wsl --update ».

Important

WSL prend désormais en charge Windows 10 et Windows 11 via le Microsoft Store, ce qui signifie que les utilisateurs de Windows 10 ont désormais accès aux dernières versions du noyau sans avoir besoin de compiler à partir des sources. Voir WSL dans le Microsoft Store est désormais en disponibilité générale sur Windows 10 et 11 pour plus d’informations sur la mise à jour vers la version prise en charge par le Windows Store de WSL. Si vous ne parvenez pas à effectuer la mise à jour vers la version prise en charge par le Windows Store de WSL et recevez automatiquement les mises à jour du noyau, consultez le dépôt de projet USBIPD-WIN pour obtenir des instructions sur la connexion des périphériques USB à une distribution Linux exécutée sur WSL 2 en créant votre propre noyau WSL 2 compatible USBIP.

Installer le projet USBIPD-WIN

La prise en charge de la connexion de périphériques USB n’étant pas disponible en mode natif dans WSL, vous devez installer le projet open source usbipd-win.

  1. Accédez à la page de la dernière publication du projet usbipd-win.
  2. Sélectionnez le fichier .msi, qui téléchargera le programme d’installation. (Vous pouvez recevoir un avertissement vous demandant de confirmer que vous approuvez cet téléchargement).
  3. Exécutez le fichier d’installation usbipd-win_x.msi téléchargé.

Remarque

Sinon, vous pouvez également installer le project usbipd-win en utilisant la commande winget Gestionnaire de package Windows. Si vous avez déjà installé winget, utilisez simplement la commande: winget install --interactive --exact dorssel.usbipd-win to install usbipd-win. Si vous laissez de côté --interactive, winget peut redémarrer immédiatement votre ordinateur si cela est nécessaire pour installer les pilotes.

Les éléments suivants sont installés :

  • Un service appelé usbipd (nom d’affichage : hôte de périphérique USBIP). Vous pouvez vérifier l’état de ce service à l’aide de l’application Services de Windows.
  • Un outil en ligne de commande usbipd. L’emplacement de cet outil sera ajouté à la variable d’environnement PATH.
  • Une règle de pare-feu appelée usbipd pour permettre à tous les sous-réseaux locaux de se connecter au service. Vous pouvez modifier cette règle de pare-feu pour affiner le contrôle d’accès.

Attacher un périphérique USB

Avant d’attacher votre périphérique USB, assurez-vous qu’une ligne de commande WSL est ouverte. La machine virtuelle légère du WSL 2 restera ainsi active.

Remarque

Ce document part du principe que vous avez usbipd-win 4.0.0 installé ou une version ultérieure

  1. Répertoriez tous les appareils USB connectés à Windows en ouvrant PowerShell en mode administrateur et en entrant la commande. Une fois que les appareils sont répertoriés, sélectionnez et copiez l’ID de bus de l’appareil que vous souhaitez attacher à WSL.

    usbipd list
    
  2. Avant de joindre le périphérique USB, la commande usbipd bind doit être utilisée pour partager l’appareil, ce qui lui permet d’être attaché à WSL. Cette opération nécessite des privilèges d’administrateur(-trice). Sélectionnez l’ID de bus de l’appareil que vous souhaitez utiliser dans WSL et exécutez la commande suivante. Après avoir exécuté la commande, vérifiez que l’appareil est partagé à l’aide de la commande usbipd list à nouveau.

    usbipd bind --busid 4-4
    
  3. Pour attacher l’appareil USB, exécutez la commande suivante. (Vous n’avez plus besoin d’utiliser une invite d’administrateur(-trice) avec élévation de privilèges.) Vérifiez qu’une invite de commandes WSL est ouverte afin de maintenir la machine virtuelle WSL 2 légère active. Notez que tant que le périphérique USB est attaché à WSL, il ne peut pas être utilisé par Windows. Une fois attaché à WSL, l’appareil USB peut être utilisé par n’importe quelle distribution exécutée en tant que WSL 2. Vérifiez que l’appareil est attaché à l’aide de usbipd list. À partir de l’invite WSL, exécutez lsusb pour vérifier que l’appareil USB est répertorié et qu’il peut être interagissant avec les outils Linux.

    usbipd attach --wsl --busid <busid>
    
  4. Ouvrez Ubuntu (ou votre ligne de commande WSL préférée) et répertoriez les périphériques USB attachés en utilisant la commande :

    lsusb
    

    Vous devez voir le périphérique que vous venez d’attacher et être en mesure d’interagir avec lui en utilisant les outils normaux de Linux. En fonction de votre application, il se peut que vous deviez configurer les règles udev pour permettre aux utilisateurs non racines d’accéder au périphérique.

  5. Une fois que vous avez terminé d’utiliser le périphérique USB dans WSL, vous pouvez le déconnecter physiquement ou exécuter cette commande à partir de PowerShell :

    usbipd detach --busid <busid>
    

Pour en savoir plus sur son fonctionnement, consultez le Blog de ligne de commande Windows et le référentiel usbipd-win sur GitHub.

Pour une démonstration vidéo, consultez WSL 2 : Connecter des périphériques USB (présentation Tabs vs Spaces).