USB sur IP à la maison

Parfois, vous souhaitez travailler avec un appareil connecté via USB sans le garder sur la table à côté de votre ordinateur portable. Mon appareil est un graveur chinois doté d'un laser de 500 mW, ce qui est assez désagréable en contact rapproché. En plus du danger immédiat pour les yeux, des produits de combustion toxiques sont libérés lors du fonctionnement du laser. L'appareil doit donc être situé dans un endroit bien ventilé et de préférence isolé des personnes. Comment contrôler un tel appareil ? J'ai accidentellement trouvé la réponse à cette question en parcourant le référentiel OpenWRT dans l'espoir de trouver une utilisation digne de l'ancien routeur D-Link DIR-320 A2. Pour me connecter, j'ai décidé d'utiliser celui décrit plus tôt sur Habré. Tunnel USB sur IP, cependant, toutes les instructions pour l'installer ont perdu de leur pertinence, j'écris donc la mienne.

OpenWRT est un système d'exploitation qui n'a pas besoin d'être présenté, je ne décrirai donc pas son installation. Pour mon routeur, j'ai pris la dernière version stable d'OpenWrt 19.07.3 et je l'ai connecté au point d'accès Wi-Fi principal en tant que client, en sélectionnant le mode lan, pour ne pas tourmenter le pare-feu.

Partie serveur

Nous agissons selon consignes officielles. Après vous être connecté via ssh, installez les packages nécessaires.

root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install kmod-usb-ohci usbip-server usbip-client

Ensuite, nous connectons notre appareil au port USB du routeur (dans mon cas, des appareils : un hub USB, une clé USB sur laquelle est monté le système de fichiers du routeur (en raison du manque d'espace sur la mémoire interne), et, directement, le graveur).

Essayons d'afficher une liste des appareils connectés :

root@OpenWrt:~# usbip list -l

Vide.

En cherchant sur Google, le coupable a été trouvé, il s'est avéré qu'il s'agissait d'une bibliothèque libudev-fbsd.
Nous extrayons manuellement la dernière version de travail du référentiel libudev_3.2-1 de la version OpenWRT 17.01.7 pour votre architecture, dans mon cas il s'agit de libudev_3.2-1_mipsel_mips32.ipk. À l'aide de wget/scp, téléchargez-le dans la mémoire du routeur et réinstallez-le

root@OpenWrt:~# opkg remove --force-depends libudev-fbsd
root@OpenWrt:~# opkg install libudev_3.2-1_mipsel_mips32.ipk

vérifier:

root@OpenWrt:~# usbip list -l
 - busid 1-1.1 (090c:1000)
   Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) : Flash Drive (090c:1000)

 - busid 1-1.4 (1a86:7523)
   QinHeng Electronics : HL-340 USB-Serial adapter (1a86:7523)

Un Chinois connecté à un hub USB a reçu un bsuid 1-1.4. Souviens-toi.

Démarrons maintenant le démon :

root@OpenWrt:~# usbipd -D

et je lie les chinois

root@OpenWrt:~# usbip bind -b 1-1.4
usbip: info: bind device on busid 1-1.4: complete

Vérifions que tout fonctionne :

root@OpenWrt:/home# netstat -alpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:3240            0.0.0.0:*               LISTEN      1884/usbipd

Pour lier davantage l'appareil automatiquement, modifions /etc/rc.localen ajoutant avant sortie 0 suivant:

usbipd -D &
sleep 1
usbip bind -b 1-1.4

Côté client

Essayons de connecter l'appareil à Windows 10 en utilisant les instructions ci-dessus sur openwrt.org. Je le dis tout de suite : l’idée est vouée à l’échec. Premièrement, seul Windows 7 x64 est pris en compte. Deuxièmement, un lien est donné vers un fil de discussion sur sourceforge.net, qui suggère de télécharger un pilote corrigé en 2014 depuis Dropbox. Lorsque nous essayons de l'exécuter sous Windows 10 et de nous connecter à notre appareil, nous obtenons l'erreur suivante :

c:Utilsusbip>usbip -a 192.168.31.203 1-1.4
usbip for windows ($Id$)

*** ERROR: cannot find device

Cela est dû au fait que le client ne fonctionne pas avec un serveur construit pour un noyau antérieur à la version 3.14.
Le serveur usbip pour OpenWRT 19.07.3 est construit sur le noyau 4.14.180.

En poursuivant mes recherches, je tombe sur le développement en cours d'un client Windows pour github. Ok, la prise en charge de Windows 10 x64 est indiquée, mais le client n'est qu'un client de test, il existe donc un certain nombre de limitations.

Donc, ils demandent d'abord d'installer le certificat, et deux fois. Ok, mettons-le dans l'autorité de certification racine de confiance et les éditeurs de confiance.

Ensuite, vous devez mettre le système d'exploitation en mode test. Ceci est fait par une équipe

bcdedit.exe /set TESTSIGNING ON

Je n'ai pas réussi la première fois, j'ai gêné sécuriser boot. Pour le désactiver, vous devez redémarrer dans UEFI et désactiver le démarrage sécurisé. Certains modèles d'ordinateurs portables peuvent nécessiter la définition d'un mot de passe superviseur.

Après cela, démarrez Windows et faites bcdedit.exe / set TESTSIGNING ON
Vinda dit que tout va bien. Nous redémarrons à nouveau et nous voyons dans le coin inférieur droit les mots Mode Test, version et numéro de build du système d'exploitation.

A quoi servent toutes ces manipulations ? Pour installer un pilote non signé USB/IP VHCI. Il est suggéré de le faire en téléchargeant les fichiers usbip.exe, usbip_vhci.sys, usbip_vhci.inf, usbip_vhci.cer, usbip_vhci.cat et en les exécutant avec les droits d'administrateur.

usbip.exe install

ou la deuxième méthode, en installant manuellement le matériel hérité. J'ai choisi la deuxième option, j'ai reçu un avertissement concernant l'installation d'un pilote non signé et je l'ai accepté.

Ensuite, nous vérifions que nous avons la possibilité de nous connecter à un périphérique USB distant en exécutant la commande :

usbip.exe list -r <ip вашего роутера>

nous obtenons une liste d'appareils :

c:Utilsusbip>usbip.exe list -r 192.168.31.203
usbip: error: failed to open usb id database
Exportable USB devices
======================
 - 192.168.31.203
      1-1.4: unknown vendor : unknown product (1a86:7523)
           : /sys/devices/ssb0:1/ehci-platform.0/usb1/1-1/1-1.4
           : unknown class / unknown subclass / unknown protocol (ff/00/00)

pour une erreur usbip : erreur : échec de l'ouverture de la base de données d'identifiant USB On n’y prête pas attention, cela n’affecte pas le travail.

Maintenant, nous lions l'appareil :

c:Utilsusbip>usbip.exe attach -r 192.168.31.203 -b 1-1.4

Ça y est, Windows a détecté un nouveau périphérique, vous pouvez désormais travailler avec lui comme s'il était physiquement connecté à l'ordinateur portable.

J'ai dû souffrir un peu avec le graveur chinois, car lorsque j'ai essayé d'installer son pilote CH341SER via le programme d'installation fourni avec le graveur (oui, un graveur Arduino), USB/IP VHCI a déposé Windows dans BSOD. Cependant, l'installation du pilote CH341SER à la connexion de l'appareil via usbip.exe a résolu le problème.

En résumé : le graveur fait du bruit et fume dans la cuisine avec la fenêtre ouverte et la porte fermée, je regarde le processus de gravure depuis une autre pièce via mon propre logiciel, qui ne détecte aucun accroc.

Sources utilisées:

https://openwrt.org/docs/guide-user/services/usb.iptunnel
https://github.com/cezanne/usbip-win

Source: habr.com

Ajouter un commentaire