Я ищу способ заставить Pi выступать в роли USB-клиента и маскироваться под флешку.
Я видел много предложений, однако большинство из них уже старые (от 1 года) и расплывчатые / неполные - я хотел бы попросить обновить информацию о том, что сработало, что не сработало и т. Д.
Существует также множество предложений по использованию Pi в качестве устройства типа NAS. Это не будет работать для моих целей, так как у меня есть «тупой» хост, который может принимать только флешки (и я хочу использовать Pi, чтобы сделать его «умнее»)
Резюме предложений, которые я уже видел:
- эмулировать USB-клиент через контакты GPIO
- эмулируйте последовательное соединение через GPIO, затем используйте существующие кабели для перехода от последовательного к USB
- используя модель А, используйте программное обеспечение, чтобы убедить пи действовать как клиент
- с помощью USB-кабеля типа «хост-хост» (не уверен, что видел какой-либо, поддерживающий Linux ..)
Может ли кто-нибудь объяснить более подробно некоторые из предложенных решений?
PS - мне не нужно и не ожидать высокой производительности от этой конфигурации, скорости USB 1.1 было бы достаточно.
редактировать: я также был бы заинтересован в любых альтернативах, которые могли бы обеспечить эту функциональность, однако я еще не видел "умных" USB-флешек или вариантов Android-на-флешке, которые могли бы.
usbnet
водителем. У них есть страница с упоминанием некоторых; это выглядит устаревшим, поэтому может быть больше сейчас. Прежде чем купить что-нибудь, проверьте вокруг.Ответы:
Вам бы повезло, если бы USB-порты на PI были OTG, а не USB-хостом.
Возможно, вам следует рассмотреть какое-то другое устройство, поскольку ни одно из предложенных вами решений не может быть практичным:
эмулировать USB-клиент через контакты GPIO. Теоретически можно эмулировать USB с помощью битовых контактов. Это может привести к довольно большим затратам на программное обеспечение с точки зрения разработки программного обеспечения. Решение будет относительно сложным для реализации. Теоретически это возможно, но вам нужно сделать анализ затрат / выгод.
эмулируйте последовательное соединение через GPIO, а затем используйте существующие кабели для перехода от последовательного к USB: это решение не будет служить вашим целям, так как вы (скорее, ваш DUMB-хост) хотели бы эмуляцию "Mass Storage Device" (тип устройства 0x08), а не «Коммуникация и управление CDC» (тип устройства 0x02) эмуляция устройства.
используя модель А, используйте программное обеспечение, чтобы убедить пи действовать как клиент: непонятно, что вам предложили
с помощью USB-кабеля «хост-хост» (не уверен, что я видел такой, который поддерживает linux…): в этом случае оба устройства увидят устройство Mass Storage, подключенное к их хост-контроллеру. При использовании этого метода ваш Raspberry pi будет отображаться как устройство хранения данных, экспортирующее хранилище на основе SD-карты. С этим решением вы можете решить, какой тип хранилища вы хотите экспортировать на хост DUMB. Ваш хост DUMB не может экспортировать себя как устройство хранения данных. На данный момент у вас будут другие варианты USB, кроме Raspberry Pi.
источник
Теперь есть вариант с нулевым пи, который может делать то, что я хотел, и Adafruit сделал для него учебник:
https://learn.adafruit.com/turning-your-raspberry-pi-zero-into-a-usb-gadget/overview
Официальное название для этого, кажется, "система USB-гаджет", и просто требует OTG-кабель.
Я не смог проверить это, так как нулей Пи практически нет на складе, но я думаю, что в настоящее время это лучший маршрут.
источник