• # Linux gadget

    Posté par . En réponse au message Emuler une clef USB avec un PC Linux. É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.