Les périphériques de stockage USB, tels que les clés USB et les disques durs, permettent généralement de connecter un stockage externe à tout type d'ordinateur. Comment le Raspberry Pi peut-il émuler un stockage USB? L’application la plus simple était d’accéder directement à la carte SD via USB, mais on pouvait également accéder aux fichiers via Ethernet. J'ai pensé à la disposition suivante pour une " clé USB en nuage ":
Computer <---USB---> |Raspberry Pi| <---Ethernet---> Cloud, NAS etc.
L'ordinateur ne devrait voir qu'une clé USB normale pour lire et écrire des fichiers. Le Raspberry Pi agirait comme un pont programmable qui mapperait les listes de répertoires et les accès aux fichiers à demander à un stockage en nuage. Vous pouvez accéder aux hôtes de stockage en nuage avec n'importe quel ordinateur (y compris les lecteurs multimédias de type boîte noire) via USB sans avoir à installer de logiciel supplémentaire sur l'ordinateur. Le pont USB Raspberry Pi devrait également être en mesure de chiffrer / déchiffrer des fichiers à la volée afin de pouvoir stocker des fichiers chiffrés dans le nuage et y accéder sur n’importe quel périphérique, comme un lecteur USB normal.
Modifier: les produits existants dotés de fonctionnalités similaires mais limitées incluent Wireless Media Stick et USB sur réseau . L'accès aux fichiers dans le cloud peut être possible en montant un stockage virtuel avec un lecteur cloud ou un logiciel similaire et un cryptage avec TrueCrypt ou EncFS - les mots de passe seront stockés sur la carte SD de Raspberry Pi uniquement, mais un seul pourrait accéder au stockage avec n'importe quel ordinateur sans avoir à le faire. tapez une phrase secrète sur une machine non fiable.
la source
Réponses:
Le problème est que la connexion USB du Pi au PC n'a pas les broches de données connectées - seulement les broches d'alimentation. Donc, vous ne pouvez pas utiliser cela pour parler USB parce que ce n'est pas câblé.
Votre seule option avec le Pi serait de «mordre» l’USB en utilisant les broches GPIO, mais c’est très lent et potentiellement peu fiable. Je pense que vous ne pourrez vraiment émuler qu'un clavier ou une souris - une bande passante plus élevée serait probablement trop difficile à gérer pour le processeur, étant donné les contraintes de temps très strictes associées à une connexion USB.
Une autre solution consisterait à trouver un périphérique permettant de connecter deux ordinateurs ensemble via USB, afin de créer une sorte de réseau. Mais alors vous pouvez aussi bien utiliser la connexion Ethernet ...
la source
D'après une analyse rapide de la fiche technique du BCM2835 (http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf) au chapitre 15, il semble que l'USB OTG soit pris en charge dans HW, théoriquement, le soutien du système proposé pourrait donc être une simple affaire de SW. Je ne suis pas un expert en protocole USB (ni même novice, vraiment), mais ce serait plutôt cool d'avoir cette fonctionnalité.
En regardant une description du BeagleBone (http://elinux.org/BeagleBone), il semble prendre en charge quelque chose de similaire, bien qu'il soit spécifiquement mentionné qu'un connecteur prend en charge ce mode. Il serait regrettable que le Raspberry Pi soit limité uniquement à la sélection du connecteur.
J'espère que c'est utile.
la source
Cela semble maintenant possible avec un PiZero - voir http://pi.gbaman.info/?p=699 pour plus d'informations.
la source
Malheureusement, bien que cela semble simple, autant que je sache, cela n’a pas été fait. Voir ce fil et réponse très détaillée pour plus de détails
https://unix.stackexchange.com/questions/2683/serve-files-over-usb
Et une réponse spécifique à Pi ici: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=8&t=4938
la source
Si vous n'êtes pas particulièrement préoccupé par les performances, vous pouvez probablement vous procurer un microcontrôleur compatible USB avec un code de stockage de masse USB (vous pouvez par exemple reprogrammer l'interface de débogage STM32F103 sur un module d'évaluation de découverte STM32F0 à 10 $), connectez-le soigneusement au port série du pi. comme back-end, et courir à plusieurs centaines de kilobauds.
Les performances seraient probablement meilleures si vous vous connectiez au PC client via Ethernet, mais cela nécessiterait un pilote personnalisé ou une présentation différente pour le système d'exploitation hôte, par exemple, vous seriez un périphérique de stockage connecté au réseau ou un serveur partagé.
Je crois que les câbles de transfert de fichiers disponibles dans le commerce ont déjà été mentionnés, mais cela nécessiterait un logiciel approprié pour le PC client et la prise en charge du pilote linux au niveau source pour la fin pi.
la source
J'ai découvert qu'Arduino peut émuler un périphérique USB, l' Arduino Leonardo même hors de la boîte. La pile USB LUFA peut être utilisée sur Arduino et implémente un pilote de périphérique de stockage de masse USB (voir ce tutoriel ). Cette configuration pourrait être utilisée pour mapper des commandes USB à SCSI telles que comprises par le lecteur de carte SD. Je ne connais pas suffisamment le système SCSI, mais il semble que la carte SD de Raspberry Pi et l’USB-via-Arduino puissent être utilisés ensemble sur le même bus. Bien sûr, cette idée n'est pas une solution complète ...
la source
Cela revient à la façon dont fonctionne l'USB. Vous voyez que chaque fois que deux choses sont connectées à l'USB, il y a tous les moyens par un hôte USB et un périphérique USB et jamais le twain ne doit changer de place. Un hôte USB fait toutes sortes de choses que les périphériques USB ne peuvent pas faire pour synchroniser le transfert de données entre tous les périphériques connectés au bus USB. Consultez la page wikipedia USB pour plus d'informations .
Vous parlez de forcer deux hôtes USB (le Raspberry Pi et un ordinateur) à communiquer, ce qui n’est malheureusement pas pris en charge par le standard USB. Certains appareils peuvent simuler un transfert de données entre deux hôtes USB, mais comme Malvineous l’a mentionné, il serait préférable d’utiliser Ethernet.
Votre question mentionne spécifiquement l'utilisation du Raspberry Pi pour émuler le stockage USB, mais avez-vous envisagé de configurer le Raspberry Pi en tant que NAS? En utilisant le Raspberry Pi comme boîtier NAS, vous faites exactement ce que vous avez demandé, mais au lieu d’utiliser une clé USB, ce serait d’utiliser votre réseau. Voici d'excellentes instructions sur la façon de procéder si cela vous intéresse.
la source
Je peux le faire avec mon ancien téléphone Nokia N900 à l’aide du pilote de gadget USB fourni avec le noyau Nokia. Le périphérique émulé se comporte exactement comme un vrai, vous pouvez même démarrer un PC à partir de celui-ci.
la source
Les modèles Pi Zero et Pi Zero W sont maintenant disponibles et prennent en charge l'interface de gadget ( Kernal.org , linux-sunxi.org ) permettant plusieurs profils, y compris le stockage de masse USB et la mise en réseau virtuelle.
La solution la plus proche de la demande de l'OP consiste à utiliser un protocole réseau entre le Pi et le PC hôte, puis une autre forme de protocole réseau du Pi au fournisseur de cloud / réseau. Le Pi Zero W a le Wi-Fi intégré, il peut donc même se connecter directement au fournisseur de cloud / réseau. La mise en réseau de ces deux liens sera le moyen le plus simple de faire le travail. Il existe de nombreux protocoles de réseau et fournisseurs de cloud disponibles.
Essayer d'utiliser le stockage de masse USB serait une mauvaise idée. vous devez écrire ou réécrire une adaptation au niveau du pilote entre le stockage de masse USB et le Pi. Vous pouvez commencer par MTP ou finir avec quelque chose de similaire. MTP a de graves problèmes de performances ( Reddit , XDA , HowToGeek , Reddit ) et je suggère donc l'approche réseau.
Il devrait y avoir beaucoup de programmes et de projets dans cette direction. Du point de vue du Pi, il agit simplement comme un serveur de fichiers / serveur de synchronisation, donc tout tutoriel similaire devrait vous aider à démarrer. Explorer des éléments tels que les serveurs Seafile , Syncthing , SugarSync et OwnCloud basés sur Pi devrait vous aider à démarrer.
Quelques guides utiles sur le Pi Zero en tant que gadget USB:
la source
La norme USB est basée sur l'hôte. Cela signifie qu'un appareil doit contrôler toutes les communications avec les appareils connectés. Les clients peuvent être un simple périphérique ou un concentrateur. Le concentrateur est un proxy hôte pour les clients connectés au concentrateur et communique avec l'hôte (ou le concentrateur) auquel il est connecté.
Comme le design original de l'USB, vous ne pouvez pas connecter deux hôtes ensemble (votre PC et le RPi).
Il existe cependant des extensions, USB On-The-Go , qui permettent à une connexion USB de voir si elle est connectée à un hôte ou à un client, et d'ajuster son rôle en fonction de cela. Pour que cela fonctionne, vous devez avoir un support dans le matériel. Je ne crois pas que le RPi est conçu pour le faire.
Pour plus d'informations, consultez http://www.usb.org/home ou même http://en.wikipedia.org/wiki/Universal_Serial_Bus
En bref, je ne crois pas que cela puisse être fait.
la source