Pi เป็นไคลเอนต์ USB


16

ฉันกำลังมองหาวิธีที่จะให้ Pi ทำหน้าที่เป็นไคลเอนต์ USB และสวมหน้ากากเป็นแฟลชไดรฟ์

ฉันเคยเห็นคำแนะนำมากมาย แต่ตอนนี้ส่วนใหญ่มีอายุแล้ว (1 ปีขึ้นไป) และคลุมเครือ / ไม่สมบูรณ์ - ฉันต้องการขอการรีเฟรชเกี่ยวกับสิ่งที่ได้ผลสิ่งที่ไม่ได้ ฯลฯ

นอกจากนี้ยังมีคำแนะนำมากมายให้ใช้ Pi เป็นอุปกรณ์ประเภท NAS แทน สิ่งนี้จะไม่ทำงานเพื่อจุดประสงค์ของฉันเนื่องจากฉันมีโฮสต์ "โง่" ที่สามารถยอมรับแฟลชไดรฟ์ได้ (และฉันต้องการใช้ Pi เพื่อทำให้ "ฉลาด")

สรุปข้อเสนอแนะที่ฉันได้เห็นแล้ว:

  1. จำลองไคลเอ็นต์ USB ผ่านหมุด GPIO
  2. จำลองการเชื่อมต่อแบบอนุกรมผ่าน GPIO จากนั้นใช้สายเคเบิลที่มีอยู่เพื่อเปลี่ยนจากอนุกรมเป็น USB
  3. ใช้โมเดล A ใช้ซอฟต์แวร์เพื่อโน้มน้าวให้ pi ทำตัวเหมือนลูกค้า
  4. ใช้สาย USB โฮสต์ไปยังโฮสต์ (ไม่แน่ใจว่าฉันเห็นใด ๆ ที่สนับสนุน linux .. )

ใครช่วยอธิบายวิธีแก้ปัญหาที่นำเสนอในเชิงลึกได้บ้าง

PS - ฉันไม่ต้องการหรือคาดหวังว่าจะมีประสิทธิภาพสูงจากการกำหนดค่านี้ความเร็วของ USB 1.1 จะเพียงพอ

แก้ไข: ฉันก็จะสนใจในตัวเลือกใด ๆ ที่สามารถให้ฟังก์ชั่นนี้ได้ แต่ฉันยังไม่เคยเห็นแท่ง usb "สมาร์ท" หรืออุปกรณ์ติดตั้งแบบ android-on-a-stick ใด ๆ ที่สามารถทำได้


1
มีสายเคเบิลที่แน่นอนว่า linux รองรับ; นี่เป็นส่วนหนึ่งของเป้าหมายพร้อมusbnetคนขับ พวกเขามีหน้าพูดถึงบางอย่าง; มันดูล้าสมัยดังนั้นอาจมีมากกว่านี้ ก่อนที่คุณจะซื้ออะไรตรวจสอบรอบ
goldilocks

ข้อสังเกตบางประการสำหรับรุ่น A เกี่ยวกับเรื่องนี้ที่นี่
goldilocks

คุณอาจพบโครงการเช่น usbip: stackoverflow.com/a/19689740/544721หรือlinux-usb.org/gadgetมีประโยชน์ในการรวบรวมโซลูชัน
Grzegorz Wierzowiecki

คำตอบ:


6

คุณจะโชคดีถ้าพอร์ต USB ใน PI เป็นOTGไม่ใช่โฮสต์ USB

บางทีคุณควรพิจารณาอุปกรณ์อื่น ๆ เนื่องจากวิธีการแก้ปัญหาที่คุณแนะนำไม่สามารถนำไปใช้ได้จริง:

เลียนแบบไคลเอนต์ USB ผ่านหมุด GPIO: ในทางทฤษฎีแล้วมันเป็นไปได้ที่จะเลียนแบบ USB โดยใช้หมุดกระแทก สิ่งนี้อาจทำให้ซอฟต์แวร์มีขนาดใหญ่มากในแง่ของการพัฒนาซอฟต์แวร์ การแก้ปัญหาจะค่อนข้างยากที่จะใช้ ในทางทฤษฎีเป็นไปได้ แต่คุณต้องทำการวิเคราะห์ต้นทุน / ผลประโยชน์

จำลองการเชื่อมต่อแบบอนุกรมผ่าน GPIO จากนั้นใช้สายเคเบิลที่มีอยู่เพื่อต่ออนุกรมจาก USB: โซลูชันนี้จะไม่ตอบสนองวัตถุประสงค์ของคุณในฐานะคุณ (แทนที่จะเป็นโฮสต์ DUMB ของคุณ) จะต้องการจำลอง "อุปกรณ์เก็บข้อมูลขนาดใหญ่" (อุปกรณ์ประเภท 0x08) "การจำลองการสื่อสารและการควบคุม CDC" (ประเภทอุปกรณ์ 0x02)

ใช้โมเดล A ใช้ซอฟต์แวร์เพื่อโน้มน้าวให้ pi ทำตัวเหมือนลูกค้า: ไม่ชัดเจนในสิ่งที่คุณแนะนำ

ใช้สาย USB โฮสต์ไปยังโฮสต์ (ไม่แน่ใจว่าฉันเห็นใด ๆ ที่สนับสนุน linux .. ): ในกรณีนี้อุปกรณ์ทั้งสองจะเห็นอุปกรณ์ที่เก็บข้อมูลขนาดใหญ่เชื่อมต่อกับตัวควบคุมโฮสต์ของพวกเขา เมื่อใช้วิธีนี้ Raspberry pi ของคุณจะปรากฏเป็นอุปกรณ์จัดเก็บข้อมูลขนาดใหญ่ที่ส่งออกพื้นที่เก็บข้อมูลที่ใช้การ์ด SD ของคุณ ด้วยวิธีนี้คุณอาจต้องการพิจารณาประเภทของพื้นที่เก็บข้อมูลที่คุณต้องการส่งออกไปยังโฮสต์ DUMB โฮสต์ DUMB ของคุณอาจไม่ส่งออกตัวเองเป็นอุปกรณ์เก็บข้อมูลขนาดใหญ่ ณ จุดนี้คุณจะมีตัวเลือก USB อื่นนอกเหนือจาก Raspberry Pi


อุปกรณ์อื่น ๆ ที่คุณอยากแนะนำ (ฉันหวังว่าจะมีบางสิ่งบางอย่างที่มี wifi และความสามารถในการเรียกใช้ดรอปบ็อกซ์หรือการซิงค์
เล็กน้อย

ความต้องการของคุณเกี่ยวกับการให้บริการโฮสต์ DUMB นั้นค่อนข้างชัดเจน ต้องมีความชัดเจนมากขึ้น
Chetan Bhargava

2
ตกลงวันนี้ฉันมีแฟลชไดรฟ์ในรถของฉันที่เล่น mp3 - เมื่อใดก็ตามที่ฉันต้องการเปลี่ยนเพลงฉันต้องย้ายแฟลชไดรฟ์ - ฉันต้องการซิงค์อุปกรณ์กับสิ่งที่อยู่บนเดสก์ท็อปของฉันและ นำเสนออินเทอร์เฟซ USB สำหรับรถยนต์ - เช่นกัน, พอร์ต USB ในรุ่น A Pi เป็นชิป OTG (และในรุ่น B, แต่พอร์ตอีเธอร์เน็ตปิดการใช้งานการทำงานนั้น) - แหล่งที่มา
user2813274

ลองย้ายไปแชท (เบเกอรี่) เพื่อที่เราจะได้ไม่โพสต์ความคิดเห็นที่ยุ่งเหยิงด้วย :-)
Chetan Bhargava

2

ขณะนี้มีตัวแปรศูนย์ Pi ซึ่งสามารถทำสิ่งที่ฉันต้องการและ Adafruit ได้ทำการสอนสำหรับมัน:

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

ชื่ออย่างเป็นทางการของสิ่งนี้ดูเหมือนจะเป็น "ระบบอุปกรณ์ usb" และเพียงแค่ต้องใช้สายเคเบิล OTG

ฉันไม่สามารถทดสอบสิ่งนี้ได้เนื่องจาก Pi zero ไม่มีสต็อกหมดทุกที่ แต่ฉันคิดว่านี่เป็นเส้นทางที่ดีที่สุดในปัจจุบัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.