ทำให้คอมพิวเตอร์ทำหน้าที่เสมือนอุปกรณ์ USB สำหรับอุปกรณ์อื่น ๆ


18

แอปพลิเคชั่นบางตัวจำลอง USB เสมือนหรือไดรฟ์ซีดีรอมเสมือนว่ามีการเชื่อมต่อไดรฟ์ USB เข้ากับคอมพิวเตอร์

มีการกำหนดค่าหรือแอปพลิเคชันใด ๆ ที่ให้ไดรฟ์ USB เสมือนไม่ใช่สำหรับระบบปฏิบัติการ แต่สำหรับอุปกรณ์อื่น ๆ ที่รับไดรฟ์ USB ผ่านพอร์ต USB

ดังนั้นฉันจะมีฮาร์ดดิสก์เสมือน (เช่น*.vdiไฟล์) ในคอมพิวเตอร์ซึ่งเชื่อมต่อผ่านช่องเสียบ USB เป็นไดรฟ์ USB ไปยังอุปกรณ์อื่น ๆ (เช่นโทรศัพท์มือถือหรือแล็ปท็อป)

คำตอบ:


12

คุณจะต้องเพิ่มอุปกรณ์ USB / อุปกรณ์ต่อพ่วงลงในคอมพิวเตอร์ซึ่งตรงข้ามกับคอนโทรลเลอร์โฮสต์ USB ที่มีมาให้

บางสิ่งเช่นนี้: https://www.maximintegrated.com/en/products/interface/controllers-expanders/MAX3420E.html

น่าเสียดายที่คุณต้องหาวิธีเชื่อมสายเข้ากับเมนบอร์ดของคุณ ในทางเทคนิคก็สามารถทำได้ ในทางปฏิบัติคุณจะต้องออกแบบเมนบอร์ดใหม่เพื่อรวมเมนบอร์ด คุณอาจโชคดีพอที่จะพบบัส SPI หรือ I2C ที่บางแห่งบนแผงวงจรหลักของคุณเพื่อให้คุณสามารถเพิ่มได้ แต่โดยทั่วไปแล้วพวกเขาจะเชื่อมต่อโดยตรงกับสิ่งที่พวกเขากำลังใช้อยู่เว้นแต่ว่าคุณกำลังใช้บอร์ด dev หรือเดี่ยว บอร์ดคอมพิวเตอร์ที่มี GPIO ที่เปิดเผยและพอร์ตอื่น ๆ เช่น Raspberry Pi

ตัวเลือกอื่นจะเป็นคอนโทรลเลอร์ USB On-the-Go มาเธอร์บอร์ดที่ออกแบบมาสำหรับอุปกรณ์พกพาและอุปกรณ์พกพามักจะมีตัวควบคุม USB OTG (On-the-go) ซึ่งสามารถทำงานได้ทั้งโฮสต์หรืออุปกรณ์ควบคุม ตัวอย่างเช่น Raspberry Pi ดังกล่าวมีตัวควบคุม On-the-Go แต่ในทุกรุ่นยกเว้น Pi Zero ที่ได้รับการ rewired ไปยังพอร์ตโฮสต์หรือฮับ USB บนบอร์ดที่ปฏิเสธการใช้ฟังก์ชันอุปกรณ์ USB BeagleBone Black มีพอร์ต OTG

นั่นไม่ใช่ทั้งหมด - เมื่อคุณมีฮาร์ดแวร์แล้วคุณต้องมีซอฟต์แวร์ด้วย Linux มีไดรเวอร์ USB Gadget ของเคอร์เนลที่มีประโยชน์ ("อุปกรณ์ USB" เป็นอีกคำหนึ่งสำหรับอุปกรณ์ต่อพ่วง USB / อุปกรณ์) เช่นg_serialและ g_ethernet ที่ให้คุณเสียบอุปกรณ์ของคุณเข้ากับคอมพิวเตอร์เครื่องอื่นและมองเห็นเป็นอุปกรณ์อนุกรมหรืออีเธอร์เน็ต (มีคนอื่น ๆ ที่เปิดเผยอุปกรณ์เป็นที่เก็บข้อมูลขนาดใหญ่ซึ่งอนุญาตให้คุณใช้ไฟล์เป็นอุปกรณ์บล็อกและทำให้คอมพิวเตอร์เป็นอุปกรณ์เก็บข้อมูลขนาดใหญ่) BeagleBone Black มีแนวโน้มที่จะเปิดใช้งานสิ่งนี้ตามค่าเริ่มต้นดังนั้นคุณสามารถเสียบเข้ากับพีซีของคุณผ่าน USB และดูว่าเป็นอุปกรณ์เครือข่าย - และฉันเชื่อว่ามันยังปรากฏเป็นอุปกรณ์จัดเก็บข้อมูลขนาดใหญ่โดยใช้ไดรเวอร์คอมโพสิต เพื่อให้ปรากฏเป็นอุปกรณ์ USB หลายประเภทผ่านการเชื่อมต่อเดียว Pi Zero สามารถใช้สิ่งเหล่านี้ได้ แต่ไม่ได้เป็นค่าเริ่มต้น สำหรับ Windows หรือ OS อื่น ๆ คุณอาจต้องเขียนไดรเวอร์อุปกรณ์นั้นด้วยตัวเอง

ในทางทฤษฎีคุณสามารถทำได้ คุณสามารถทำลายพีซีเดสก์ท็อปของคุณลองค้นหาบัสที่ไม่ได้ใช้งานร่วมกันได้บนเมนบอร์ดบางแห่ง (ส่วนใหญ่มีพินที่ไม่ได้ใช้งานบนคอนโทรลเลอร์ IC) หรือวิธีขยาย I2C หรือ SPI บัสภายในหรือสิ่งที่คุณสามารถฉีกออก แทนที่และประสานชิป USB OTG หรืออุปกรณ์ควบคุมชิปลงบนมัน จากนั้นคุณสามารถติดตั้ง Linux และใช้ไดรเวอร์ Gadget หรือเขียนของคุณเองสำหรับระบบปฏิบัติการอื่น ในทางปฏิบัติยกเว้นว่าคุณเป็นวิศวกรอิเล็กทรอนิกส์อันดับหนึ่งคุณจะไม่สามารถทำได้ อย่างน้อยก็จนกว่าจะมีใครออกมาพร้อมกับอะแดปเตอร์ที่เข้าใจยากที่มีอุปกรณ์หรือพอร์ต OTG บนนั้นที่เสียบเข้ากับพอร์ต USB (ในทางทฤษฎีแล้วสามารถทำได้กับไมโครคอนโทรลเลอร์เช่น Arduino ที่ต่อสายกับคอนโทรลเลอร์อุปกรณ์ USB คู่ไอซี) และเขียนไดรเวอร์เพื่อเรียกใช้


2
คำอธิบายที่ดีคุณช่วยปรับปรุงคำตอบได้ไหมถ้าคุณ (ด้วยความรู้ของคุณ) เห็นสิ่งใหม่เกี่ยวกับประโยคของคุณ "จนกว่าจะมีใครบางคนออกมาพร้อมกับอะแดปเตอร์พิเศษ ... " มีแล็ปท็อปที่มี usb-c ในปี 2018 พวกเขาสามารถแก้ปัญหาได้หรือไม่?
Asain Kujovic

8

USB ไม่สมมาตร: ด้านหนึ่งเป็นโฮสต์ส่วนอีกด้านเป็นอุปกรณ์ต่อพ่วง คุณไม่สามารถทำให้อุปกรณ์ต่อพ่วงทำหน้าที่เป็นโฮสต์หรือในทางกลับกัน เป็นไปได้ที่พอร์ต USB จะสามารถทำหน้าที่เป็นทั้งสองด้านได้ สิ่งนี้เรียกว่าUSB on-the-goและมีอยู่ในโทรศัพท์มือถือและแท็บเล็ตบางรุ่น พอร์ตเป็นพอร์ตประเภทอุปกรณ์จริงไม่ใช่พอร์ตชนิดโฮสต์ ฉันไม่เคยเห็นพีซีที่มีพอร์ตอุปกรณ์ สิ่งนี้ต้องการอุปกรณ์อิเล็กทรอนิกส์บนตัวควบคุม แต่ก็ไม่เพียงพอที่จะสร้างสายเคเบิลที่เหมาะกับทั้งสองด้าน

ไม่เลยคุณจะไม่สามารถทำให้พีซีเป็นอุปกรณ์ USB ได้

หากคุณต้องการใช้คอมพิวเตอร์เป็นอุปกรณ์จัดเก็บข้อมูล USB คุณสามารถใช้โทรศัพท์มือถือหรือแท็บเล็ตด้วยการเชื่อมต่อ USB แทนการใช้พีซี


คุณช่วยอธิบายเพิ่มเติมอีกเล็กน้อยได้อย่างไรการใช้โทรศัพท์มือถือสามารถช่วยฉันเปลี่ยนพีซีของฉันให้กลายเป็นอุปกรณ์ / โฮสต์ USB ที่ฉันสามารถเชื่อมต่อกับ compter โทรทัศน์หรืออุปกรณ์อื่นได้หรือไม่ ฉันคิดว่าฉันพลาดจุดนี้ แต่ฉันคิดว่าฉันมีความรู้พอสมควรเกี่ยวกับ USB OTG
trejder

@trejder อย่างที่ฉันเขียนฉันไม่เคยเห็นพีซีที่มีพอร์ตอุปกรณ์ (“ PC” ยกเว้นแท็บเล็ต x86)
Gilles 'หยุดความชั่วร้าย'

ใช่ แต่ฉันกำลังอ้างอิงถึงประโยคสุดท้ายของคุณ: " หากคุณต้องการให้คอมพิวเตอร์เป็นอุปกรณ์เก็บข้อมูล USB คุณสามารถใช้โทรศัพท์มือถือหรือแท็บเล็ตกับการเชื่อมต่อ USB " บางทีฉันอาจขาดอะไรบางอย่าง แต่ฉันเข้าใจว่าเป็น "คุณสามารถใช้โทรศัพท์มือถือหรือแท็บเล็ตเพื่อเปลี่ยนคอมพิวเตอร์ให้เป็นอุปกรณ์เก็บข้อมูล USB" ถ้าเป็นเช่นนั้นคำถามคือ: ได้อย่างไร
trejder

1
@trejder อ่า“ คอมพิวเตอร์” ในประโยคนั้นไม่ใช่“ PC” มันคือ“ คอมพิวเตอร์” โทรศัพท์ / แท็บเล็ตเป็นคอมพิวเตอร์ประเภทอื่นจากพีซี นั่นคือสิ่งที่คุณหนักใจ?
Gilles 'หยุดความชั่วร้าย'

1
@trejder ไม่ปกติแล้วสิ่งที่ดีที่สุดของคุณคือการสร้างการเชื่อมต่อเครือข่ายไม่ทางใดก็ทางหนึ่ง คุณสามารถใช้ Firewire เป็นการเชื่อมต่อเครือข่ายระหว่างพีซีสองเครื่องกับพอร์ต Firewire แต่พีซีจำนวนมากไม่มีเครื่องหนึ่ง พีซีส่วนใหญ่มีพอร์ตอีเธอร์เน็ตคุณสามารถเชื่อมต่อพีซีสองเครื่องด้วยสายเคเบิลอีเธอร์เน็ต (พีซีที่เก่าแก่มากต้องใช้สายเคเบิลแบบไขว้ แต่คนทันสมัยสามารถใช้สายเคเบิลธรรมดา) ในการทำให้พีซีทำหน้าที่เป็นอุปกรณ์เก็บข้อมูลสำหรับอุปกรณ์พกพาโดยทั่วไปคุณจะต้องนำพีซีเข้าสู่ wifi อย่างใด
Gilles 'หยุดความชั่วร้าย'

2

คุณสามารถลองใช้สายเคเบิลเชื่อมต่อ USB-USB แบบพิเศษซึ่งบางครั้งเรียกว่า "สายเคเบิลเครือข่าย USB" เหมือนที่กล่าวไว้ในบทความเหล่านี้:

ช่วยให้คุณถ่ายโอนไฟล์ระหว่างพีซีสองเครื่อง ฉันใช้สายเคเบิลประเภทนี้มานานกว่าสิบปีแล้ว (ในช่วงเวลาของ Windows XP) และในเวลานั้นสายเคเบิลดังกล่าวทั้งหมดที่มีให้ในตลาดต้องใช้ไดรเวอร์และซอฟต์แวร์พิเศษ พวกเขาอนุญาตให้คุณถ่ายโอนไฟล์ผ่านผู้บัญชาการไฟล์พิเศษที่จัดส่งพร้อมกับไดรเวอร์เคเบิลบนดิสก์การติดตั้งและดังนั้นจึงไม่อนุญาตให้พีซีเครื่องหนึ่งทำหน้าที่อื่นไปยังอุปกรณ์ USB ภายนอกบริสุทธิ์

ฉันไม่แน่ใจว่าหากมีสิ่งใดเปลี่ยนแปลงไปตั้งแต่นั้นมาและหากโซลูชันใหม่อนุญาตให้คุณถ่ายโอนไฟล์โดยใช้ซอฟต์แวร์พิเศษและ - หากคุณสามารถบังคับให้พีซีหนึ่งเครื่องทำหน้าที่เป็นอุปกรณ์ภายนอกไปยังพีซีเครื่องอื่น


2

ตามที่อธิบายไว้ในคำตอบของ Matt Thomsonเป็นไปไม่ได้ที่จะทำให้พอร์ต USB จริงของคอมพิวเตอร์พีซีทำหน้าที่เป็นอุปกรณ์ USB ทาสเนื่องจากคอนโทรลเลอร์ USB ทาสหายไป

นั่นหมายความว่าหากเรามีบอร์ดอะแดปเตอร์ที่สามารถให้ USB โหมดทาส (เช่น Raspberry Pi Zero) เราต้องเชื่อมต่อกับโฮสต์คอมพิวเตอร์ของคุณโดยใช้ช่องสัญญาณอื่นเช่นสายอีเธอร์เน็ต ฉันมีข้อเสนอที่แตกต่างกันสองข้อว่าคุณสามารถใช้โปรโตคอลใดในการเชื่อมต่ออีเธอร์เน็ต:

(1) เปิดเผยพอร์ต USB ผ่านเครือข่าย IP

ใช้ซอฟต์แวร์เพื่อแสดงพอร์ตโหมดทาส USB ของ Raspberry Pi Zero เป็นอุปกรณ์ USB เสมือนกับพีซีของคุณ โครงการUSB / IPให้สิ่งนี้โดยใช้ไดรเวอร์ที่สามารถขนส่ง USB ผ่านเครือข่าย IP นี่คือตัวอย่างของการใช้ USB / IP เพื่อให้อุปกรณ์ USB จำลองกับคอมพิวเตอร์ - ซึ่งจะเป็นพีซีของคุณที่นี่

สิ่งที่ฉันไม่ทราบในโซลูชันที่เสนอนี้คือถ้าซอฟต์แวร์ USB / IP สามารถเปิดเผยพอร์ตทาส USB ผ่านเครือข่าย IP หรือพอร์ตโฮสต์ USB ตามปกติเท่านั้น

แต่แม้ว่าจะยังใช้งานได้อยู่คุณยังต้องตั้งค่าหรือปรับไดรเวอร์อุปกรณ์ในพีซีของคุณในแบบที่พวกเขา (1) ยอมรับการเชื่อมต่อ USB / IP ที่เข้ามาเป็นการเชื่อมต่อ USB (2) ให้โหมดทาส USB แทน โหมดโฮสต์ USB (3) จำลองอุปกรณ์เก็บข้อมูลขนาดใหญ่ USB โดยให้บริการข้อมูลจากตำแหน่งที่กำหนด ( .vdiไฟล์ของคุณ)

โดยรวมแล้วนั่นเป็นวิธีที่ซับซ้อนในการทำ

(2) เปิดเผยไฟล์ผ่านเครือข่าย IP

นี่เป็นวิธีที่ง่ายกว่ามากสำหรับวิธีใช้การเชื่อมต่ออีเทอร์เน็ตกับ Raspberry Pi Zero: บน Raspberry Pi Zero ติดตั้งข้อมูลที่เก็บไว้ในพีซีของคุณผ่านระบบไฟล์เครือข่าย ไฟล์เหล่านี้จะปรากฏอย่างมีเหตุผลเป็นส่วนหนึ่งของระบบไฟล์ของ Pi Zero และคุณสามารถให้บริการกับไดรเวอร์อุปกรณ์ USB ของ Linux เพื่อทำให้ Raspberry Pi ดูเหมือนอุปกรณ์เก็บข้อมูลขนาดใหญ่ USB ไปยังอุปกรณ์ที่เชื่อมต่อ

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