Сделать компьютер действительным как виртуальное устройство USB для другого оборудования

Некоторые приложения имитируют виртуальный диск USB или CD Rom, как если бы к компьютеру подключен USB-накопитель.

Есть ли какая-либо конфигурация или приложение, которое обеспечивает виртуальный USB-накопитель, а не для самой операционной системы, но для других устройств, которые принимают USB-накопитель, через USB-порт.

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

Вам нужно будет добавить USB-устройство / периферийный контроллер к компьютеру, в отличие от USB Host Controller, к которому они, как правило, приходят.

Что-то вроде этого: https://www.maximintegrated.com/en/products/interface/controllers-expanders/MAX3420E.html

К сожалению, вам придется найти способ подключить его к материнской плате. Технически это можно сделать. Практически вам придется перепроектировать материнскую плату, чтобы включить ее. Возможно, вам повезло найти шину SPI или I2C, расположенную где-то на вашей материнской плате, чтобы вы могли ее добавить, но обычно они подключаются напрямую к тому, на что они используются, если вы не используете служебную плату или одноразовый модуль, бортовой компьютер с открытым GPIO и другими портами, такими как малина Pi.

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

Это еще не все – если у вас есть оборудование, вам также понадобится программное обеспечение. В Linux есть некоторые полезные драйверы USB-гаджетов USB («USB-гаджет» – это еще один термин для периферийных устройств / устройств USB), таких как g_serial и g_ethernet, которые позволяют подключать ваше устройство к другому компьютеру и быть видимым как устройство последовательного или ethernet-over-USB (есть другие устройства для размещения устройства в качестве массового хранилища, которые позволяют использовать файл в качестве блочного устройства и выставлять компьютер в качестве гаджета для массового хранения). BeagleBone Black имеет тенденцию поставляться с включенным по умолчанию, поэтому вы можете просто подключить его к компьютеру через USB и увидеть его как сетевое устройство – и я считаю, что он также отображается как запоминающее устройство большой емкости с использованием составного драйвера (что позволяет он будет отображаться как несколько типов устройств USB через одно соединение.) Pi Zero может использовать их , но не по умолчанию. Для Windows или других ОС вам, вероятно, придется написать этот драйвер устройства самостоятельно.

Итак, теоретически, вы можете это сделать. Вы можете повредить свой настольный ПК, попытаться найти неиспользуемую совместимую шину на материнской плате где-нибудь (скорее всего, некоторые неиспользуемые контакты на контроллере IC) или способ расширить внутреннюю шину I2C или SPI, или что-то, что вы можете вырвать и замените и прикрепите к нему USB OTG или чип контроллера устройства. Затем вы можете установить Linux и использовать драйвер гаджета или написать свой собственный для другой ОС. Практически, если вы не первоклассный инженер-электроник, вы не сможете это сделать. По крайней мере, пока кто-то не выйдет с этим неуловимым адаптером с устройством или портом OTG на нем, который подключается к порту USB (теоретически это можно сделать с помощью микроконтроллера, такого как Arduino, подключенного к паре контроллеров контроллера USB-устройств) и записывает драйверы для его запуска.

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

Так что нет, вы не сможете сделать ПК на USB-устройстве.

Если вы хотите использовать компьютер в качестве USB-накопителя, вы можете использовать мобильный телефон или планшет с USB-соединением вместо ПК.

Вы можете использовать один из специальных «USB-USB мостовых кабелей», иногда называемых «сетевыми кабелями USB». Как упоминалось в этих статьях:

  • Подключение двух ПК с помощью USB-USB-кабеля ,
  • Подключение двух компьютеров с помощью USB-кабеля ,
  • Как связать две компьютеры с помощью USB-кабеля .

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

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