Вам потребуется добавить USB-устройство / периферийный контроллер к компьютеру, в отличие от хост-контроллера USB, к которому они обычно прилагаются.
Примерно так: https://www.maximintegrated.com/en/products/interface/controllers-expanders/MAX3420E.html
К сожалению, вам нужно найти способ подключить его к материнской плате. Технически это можно сделать. Практически, вам придется изменить дизайн материнской платы, чтобы включить его. Возможно, вам повезет найти шину SPI или I2C, выставленную где-нибудь на вашей материнской плате, чтобы позволить вам добавить ее, но обычно они подключаются напрямую к тому, для чего они используются, если только вы не используете плату разработчика или одиночную плату. бортовой компьютер с открытым GPIO и другими портами, такими как Raspberry Pi.
Другим вариантом будет USB On-the-Go контроллер. Материнские платы, предназначенные для встраиваемых и переносных устройств, обычно имеют контроллер USB OTG (On-the-go), который может функционировать как контроллер хоста или устройства. Например, вышеупомянутый Raspberry Pi имеет контроллер On-the-Go, но на всех моделях, кроме Pi Zero, который подключается к хост-порту или встроенному USB-концентратору, что запрещает использование функциональности USB-устройства. У BeagleBone Black есть порт OTG.
Но это еще не все - когда у вас есть оборудование, вам также потребуется программное обеспечение. В Linux есть несколько полезных драйверов USB-гаджетов для ядра («USB-гаджет» - еще один термин для периферийных устройств / устройств USB), таких как g_serial и g_ethernet, которые позволяют подключать ваше устройство к другому компьютеру и отображать его как последовательное устройство или устройство Ethernet через USB. (есть и другие, которые позволяют отображать устройство в качестве запоминающего устройства, что позволяет использовать файл в качестве блочного устройства и выставлять компьютер в качестве устройства для хранения). BeagleBone Black обычно поставляется с включенным по умолчанию, поэтому вы можете просто подключить его к ПК через USB и увидеть его как сетевое устройство - и я считаю, что он также выглядит как запоминающее устройство с помощью композитного драйвера (который позволяет он должен отображаться как несколько типов USB-устройств через одно соединение. Pi Zero может использовать их , но не по умолчанию. Для Windows или других ОС вам, вероятно, придется написать этот драйвер устройства самостоятельно.
Таким образом, теоретически, вы можете сделать это. Вы можете сломать свой настольный ПК, попытаться найти где-нибудь неиспользуемую совместимую шину на материнской плате (скорее всего, некоторые неиспользуемые контакты на интегральной схеме контроллера), или способ расширить внутреннюю шину I2C или SPI, или что-то, что вы можете оторвать и замените и припаяйте на него USB OTG или микросхему контроллера устройства. Затем вы можете установить Linux и использовать драйвер гаджета или написать свой собственный для другой ОС. Практически, если вы не первоклассный инженер-электронщик, вы не сможете это сделать. По крайней мере, пока кто-то не выпустит этот неуловимый адаптер с устройством или портом OTG, который подключается к порту USB (теоретически это можно сделать с помощью микроконтроллера, такого как Arduino, подключенного к паре ИС контроллера USB-устройства), и пишет драйверы для его запуска.
USB является несимметричным: одна сторона является хостом, а другая - периферийным устройством. Вы не можете заставить периферийное устройство выступать в качестве хоста или наоборот. USB-порт может выступать в качестве любой стороны; это называется USB на ходу и присутствует на некоторых мобильных телефонах и планшетах. Порты являются физически портами типа устройства, а не портами типа хоста. Я никогда не видел ПК с портом устройства. Это требует электроники на контроллере, недостаточно просто сделать кабель, который подходит к обоим концам.
Так что нет, вы не сможете превратить ПК в USB-устройство.
Если вы хотите использовать компьютер в качестве запоминающего устройства USB, вы можете использовать мобильный телефон или планшет с подключением USB вместо ПК.
источник
Вы можете рассмотреть возможность использования одного из специальных «USB-USB-мостовых кабелей», иногда называемого «USB-сетевые кабели». Как упомянуто в этих статьях:
Они позволяют передавать файлы между двумя компьютерами. Я использовал такие кабели более десяти лет назад (во времена Windows XP), и в то время для всех таких кабелей, доступных на рынке, требовались специальный драйвер и программное обеспечение. Они позволяют передавать файлы только через специальный файловый коммандер, который поставляется вместе с драйверами кабеля на установочном диске и, следовательно, не позволяет одному ПК работать с другим как чистое внешнее USB-устройство.
Я не уверен, изменилось ли что-либо с тех пор, и если новые решения позволяют передавать файлы только с помощью специального программного обеспечения и - если вы можете заставить один компьютер выступать в качестве внешнего устройства для другого компьютера.
источник
Как объяснил в ответе Мэтт Томсон , Мэтт Томсон не может заставить физический USB-порт ПК действовать как подчиненное USB-устройство, поскольку ведомый USB-контроллер отсутствует.
Это означает, что если у нас есть адаптерная плата, которая может обеспечить USB-порт в подчиненном режиме (например, Raspberry Pi Zero), мы должны подключить ее к вашему хост-компьютеру по другому каналу, например, по проводному Ethernet. У меня есть два разных предложения, какой протокол вы можете запустить через это соединение Ethernet:
(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-сети.
Это гораздо более простой способ использования соединения Ethernet с Raspberry Pi Zero: на Raspberry Pi Zero монтируйте данные, хранящиеся на вашем ПК, через сетевую файловую систему. Затем эти файлы логически появляются как часть файловой системы Pi Zero, и вы можете использовать их с драйвером USB-гаджета Linux для того, чтобы Raspberry Pi выглядел как запоминающее устройство USB для подключенных устройств.
источник