Émuler le périphérique USB physique Linux
J'ai une application Linux que je voudrais automatiser certains tests, et son état doit changer en fonction de l'état de certains appareils, c'est à dire les périphériques USB, les périphériques WLAN, WAN appareils. Cependant, nous n'avons plus physique USB, WLAN, WAN, etc appareils à notre disposition, j'ai donc besoin de trouver un moyen pour tester ce programme, sans réellement de brancher des périphériques physiques, de les activer/désactiver, etc.
Je suis en commençant par la simple création d'un dispositif virtuel USB que je peux contrôler à partir de l'espace utilisateur, mais il y a un manque fondamental de connaissances de ma part m'empêche de prendre l'un des sujets similaires sur ces forums et de les appliquer à mon projet. Je sens que je vais avoir besoin de créer une sorte de virtual pilote USB, et ensuite de communiquer avec certains au niveau de l'utilisateur du programme plutôt que d'un nouveau nom: usbfs. Cependant, même si j'ai créer ce pilote virtuel, comment puis-je "plug in" de cet appareil à partir de l'espace utilisateur et d'obtenir mon programme enregistré avec ce pilote? Est ce que j'essaie de faire de même possible?
source d'informationauteur Matt Dorsett
Vous devez vous connecter pour publier un commentaire.
Le meilleur moyen est d'utiliser le Linux Gadget Pilotes et du matériel qui permet à un périphérique USB. Le gadget pilote de permettre à un ordinateur de "faire semblant" d'être à tout type de dispositif. Ensuite, votre système sous test a un seul port USB OTG câble pour le gadget de la boîte. Vous n'avez même pas besoin de débrancher le câble si votre gadget boîte a le droit matériel. Le "gadget" de la boîte pourrait être votre ordinateur de bureau/ordinateur portable fonctionnant sous Linux (si elle prend en charge l'USB OTG), ou même un téléphone Android ou un Raspberry Pi. (Méfiez-vous que les câbles USB sucer. Tout simplement parce que le câble s'insère ne signifie pas qu'il est correctement câblé pour l'USB OTG.)
Une fois que vous avez le droit de l'USB OTG matériel, votre gadget boîte est tous les logiciels:
1) Si votre appareil sous test prend en charge OTG, assurez-vous que votre gadget boîte qui ne cherche PAS à devenir un hôte USB. (Votre appareil sous test va devenir un client USB.) I. e. assurez-vous que des choses comme
usb_storage
ne sont pas chargés automatiquement.2) Hors de la boîte, le noyau prend en charge les gadgets pour les Concentrateurs USB, USB, Ethernet, USB ports Série et USB. Il suffit de charger le droit de modules sur votre gadget boîte et il "fonctionne". Par exemple, pour créer une clé USB, de faire quelque chose comme ceci: "
insmod g_file_storage.ko file=/dev/ram0
". De l'autre côté vont penser que vous avez branché une clé USB.Pour les appareils de série, votre gadget peut exécuter l'utilisateur de l'espace de code qui "décroche le téléphone" sur /dev/USBx" et parle à votre appareil sous test. (Sans doute l'émulation d'un modem 4G ou quoi que ce soit.)
Tonnes d'appareils sont vraiment "USB serial" sous le capot, car le fabricant a été trop paresseux pour comprendre USB.
3) Avec un peu de re-compiler ou de configuration, vous pouvez avoir ces génériques Gadget Périphériques de faire semblant d'être différents Identifiants USB ou le retour de diverses chaînes du fournisseur, etc. Ce ne sera pas le même que le "test à l'encontre de matériel réel", mais au moins, vous êtes en essais avec la version générique de ces dispositifs.
4) Pour les types d'appareils qui ne sont pas déjà dans le noyau (j'.e WiFi ou autre chose), vous êtes sur votre propre. Avec suffisamment de sang, de sueur et de larmes, vous pouvez écrire votre propre gadget de type. (L'idéal est de conserver autant que possible dans l'espace utilisateur, et seulement gérer la performance des parties critiques dans le noyau..)
Attention: il est impossible, simultanément, de comprendre et d'apprécier USB.
Pourriez-vous tester votre application dans un environnement virtuel à l'aide de VMWare? Ensuite, vous pouvez "plug in" aucun périphérique virtuel sur votre ordinateur hôte de votre machine virtuelle invitée et tester votre application de cette façon.