Forum général.cherche-matériel Emuler une clef USB avec un PC Linux

Posté par .
Tags : aucun
10
27
août
2008
Bonjour,

Voici un petit problème intéressant pour les geeks qui liront mon journal.

Voici les données du problème :

  • J'ai un magnétoscope numérique Samsung qui sait lire les données présentes sur une clef USB mais qui n'a pas de port réseau ou de connectivité wifi

  • J'ai un vieux PC Linux sans écran à côté qui contient des données multimedia (photo, musique, videos...) avec pleins de ports USB de libre



Ce que je n'ai pas envie de faire :

  • Installer/Configurer un système multimedia (freevo...) sur mon vieux PC et le relier à ma télé (le vieux PC n'a même pas de serveur X...)



Ce que j'aimerais faire :

  • Relier mon magnétoscope numérique à mon vieux PC Linux via un cable USB (ou un bricolage quelconque) et faire croire au magnétoscope qu'il est en train de parcourir une simple clef USB (sur un répertoire déterminé)

  • Obtenir ainsi une vue sur les données du PC depuis l'IHM et la télécommande du magnétoscope numérique



J'espère avoir été clair.

Ca n'a probablement aucune importance (mais l'OS est une CentOS 4 dernière mouture, kernel 2.6 donc).

Par avance, merci au lecteur bien malin qui trouvera la solution à mon problème...
  • # disque dur sur port usb

    Posté par (page perso) . Évalué à 4.

    Achete un adaptateur USB pour ton DD.
    ça marche chioupeur, j'ai fait ça chez ouam.
    • [^] # Re: disque dur sur port usb

      Posté par . Évalué à 4.

      Pourquoi avez-vous massivement moinsé ?
      si le PC est spécialement ancien (même pas de serveur X), la seule chose qui a de la valeur, c'est le disque dur.

      Avec la solution proposée, on réalise une économie de place, de bruit et d'énergie.

      Coût maximum de l'opération : le prix d'un boitier pour disque dur externe.
      De plus, la solution est relativement simple, et ne demande pas de connaissances particulières en informatique.
      • [^] # Re: disque dur sur port usb

        Posté par . Évalué à 2.

        bien entendu, mon vieux PC est relié au réseau et je l'alimente depuis mon vrai PC ; en outre, quoique vieux, il rend quelques menus services (serveur web, ftp...)

        la solution que tu proposes (sortir le disque dur et le mettre dans un boitier adhoc) ne convient donc pas (mais merci d'avoir proposé)
  • # USB Hôte ...

    Posté par . Évalué à 3.

    Ce que tu veux faire c'est brancher 2 USB Hôte (PC et Magnétoscope) et faire croire au PC que c'est pas un Hôte mais un périphérique (http://fr.wikipedia.org/wiki/Universal_Serial_Bus).
    Je ne sais pas si il existe un driver Linux permettant de faire cela
    • [^] # Re: USB Hôte ...

      Posté par . Évalué à 1.

      Il faudrait surtout voir si c'est possible au niveau hardware, je pense que les contrôleurs USB qui sont sur les cartes mères sont prévus pour avoir un rôle bien défini (host) et je ne pense pas a priori qu'on puisse les faire fonctionner en périphériques.

      Vu l'intérêt pratique de la chose (relier 2 PCs en USB, ou ce que veut faire le posteur, etc) si c'était possible je pense que qqn aurait déjà fait une gruikerie pour ça.
  • # Linux gadget

    Posté par . Évalué à 7.

    C'est une option de configuration du noyau Linux.
    Jamais testé.
    On en parle un peu là http://www.linux-usb.org/gadget/
    et c'est dans Device Drivers, USB support, USB gadget.

    En gros, si j'ai bien compris, le noyau fournit une interface assez pratique permettant à un matériel tournant sous Linux de se comporter comme un périphérique USB esclave. Reste ensuite à coder le pilote, des deux côtés :-)

    D'après le site web, c'est rarement possible pour les PC parce que, comme dit plus haut, le matériel USB n'intègre que des fonctions d'hôte et non pas d'esclave. Mais ils précisent ensuite que ce n'est pas le cas des périphériques qui intègrent un Linux embarqué, tout est fait par le processeur, d'où l'interface proposée. Peut-être y a-t-il un moyen de forcer les ports USB à transférer au processeur directement tout ce qui leur arrive, lui laissant faire le travail ? Sinon de bricoler un truc matériel crade, pour faire arriver les trames USB brutes sur une (plutôt deux sans doutes) liaisons série ?

    La description de l'option suit :

    USB Gadget Support (USB_GADGET)

    USB is a master/slave protocol, organized with one master
    host (such as a PC) controlling up to 127 peripheral devices.
    The USB hardware is asymmetric, which makes it easier to set up:
    you can't connect a "to-the-host" connector to a peripheral.

    Linux can run in the host, or in the peripheral. In both cases
    you need a low level bus controller driver, and some software
    talking to it. Peripheral controllers are often discrete silicon,
    or are integrated with the CPU in a microcontroller. The more
    familiar host side controllers have names like "EHCI", "OHCI",
    or "UHCI", and are usually integrated into southbridges on PC
    motherboards.

    Enable this configuration option if you want to run Linux inside
    a USB peripheral device. Configure one hardware driver for your
    peripheral/device side bus controller, and a "gadget driver" for
    your peripheral protocol. (If you use modular gadget drivers,
    you may configure more than one.)

    If in doubt, say "N" and don't enable these drivers; most people
    don't have this kind of hardware (except maybe inside Linux PDAs).

    For more information, see <http://www.linux-usb.org/gadget> and
    the kernel DocBook documentation for this API.
    • [^] # Re: Linux gadget

      Posté par . Évalué à 4.

      Je me disais bien...

      un peu plus loin on trouve:

      File-backed Storage ... implements the USB Mass Storage class (as CB, CBI, or BBB), appearing to the host as a SCSI disk drive. This uses a file or block device as a backing store for the drive, like the "loop" driver. (Read about how to set up the backing store.) The 2.6 version also lets you change the backing file associated with a given LUN. For example, you might specify the block device for an MMC card when that card is inserted (maybe using a hotplug script, or a GUI). Note that for MS-Windows interoperability, your backing store needs to be formatted with a DOS partition label. Data partitions can then be formatted with VFAT (for the widest interoperability) or some other filesystem (such as ext3 or reiserfs, for use with Linux

      et là c'est encore mieux : http://www.linux-usb.org/gadget/file_storage.html

      modprobe g_file_storage file=/root/data/backing_file,/dev/hda7

      Je sens qu'on se rapproche
      • [^] # Re: Linux gadget

        Posté par . Évalué à 4.

        Dans la config du noyau:

        config USB_FILE_STORAGE
        tristate "File-backed Storage Gadget"
        depends on BLOCK
        help
        The File-backed Storage Gadget acts as a USB Mass Storage
        disk drive. As its storage repository it can use a regular
        file or a block device (in much the same way as the "loop"
        device driver), specified as a module parameter.

        Say "y" to link the driver statically, or "m" to build a
        dynamically linked module called "g_file_storage".
        • [^] # Re: Linux gadget

          Posté par . Évalué à 2.

          ce thread me mène assurément vers ce que je cherchais (merci)

          malheureusement, je comprends qu'il faut utiliser une partition dos/vfat pour la publier en clef USB (à moins que mon magnétoscope numérique sache lire des clefs formatées en EXT3, ce dont je doute ?)

          Comme j'ai une grosse partition existante en ext3, ça complique mon affaire...

          en outre, dans le document on lit :

          While FSG is running and the gadget is connected to a USB host, that USB host will use the backing storage as a private disk drive. It will not expect to see any changes in the backing storage other than the ones it makes. Extraneous changes are liable to corrupt the filesystem and may even crash the host.

          J'ai donc presque intérêt à remonter en RO ma partition quand je l'utilise avec le magnétoscope ? Ce qui rend là aussi mon affaire moins conviviale (même si on doit pouvoir automatiser ça avec udev probablement lorsque la clef virtuelle est montée ?)

          Bref, un grand merci mais je sens que je ne vais pas aboutir facilement....
          • [^] # Re: Linux gadget

            Posté par (page perso) . Évalué à 3.

            je comprends qu'il faut utiliser une partition dos/vfat
            Mheu non, il te suffit de modifier l'OS présent dans ton magnétoscope. Ben sinon c'est de la FAT comme d'hab :-)

            Si tu es bloqué par ton partitionnement actuel, tu peux monter une partition "virtuelle" avec /dev/loop (man losetup). Ca fonctionne très bien.

            J'ai donc presque intérêt à remonter en RO ma partition
            "presque" ? Non non, tu es obligé. Ton magnétoscope pense être le seul à accéder à ce périphérique, donc pas de blague. En revanche tu peux peut-être débrancher virtuellement ce périphérique USB, le remonter en lecture/écriture, faire ta soupe, puis le rebrancher une fois que tu es repassé en lecture seule.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.