Пи как USB-клиент

16

Я ищу способ заставить Pi выступать в роли USB-клиента и маскироваться под флешку.

Я видел много предложений, однако большинство из них уже старые (от 1 года) и расплывчатые / неполные - я хотел бы попросить обновить информацию о том, что сработало, что не сработало и т. Д.

Существует также множество предложений по использованию Pi в качестве устройства типа NAS. Это не будет работать для моих целей, так как у меня есть «тупой» хост, который может принимать только флешки (и я хочу использовать Pi, чтобы сделать его «умнее»)

Резюме предложений, которые я уже видел:

  1. эмулировать USB-клиент через контакты GPIO
  2. эмулируйте последовательное соединение через GPIO, затем используйте существующие кабели для перехода от последовательного к USB
  3. используя модель А, используйте программное обеспечение, чтобы убедить пи действовать как клиент
  4. с помощью USB-кабеля типа «хост-хост» (не уверен, что видел какой-либо, поддерживающий Linux ..)

Может ли кто-нибудь объяснить более подробно некоторые из предложенных решений?

PS - мне не нужно и не ожидать высокой производительности от этой конфигурации, скорости USB 1.1 было бы достаточно.

редактировать: я также был бы заинтересован в любых альтернативах, которые могли бы обеспечить эту функциональность, однако я еще не видел "умных" USB-флешек или вариантов Android-на-флешке, которые могли бы.

user2813274
источник
1
Определенно есть кабели, которые поддерживает Linux; это часть цели с usbnetводителем. У них есть страница с упоминанием некоторых; это выглядит устаревшим, поэтому может быть больше сейчас. Прежде чем купить что-нибудь, проверьте вокруг.
Златовласка
Некоторые замечания, характерные для модели А, об этом здесь
златовласка
Вы также можете найти такие проекты, как usbip: stackoverflow.com/a/19689740/544721 или linux-usb.org/gadget полезными при сборке решения.
Гжегож Вежовецкий

Ответы:

6

Вам бы повезло, если бы 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.

Четан Бхаргава
источник
Какие другие устройства вы бы порекомендовали? (Я надеюсь на что-то с Wi-Fi и возможностью запуска dropbox или bittorent синхронизации или что-то подобное)
user2813274
Ваши потребности в обслуживании хоста DUMB довольно неясны. Требуется больше ясности.
Четан Бхаргава
2
Хорошо, сегодня у меня в машине есть флешка, которая воспроизводит mp3-файлы - когда я хочу изменить музыку на ней, я должен физически перемещать флешку - я хотел бы просто синхронизировать устройство с чем-то на своем рабочем столе, и представить USB-интерфейс для автомобиля - также порт USB на модели A Pi представляет собой чип OTG (и на модели B, но порт Ethernet отключает эту функцию) - источник
user2813274
Давайте перейдем к чату (пекарня), чтобы не загромождать пост комментариями :-)
Четан Бхаргава
2

Теперь есть вариант с нулевым пи, который может делать то, что я хотел, и Adafruit сделал для него учебник:

https://learn.adafruit.com/turning-your-raspberry-pi-zero-into-a-usb-gadget/overview

Официальное название для этого, кажется, "система USB-гаджет", и просто требует OTG-кабель.

Я не смог проверить это, так как нулей Пи практически нет на складе, но я думаю, что в настоящее время это лучший маршрут.

user2813274
источник