Làm cho máy tính hoạt động như một thiết bị USB ảo cho các thiết bị khác


18

Một số ứng dụng mô phỏng ổ đĩa ảo USB hoặc CD Rom như thể ổ đĩa USB được gắn vào máy tính.

Có bất kỳ cấu hình hoặc ứng dụng nào cung cấp ổ USB ảo, không phải cho chính hệ điều hành mà cho các thiết bị khác chấp nhận ổ USB, thông qua cổng USB.

Vì vậy, tôi sẽ có một đĩa cứng ảo (ví dụ: *.vditệp) trong máy tính, được kết nối, thông qua ổ cắm USB, dưới dạng ổ USB cho một số thiết bị khác (ví dụ: điện thoại di động hoặc máy tính xách tay).

Câu trả lời:


12

Bạn sẽ cần thêm Bộ điều khiển / Thiết bị ngoại vi USB vào máy tính, trái ngược với Bộ điều khiển máy chủ lưu trữ USB mà chúng có xu hướng đi kèm.

Một cái gì đó như thế này: https://www.maximintegrated.com/en/products/interface/controllers-Exanders/MAX3420E.html

Thật không may, bạn phải tìm cách nối nó vào bo mạch chủ của mình. Về mặt kỹ thuật, nó có thể được thực hiện. Thực tế, bạn phải thiết kế lại bo mạch chủ để bao gồm nó. Bạn có thể may mắn tìm thấy một chiếc xe buýt SPI hoặc I2C được phơi bày ở đâu đó trên bo mạch chủ của bạn để cho phép bạn thêm nó, nhưng chúng thường được nối trực tiếp vào bất cứ thứ gì chúng đang được sử dụng trừ khi bạn sử dụng bảng dev hoặc đơn bo mạch máy tính có GPIO tiếp xúc và các cổng khác như Raspberry Pi.

Tùy chọn khác sẽ là Bộ điều khiển USB On-the-Go. Các bo mạch chủ được thiết kế cho các thiết bị nhúng và di động có xu hướng có một bộ chuyển đổi USB OTG (Đang di chuyển), có thể hoạt động như một bộ điều khiển Máy chủ hoặc Thiết bị. Ví dụ, Raspberry Pi đã nói ở trên có Bộ điều khiển On-the-Go, nhưng trên tất cả các model ngoại trừ Pi Zero được nối lại với cổng máy chủ hoặc bộ chia USB trên bo mạch từ chối sử dụng chức năng của thiết bị USB. BeagleBone Black có cổng OTG.

Tuy nhiên, đó không phải là tất cả - một khi bạn đã có phần cứng, bạn cũng cần phần mềm. Linux có một số trình điều khiển Tiện ích USB nhân hữu ích ("Tiện ích USB" là một thuật ngữ khác của thiết bị ngoại vi / thiết bị USB) như g_serial và g_ethernet cho phép bạn cắm thiết bị của mình vào máy tính khác và hiển thị dưới dạng thiết bị nối tiếp hoặc ethernet qua USB (có những cách khác để hiển thị một thiết bị dưới dạng lưu trữ dung lượng lớn, cho phép bạn sử dụng tệp dưới dạng thiết bị khối và hiển thị máy tính dưới dạng tiện ích lưu trữ dung lượng lớn). BeagleBone Black có xu hướng đi kèm với tính năng này được bật theo mặc định, vì vậy bạn chỉ cần cắm nó vào PC qua USB và xem nó như một thiết bị được kết nối mạng - và tôi tin rằng nó cũng xuất hiện dưới dạng thiết bị lưu trữ lớn bằng cách sử dụng trình điều khiển tổng hợp (cho phép nó xuất hiện dưới dạng nhiều loại thiết bị USB qua một kết nối. Pi Zero có thể sử dụng những thứ này , nhưng không mặc định. Đối với Windows hoặc các hệ điều hành khác, có lẽ bạn phải tự viết trình điều khiển thiết bị đó.

Vì vậy, về mặt lý thuyết, bạn có thể làm điều đó. Bạn có thể phá hỏng máy tính để bàn của mình, thử và tìm một bus tương thích chưa sử dụng trên bo mạch chủ ở đâu đó (rất có thể là một số chân không được sử dụng trên IC điều khiển) hoặc cách mở rộng bus I2C hoặc SPI nội bộ hoặc thứ gì đó bạn có thể xé thay thế và hàn chip USB OTG hoặc chip điều khiển thiết bị lên nó. Sau đó, bạn có thể cài đặt Linux và sử dụng trình điều khiển tiện ích hoặc viết riêng cho hệ điều hành khác. Thực tế, trừ khi bạn là một kỹ sư điện tử hàng đầu, bạn sẽ không thể làm được. Ít nhất, không phải cho đến khi ai đó đi ra với bộ điều hợp khó nắm bắt đó với một thiết bị hoặc cổng OTG cắm vào cổng USB (về mặt lý thuyết, có thể được thực hiện với một vi điều khiển như Arduino được nối với một cặp IC điều khiển thiết bị USB), và viết các trình điều khiển để chạy nó.


2
giải thích tuyệt vời, bạn có thể vui lòng cập nhật câu trả lời nếu bạn (với kiến ​​thức của bạn) thấy điều gì đó mới liên quan đến câu của bạn "cho đến khi ai đó đi ra với bộ chuyển đổi độc quyền ...". Có những máy tính xách tay có usb-c vào năm 2018, chúng có thể là một giải pháp không?
Asain Kujovic

8

USB không đối xứng: một bên là máy chủ lưu trữ, bên còn lại là thiết bị ngoại vi. Bạn không thể làm cho một thiết bị ngoại vi hoạt động như một máy chủ hoặc ngược lại. Có thể một cổng USB có thể hoạt động như một trong hai bên; đây được gọi là USB khi đang di chuyển và có mặt trên một số điện thoại di động và máy tính bảng. Các cổng là cổng loại thiết bị vật lý, không phải cổng loại máy chủ. Tôi chưa bao giờ thấy một PC có cổng thiết bị. Điều này đòi hỏi thiết bị điện tử trên bộ điều khiển, nó không đủ để tạo ra một cáp phù hợp ở cả hai đầu.

Vì vậy, không, bạn sẽ không thể biến PC thành thiết bị USB.

Nếu bạn muốn sử dụng máy tính làm thiết bị lưu trữ USB, bạn có thể sử dụng điện thoại di động hoặc máy tính bảng có kết nối USB thay vì sử dụng PC.


Bạn có thể nói rõ hơn một chút, làm thế nào để sử dụng điện thoại di động có thể giúp tôi biến PC của mình thành thiết bị / máy chủ lưu trữ USB, mà tôi có thể cắm vào một máy tính, TV hoặc thiết bị khác không? Tôi nghĩ rằng, tôi đang thiếu điểm này, mặc dù tôi nghĩ rằng tôi có kiến ​​thức công bằng về USB OTG.
trejder 10/03/2015

@trejder Như tôi đã viết, tôi chưa bao giờ thấy PC có cổng thiết bị (PC PC trừ loại máy tính bảng x86).
Gilles 'SO- đừng trở nên xấu xa'

Có, nhưng tôi đang giới thiệu câu cuối cùng của bạn: " Nếu bạn muốn biến máy tính thành thiết bị lưu trữ USB, bạn có thể sử dụng điện thoại di động hoặc máy tính bảng có kết nối USB ". Có thể tôi đang thiếu một cái gì đó, nhưng tôi hiểu nó là "Bạn có thể sử dụng điện thoại di động hoặc máy tính bảng để biến máy tính thành thiết bị lưu trữ USB". Nếu vậy, thì câu hỏi là: Làm thế nào?
trejder 10/03/2015

1
@trejder À, máy vi tính, trong câu đó không phải là PC PC, đó là máy tính. Điện thoại / máy tính bảng là một loại máy tính khác với PC. Có phải đó là điều gây phiền toái cho bạn?
Gilles 'SO- đừng trở nên xấu xa'

1
@trejder Không. Thông thường, cách tốt nhất của bạn là thiết lập kết nối mạng bằng cách này hay cách khác. Bạn có thể sử dụng Firewire làm kết nối mạng giữa bất kỳ hai PC nào có cổng Firewire, nhưng nhiều PC không có. Hầu hết các PC đều có cổng Ethernet, bạn có thể kết nối hai PC bằng cáp Ethernet (các PC rất cũ yêu cầu cáp chéo nhưng các PC hiện đại có thể sử dụng cáp thông thường). Để làm cho PC hoạt động như một thiết bị lưu trữ cho thiết bị di động, thông thường bạn cần phải đưa PC lên wifi bằng cách nào đó.
Gilles 'SO- đừng trở nên xấu xa'

2

Bạn có thể cân nhắc sử dụng một trong những "cáp cầu nối USB-USB" đặc biệt, đôi khi được gọi là "cáp mạng USB". Giống như một đề cập trong các bài viết này:

Chúng cho phép bạn chuyển các tập tin giữa hai PC. Tôi đã sử dụng các loại cáp này hơn mười năm trước (thời Windows XP) và trong thời gian đó, tất cả các loại cáp như vậy có sẵn trên thị trường đều cần một trình điều khiển và phần mềm đặc biệt. Chúng cho phép bạn chuyển các tệp chỉ thông qua bộ chỉ huy tệp đặc biệt, được gửi cùng với trình điều khiển cáp trên đĩa cài đặt và do đó không cho phép một PC hoạt động với nhau như một thiết bị bên ngoài USB thuần túy.

Tôi không chắc chắn, nếu có bất cứ điều gì thay đổi kể từ đó và nếu các giải pháp mới cho phép bạn chỉ chuyển các tệp bằng phần mềm đặc biệt và - nếu bạn có thể buộc một PC hoạt động như một thiết bị bên ngoài sang PC khác.


2

Như Matt Thomson đã giải thích trong câu trả lời , không thể thực hiện đúng cổng USB vật lý của máy tính PC hoạt động như một thiết bị nô lệ USB, vì bộ điều khiển nô lệ USB bị thiếu.

Điều đó có nghĩa là nếu chúng ta có một bảng điều khiển có thể cung cấp USB ở chế độ phụ (như Raspberry Pi Zero), chúng ta phải kết nối nó với PC chủ của bạn bằng một kênh khác, chẳng hạn như Ethernet có dây. Tôi có hai đề xuất khác nhau về giao thức mà bạn có thể chạy qua kết nối Ethernet đó:

(1) Đưa cổng USB qua mạng IP.

Sử dụng phần mềm để hiển thị cổng chế độ nô lệ USB của Raspberry Pi Zero dưới dạng thiết bị USB ảo cho PC của bạn. Các USB / IP dự án cung cấp này, bằng phương tiện của một người lái xe có thể vận chuyển USB qua mạng IP. Dưới đây là một ví dụ về việc sử dụng USB / IP để cung cấp thiết bị USB mô phỏng cho máy tính - đó sẽ là PC của bạn ở đây.

Điều tôi không biết trong giải pháp đề xuất này là nếu phần mềm USB / IP đã có thể hiển thị cổng nô lệ USB qua mạng IP hoặc chỉ một cổng máy chủ USB như bình thường.

Nhưng ngay cả khi điều đó hoạt động, bạn vẫn phải thiết lập hoặc điều chỉnh trình điều khiển thiết bị trên PC theo cách chúng (1) chấp nhận kết nối USB / IP đến dưới dạng kết nối USB, (2) cung cấp chế độ nô lệ USB thay vì Chế độ máy chủ lưu trữ USB, (3) mô phỏng thiết bị lưu trữ dung lượng lớn USB bằng cách cung cấp dữ liệu từ vị trí được chỉ định ( .vditệp của bạn ).

Nhìn chung, đó là một cách phức tạp để làm điều đó.

(2) Đưa tập tin qua mạng IP.

Đây là cách đơn giản hơn nhiều để sử dụng kết nối Ethernet với Raspberry Pi Zero: trên Raspberry Pi Zero, gắn dữ liệu được lưu trữ trên PC của bạn thông qua hệ thống tệp mạng. Các tệp này sau đó xuất hiện một cách hợp lý như một phần của hệ thống tệp của Pi Zero và bạn có thể phân phát chúng bằng trình điều khiển tiện ích USB Linux để làm cho Raspberry Pi trông giống như một thiết bị lưu trữ dung lượng lớn USB cho các thiết bị được kết nối.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.