Зробіть комп'ютер виконувати функцію віртуального USB-пристрою для іншого обладнання


18

Деякі програми імітують віртуальний USB або CD Rom привід так, ніби USB-накопичувач підключений до комп'ютера.

Чи є конфігурація чи додаток, що забезпечує віртуальний USB-привід, не для самої операційної системи, а для іншого обладнання, яке приймає USB-накопичувач, через USB-порт.

Тож у мене буде віртуальний жорсткий диск (наприклад, *.vdiфайл) у комп’ютері, який підключений через USB-розетку, як USB-накопичувач до іншого обладнання (наприклад, мобільного телефону або ноутбука).

Відповіді:


12

Вам потрібно буде додати в комп'ютер USB-пристрій / периферійний контролер, на відміну від USB-хост-контролера, до якого вони зазвичай поставляються.

Щось подібне: https://www.maximintegrated.com/en/products/interface/controllers-expanders/MAX3420E.html

На жаль, вам доведеться знайти спосіб підключити його до своєї материнської плати. Технічно це можна зробити. Практично вам доведеться переробити материнську плату, щоб включити її. Можливо, вам пощастить знайти шину SPI або I2C, виставлену десь на вашій материнській платі, що дозволить вам додати її, але вони зазвичай підключаються безпосередньо до того, для чого вони використовуються, якщо ви не використовуєте плату розробників або одно- настільний комп'ютер із відкритими GPIO та іншими портами, такими як Raspberry Pi.

Іншим варіантом буде USB-контролер на ходу. Материнські плати, розроблені для вбудованих та портативних пристроїв, зазвичай мають USB OTG (в дорозі), який може працювати як контролер хоста або пристрою. Наприклад, вищезгаданий Raspberry Pi має контролер On-the-Go, але на всіх моделях, крім Pi Zero, який передається на хост-порт або вбудований USB-концентратор, заперечуючи використання функцій USB-пристроїв. У BeagleBone Black є порт OTG.

Але це ще не все - як тільки ви отримаєте обладнання, вам також знадобиться програмне забезпечення. У Linux є кілька корисних драйверів USB-гаджетів для ядра ("USB-гаджет" - це ще один термін для периферійних пристроїв / пристроїв), таких як g_serial та g_ethernet, які дозволяють підключити свій пристрій на інший комп'ютер і бути видимим як серійний або ethernet-через USB-пристрій (Є й інші можливості експонування пристрою як масового сховища, які дозволяють використовувати файл як блоковий пристрій і виставляти комп'ютер як пристосування для масового зберігання). BeagleBone Black, як правило, увімкнено цю функцію за замовчуванням, тому ви можете просто підключити її до свого ПК через USB і побачити його як мережевий пристрій, і я вважаю, що він також з'являється як пристрій масового зберігання, використовуючи складений драйвер (що дозволяє він відображатиметься у вигляді декількох типів USB-пристроїв протягом одного з'єднання. Pi Zero може використовувати їх , але не за замовчуванням. Для Windows чи інших ОС вам, ймовірно, доведеться писати цей драйвер пристрою самостійно.

Тож теоретично це можна зробити. Ви можете зірвати настільний ПК, спробувати десь знайти невикористану сумісну шину на материнській платі (швидше за все, деякі невикористані штифти на ІС контролера), або спосіб розширити внутрішню шину I2C або SPI, або щось, що ви можете відірвати і замініть і припайте на нього мікросхему USB OTG або контролер пристрою. Тоді ви можете встановити Linux і використовувати драйвер гаджетів або написати свій власний для іншої ОС. Практично, якщо ви не найвищий інженер з електроніки, ви не зможете це зробити. Принаймні, до тих пір, поки хтось не вийде з тим невловимим адаптером із пристроєм або портами OTG на ньому, який підключається до USB-порту (теоретично це можна зробити за допомогою мікроконтролера, такого Arduino, підключеного до пари контролерів USB-пристроїв), і записує драйвери для запуску.


2
чудове пояснення, чи можете ви, будь ласка, оновити відповідь, якщо ви (зі своїми знаннями) бачите щось нове щодо вашого вироку, "поки хтось не вийде з ексклюзивним адаптером ...". Є ноутбуки з usb-c в 2018 році, вони можуть бути рішенням.
Асайн Куйович

8

USB несиметричний: одна сторона - хост, інша сторона - периферійний пристрій. Ви не можете змусити периферійний пристрій виступати в якості хоста або навпаки. USB-порт може діяти як з будь-якої сторони; це називається USB на ходу і присутня на деяких мобільних телефонах та планшетах. Порти - це порти фізичного типу пристрою, а не порти хост-типу. Я ніколи не бачив ПК з портом пристрою. Для цього потрібна електроніка на контролері, недостатньо зробити кабель, який підходить з обох кінців.

Так що ні, ви не зможете перетворити ПК на USB-пристрій.

Якщо ви хочете використовувати комп’ютер як USB-накопичувач, замість ПК можна використовувати мобільний телефон або планшет із з'єднанням USB.


Чи можете ви детальніше розглянути, як використання мобільного телефону може допомогти мені перетворити комп'ютер на USB-накопичувач / хост, що я можу підключити до іншого комп’ютера, телевізора чи пристрою? Думаю, я пропускаю цю точку, хоча я думаю, що я добре знаю про USB OTG.
трейдер

@trejder Як я вже писав, я ніколи не бачив ПК з портом пристрою ("ПК", виключаючи планшети x86).
Жил "ТАК - перестань бути злим"

Так, але я посилаюсь на ваше останнє речення: " Якщо ви хочете перетворити комп'ютер на USB-накопичувач, ви можете використовувати мобільний телефон або планшет із з'єднанням USB ". Можливо, мені чогось не вистачає, але я розумію це як "Ви можете використовувати мобільний телефон або планшет, щоб перетворити комп'ютер на USB-накопичувач". Якщо так, то питання: як?
трейдер

1
@trejder Ага, "комп'ютер" у цьому реченні не є "ПК", це "комп'ютер". Телефон / планшет - це комп’ютер іншого типу від ПК. Це те, що вас турбує?
Жил "ТАК - перестань бути злим"

1
@trejder Ні. Як правило, найкраще встановити мережеве з'єднання так чи інакше. Ви можете використовувати Firewire як мережеве з'єднання між будь-якими двома ПК з портом Firewire, але багато ПК не мають жодного. Більшість ПК мають порт Ethernet, ви можете підключити два ПК за допомогою кабелю Ethernet (дуже старі ПК вимагають кросоверного кабелю, але сучасні можуть брати звичайний кабель). Щоб ПК був мобільним пристроєм для зберігання даних, зазвичай потрібно як-небудь перейти на Wi-Fi.
Жил "ТАК - перестань бути злим"

2

Можна скористатися одним із спеціальних "мостів USB-USB", які іноді називають "USB мережевими кабелями". Як і один згаданих у цих статтях:

Вони дозволяють переносити файли між двома ПК. Я використовував подібні кабелі більше десяти років тому (за часів Windows XP), і в цей час всі такі доступні на ринку кабелі вимагали спеціального драйвера та програмного забезпечення. Вони дозволяють вам передавати файли лише через спеціальний командний файл, який захищається разом із драйверами кабелів на інсталяційному диску і, отже, не дозволяє одному ПК діяти на інший як чистий зовнішній пристрій USB.

Я не впевнений, якщо щось змінилося відтоді і якщо нові рішення дозволяють переносити файли лише за допомогою спеціального програмного забезпечення та - якщо ви можете змусити один ПК діяти як зовнішній пристрій на інший ПК.


2

Як пояснив у відповіді Метт Томсон , неможливо змусити фізичний порт USB комп’ютера ПК діяти як підлеглий пристрій USB, оскільки відсутній контролер USB-ведомого.

Це означає, що якщо у нас є адаптерна плата, яка може надавати USB-режим у рабовласницькому режимі (наприклад, Raspberry Pi Zero), ми повинні підключити її до вашого хост-ПК за допомогою іншого каналу, наприклад, провідного Ethernet. У мене є дві різні пропозиції, за яким протоколом ви могли перейти через це з'єднання Ethernet:

(1) Розкрийте порт USB через мережу IP.

Використовуйте програмне забезпечення, щоб відкрити порт Slave-режиму Raspberry Pi Zero як віртуальний USB-пристрій на вашому ПК. Проект USB / IP забезпечує це за допомогою драйвера, який може транспортувати USB через IP-мережі. Ось приклад використання USB / IP для надання змодельованого USB-пристрою до комп'ютера - який би тут був ваш ПК.

Чого я не знаю в запропонованому рішенні, це те, якщо програмне забезпечення USB / IP вже здатне відкрити підлеглий порт USB через мережу IP або лише хост-порт USB як звичайний.

Але навіть якщо це працює, вам все одно доведеться налаштувати або адаптувати драйвери пристроїв на вашому ПК таким чином, щоб вони (1) приймали вхідний USB / IP-з'єднання як USB-з'єднання, (2) забезпечували режим slave USB, а не Хост-режим USB (3) імітує USB-накопичувач масового зберігання, подаючи дані з призначеного місця (вашого .vdiфайлу).

Загалом, це складний спосіб зробити це.

(2) Викрийте файл через мережу IP.

Це набагато простіший спосіб використання підключення Ethernet до Raspberry Pi Zero: на Raspberry Pi Zero змонтуйте дані, що зберігаються на вашому ПК через мережеву файлову систему. Потім ці файли логічно відображаються як частина файлової системи Pi Zero, і ви можете подавати їх за допомогою драйвера USB-гаджета Linux, щоб Raspberry Pi виглядав як USB-накопичувач для підключених пристроїв.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.