Pi sebagai klien USB

16

Saya mencari cara agar Pi bertindak sebagai klien USB dan menyamar sebagai flash drive.

Saya telah melihat banyak saran, namun sebagian besar sudah tua (1+ tahun) sekarang dan tidak jelas / tidak lengkap - saya ingin meminta penyegaran tentang apa yang berhasil, apa yang tidak, dll.

Ada juga banyak saran untuk menggunakan Pi sebagai perangkat tipe NAS. Ini tidak akan berfungsi untuk tujuan saya, karena saya memiliki host "bodoh" yang hanya dapat menerima flash drive (dan saya ingin menggunakan Pi untuk membuatnya "lebih pintar")

ringkasan saran yang telah saya lihat:

  1. meniru klien USB melalui pin GPIO
  2. meniru koneksi serial melalui GPIO, kemudian gunakan kabel yang ada untuk beralih dari serial ke USB
  3. menggunakan model A, gunakan perangkat lunak untuk meyakinkan pi untuk bertindak seperti klien
  4. menggunakan kabel USB host-to-host (tidak yakin saya melihat ada yang mendukung linux ..)

adakah yang bisa menjelaskan lebih dalam beberapa solusi yang diusulkan itu?

PS - Saya tidak perlu atau mengharapkan kinerja tinggi dari konfigurasi ini, kecepatan USB 1.1 akan cukup.

sunting: Saya juga akan tertarik dengan alternatif apa pun yang dapat menyediakan fungsionalitas ini, namun saya belum melihat adanya stik usb "pintar" atau varian android-on-a-stick yang bisa.

pengguna2813274
sumber
1
Pasti ada kabel yang didukung linux; ini adalah bagian dari tujuan dengan usbnetpengemudi. Mereka memiliki halaman yang menyebutkan beberapa; itu terlihat ketinggalan zaman sehingga mungkin ada lebih banyak sekarang. Sebelum Anda membeli sesuatu, periksa sekitar.
goldilocks
Beberapa komentar khusus untuk model A tentang ini di sini
goldilocks
Anda mungkin juga menemukan proyek-proyek seperti usbip: stackoverflow.com/a/19689740/544721 atau linux-usb.org/gadget yang berguna dalam merakit solusi.
Grzegorz Wierzowiecki

Jawaban:

6

Anda akan beruntung jika port USB pada PI adalah OTG dan bukan USB Host.

Mungkin Anda harus mempertimbangkan beberapa perangkat lain karena tidak ada solusi yang Anda sarankan mungkin praktis:

meniru klien USB melalui pin GPIO: Secara teori dimungkinkan untuk meniru USB menggunakan bit-banging the pin. Ini dapat menyebabkan overhead perangkat lunak yang cukup besar dalam hal pengembangan perangkat lunak. Solusinya akan relatif sulit untuk diterapkan. Secara teori adalah mungkin tetapi Anda perlu melakukan analisis biaya / manfaat.

mengemulasi koneksi serial melalui GPIO, kemudian menggunakan kabel yang ada untuk beralih dari serial ke USB: Solusi ini tidak akan melayani tujuan Anda karena Anda (lebih tepatnya DUMB Host Anda) ingin emulasi "Mass Storage Device" (tipe perangkat 0x08) dan bukan "Komunikasi dan Kontrol CDC" (tipe perangkat 0x02) emulasi.

menggunakan model A, gunakan perangkat lunak untuk meyakinkan pi untuk bertindak seperti klien: Tidak jelas apa yang telah disarankan

menggunakan kabel USB host-to-host (tidak yakin saya melihat ada yang mendukung linux ..): Dalam hal ini kedua perangkat akan melihat perangkat Mass Storage yang terhubung ke pengontrol host mereka. Dengan menggunakan metode ini, pi Raspberry Anda akan ditampilkan sebagai perangkat penyimpanan massal yang mengekspor penyimpanan berbasis kartu SD Anda. Dengan solusi ini Anda mungkin ingin mempertimbangkan jenis penyimpanan apa yang ingin Anda ekspor ke host DUMB. Tuan rumah DUMB Anda mungkin tidak mengekspor sendiri sebagai perangkat Mass Storage. Pada titik ini Anda akan memiliki opsi USB lain selain Raspberry Pi.

Chetan Bhargava
sumber
Apa jenis perangkat lain yang akan Anda rekomendasikan? (Saya berharap sesuatu dengan wifi dan kemampuan untuk menjalankan dropbox atau sinkronisasi
bittorent
Kebutuhan Anda tentang melayani host DUMB cukup tidak jelas. Diperlukan lebih banyak kejelasan.
Chetan Bhargava
2
OK, hari ini saya memiliki flash drive di mobil saya yang memutar mp3 - setiap kali saya ingin mengubah musik di dalamnya, saya harus secara fisik memindahkan flash drive - Saya hanya ingin memiliki sinkronisasi perangkat dengan sesuatu di desktop saya, dan menghadirkan antarmuka USB untuk mobil - juga, port USB pada model A Pi adalah chip OTG (dan pada model B, tetapi port ethernet menonaktifkan fungsionalitas itu) - source
user2813274
Mari kita beralih ke obrolan (Toko Roti) agar kita tidak mengacaukan kiriman dengan komentar :-)
Chetan Bhargava
2

Sekarang ada varian Pi nol, yang dapat melakukan apa yang saya inginkan, dan Adafruit membuat tutorial untuk itu:

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

Nama resmi untuk ini tampaknya adalah "sistem gadget usb", dan hanya membutuhkan kabel OTG.

Saya belum dapat menguji ini, karena Pi nol kehabisan stok cukup banyak di mana-mana, tetapi saya pikir ini adalah rute terbaik saat ini.

pengguna2813274
sumber