Faire en sorte qu'un ordinateur agisse comme un périphérique USB virtuel pour d'autres équipements

18

Certaines applications simulent un lecteur USB ou CD-ROM virtuel comme si un lecteur USB était connecté à l'ordinateur.

Existe-t-il une configuration ou une application qui fournit un lecteur USB virtuel, non pas pour le système d'exploitation lui-même, mais pour d'autres équipements qui acceptent un lecteur USB, via un port USB.

Je vais donc avoir un disque dur virtuel (par exemple un *.vdifichier) dans l'ordinateur, qui est connecté, via une prise USB, en tant que clé USB à un autre équipement (par exemple un téléphone portable ou un ordinateur portable).

user62511
la source

Réponses:

12

Vous devrez ajouter un périphérique USB / contrôleur périphérique à l'ordinateur, par opposition au contrôleur hôte USB avec lequel ils ont tendance à être fournis.

Quelque chose comme ça: https://www.maximintegrated.com/en/products/interface/controllers-expanders/MAX3420E.html

Malheureusement, vous devez trouver un moyen de le connecter à votre carte mère. Techniquement, cela peut être fait. Pratiquement, il faudrait repenser la carte mère pour l'inclure. Vous pourriez avoir la chance de trouver un bus SPI ou I2C exposé quelque part sur votre carte mère pour vous permettre de l'ajouter, mais ils sont généralement câblés directement dans ce qu'ils sont utilisés, sauf si vous utilisez une carte de développement ou un seul ordinateur de bord avec GPIO exposé et d'autres ports tels qu'un Raspberry Pi.

L'autre option serait un contrôleur USB On-the-Go. Les cartes mères conçues pour les appareils embarqués et portables ont tendance à avoir un contrôleur USB OTG (On-the-go), qui peut fonctionner comme un hôte ou un contrôleur de périphérique. Par exemple, le Raspberry Pi susmentionné a un contrôleur On-the-Go, mais sur tous les modèles sauf le Pi Zero qui est recâblé sur un port hôte ou un concentrateur USB intégré refusant l'utilisation de la fonctionnalité du périphérique USB. Le BeagleBone Black possède un port OTG.

Mais ce n'est pas tout - une fois que vous avez le matériel, vous aurez également besoin du logiciel. Linux a quelques pilotes de noyau USB utiles («gadget USB» est un autre terme pour périphérique / périphérique USB) tels que g_serial et g_ethernet qui vous permettent de brancher votre appareil sur un autre ordinateur et d'être visible en tant que périphérique série ou Ethernet sur USB (il existe d'autres méthodes pour exposer un périphérique en tant que stockage de masse, qui vous permettent d'utiliser un fichier en tant que périphérique de bloc et d'exposer l'ordinateur en tant que gadget de stockage de masse). Le BeagleBone Black a tendance à être activé par défaut, vous pouvez donc simplement le brancher sur votre PC via USB et le voir comme un appareil en réseau - et je pense qu'il apparaît également comme un périphérique de stockage de masse en utilisant un pilote composite (qui permet pour qu'il apparaisse sous la forme de plusieurs types de périphériques USB sur une seule connexion. Le Pi Zero peut les utiliser , mais pas par défaut. Pour Windows ou d'autres systèmes d'exploitation, vous devrez probablement écrire ce pilote de périphérique vous-même.

Donc, théoriquement, vous pouvez le faire. Vous pouvez détruire votre PC de bureau, essayer de trouver un bus compatible inutilisé sur la carte mère quelque part (très probablement des broches inutilisées sur un CI de contrôleur), ou un moyen d'étendre un bus I2C ou SPI interne, ou quelque chose que vous pouvez déchirer et remplacer et souder une puce USB OTG ou un contrôleur de périphérique dessus. Ensuite, vous pouvez installer Linux et utiliser un pilote de gadget, ou écrire le vôtre pour un autre système d'exploitation. Pratiquement, à moins que vous ne soyez un ingénieur en électronique de premier ordre, vous ne pourrez pas le faire. Du moins, pas tant que quelqu'un ne sort pas avec cet adaptateur insaisissable avec un appareil ou un port OTG qui se branche sur un port USB (théoriquement, cela pourrait être fait avec un microcontrôleur tel qu'un Arduino câblé à une paire de CI de contrôleur de périphérique USB), et écrit les pilotes pour l'exécuter.

Matt Thomason
la source
2
grande explication, pouvez-vous mettre à jour la réponse si vous (à votre connaissance) voyez quelque chose de nouveau concernant votre phrase "jusqu'à ce que quelqu'un sorte avec l'adaptateur exclusif ...". Il existe des ordinateurs portables avec usb-c en 2018, pourraient-ils être une solution.?
Asain Kujovic
8

L'USB est dissymétrique: un côté est un hôte, l'autre côté est un périphérique. Vous ne pouvez pas faire fonctionner un périphérique comme un hôte ou vice versa. Il est possible qu'un port USB puisse agir de part et d'autre; cela s'appelle USB on-the-go et est présent sur certains téléphones portables et tablettes. Les ports sont physiquement des types de périphériques, pas des ports de type hôte. Je n'ai jamais vu un PC avec un port d'appareil. Cela nécessite une électronique sur le contrôleur, il ne suffit pas de faire un câble qui s'adapte aux deux extrémités.

Donc non, vous ne pourrez pas transformer un PC en périphérique USB.

Si vous souhaitez utiliser un ordinateur comme périphérique de stockage USB, vous pouvez utiliser un téléphone mobile ou une tablette avec une connexion USB au lieu d'utiliser un PC.

Gilles 'SO- arrête d'être méchant'
la source
Pouvez-vous nous en dire un peu plus sur la façon dont l'utilisation d'un téléphone mobile pourrait m'aider à transformer mon PC en un périphérique de stockage / hôte USB, que je pourrais brancher sur un autre ordinateur, téléviseur ou appareil? Je pense que je manque ce point, bien que je pense avoir une bonne connaissance de l'USB OTG.
2015
@trejder Comme je l'ai écrit, je n'ai jamais vu un PC avec un port de périphérique ("PC" à l'exception des tablettes x86).
Gilles 'SO- arrête d'être méchant'
Oui, mais je me réfère à votre dernière phrase: " Si vous voulez transformer un ordinateur en périphérique de stockage USB, vous pouvez utiliser un téléphone portable ou une tablette avec une connexion USB ". Il me manque peut-être quelque chose, mais je le comprends comme "vous pouvez utiliser un téléphone portable ou une tablette pour transformer un ordinateur en périphérique de stockage USB". Si oui, alors la question est: comment?
trejder
1
@trejder Ah, "ordinateur" dans cette phrase n'est pas "PC", c'est "ordinateur". Un téléphone / tablette est un type d'ordinateur différent d'un PC. C'est ça qui vous dérange?
Gilles 'SO- arrête d'être méchant'
1
@trejder No. Généralement, votre meilleur pari est d'établir une connexion réseau d'une manière ou d'une autre. Vous pouvez utiliser Firewire comme connexion réseau entre deux PC avec un port Firewire, mais de nombreux PC n'en ont pas. La plupart des PC ont un port Ethernet, vous pouvez connecter deux PC avec un câble Ethernet (les très vieux PC nécessitent un câble croisé mais les modernes peuvent prendre un câble ordinaire). Pour faire d'un PC un périphérique de stockage pour un appareil mobile, vous devez généralement mettre le PC en Wi-Fi d'une manière ou d'une autre.
Gilles 'SO- arrête d'être méchant'
2

Vous pouvez envisager d'utiliser l'un des «câbles pontés USB-USB» spéciaux, parfois appelés «câbles réseau USB». Comme celui mentionné dans ces articles:

Ils vous permettent de transférer des fichiers entre deux PC. J'utilise ce type de câbles il y a plus de dix ans (à l'époque de Windows XP) et à cette époque, tous ces câbles disponibles sur le marché nécessitaient un pilote et un logiciel spéciaux. Ils vous permettent de transférer des fichiers uniquement via un commandant de fichier spécial, fourni avec des pilotes de câble sur un disque d'installation et ne permettant donc pas à un PC d'agir sur un autre comme un périphérique externe USB pur.

Je ne suis pas sûr, si quelque chose a changé depuis et si de nouvelles solutions vous permettent uniquement de transférer des fichiers à l'aide d'un logiciel spécial et - si vous pouvez forcer un PC à agir comme un périphérique externe vers un autre PC.

trejder
la source
2

Comme expliqué dans la réponse de Matt Thomson , il n'est pas possible de faire correctement un port USB physique d'un ordinateur PC comme un périphérique esclave USB, car le contrôleur esclave USB est manquant.

Cela signifie que si nous avons une carte d'adaptateur qui peut fournir un USB en mode esclave (comme le Raspberry Pi Zero), nous devons le connecter à votre PC hôte par un canal différent, comme Ethernet filaire. J'ai deux propositions différentes quel protocole vous pourriez exécuter sur cette connexion Ethernet:

(1) Exposez le port USB sur le réseau IP.

Utilisez un logiciel pour exposer le port USB en mode esclave du Raspberry Pi Zero en tant que périphérique USB virtuel à votre PC. Le projet USB / IP fournit cela, au moyen d'un pilote qui peut transporter USB sur des réseaux IP.Voici un exemple d'utilisation d'USB / IP pour fournir un périphérique USB simulé à un ordinateur - qui serait votre PC ici.

Ce que je ne sais pas dans cette solution proposée, c'est si le logiciel USB / IP est déjà capable d'exposer un port esclave USB sur un réseau IP, ou seulement un port hôte USB comme d'habitude.

Mais même si cela fonctionne, vous devez toujours configurer ou adapter les pilotes de périphérique sur votre PC de telle sorte qu'ils (1) acceptent la connexion USB / IP entrante comme connexion USB, (2) fournissent le mode esclave USB plutôt que Mode hôte USB, (3) simuler un périphérique de stockage de masse USB en servant les données de l'emplacement attribué (votre .vdi fichier).

Dans l'ensemble, c'est une façon complexe de procéder.

(2) Exposez le fichier sur le réseau IP.

C'est un moyen beaucoup plus simple d'utiliser la connexion Ethernet au Raspberry Pi Zero: sur le Raspberry Pi Zero, montez les données stockées sur votre PC via un système de fichiers réseau. Ces fichiers apparaissent ensuite de manière logique dans le cadre du système de fichiers du Pi Zero, et vous pouvez les utiliser avec le pilote de gadget USB Linux pour que le Raspberry Pi ressemble à un périphérique de stockage de masse USB pour les périphériques connectés.

tanius
la source