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

Попытка:

find . -type d -exec chmod a+rwx {} ';'

Это вызовет find выполниться chmod прежде чем это попытается прочитать каталог вместо того, чтобы пытаться генерировать список и подать его к xargs.

18
20.03.2014, 00:54
5 ответов

Редактировать: Хотя в то время этот ответ был правильным (за некоторыми редкими исключениями), с тех пор произошло больше изменений. Например, теперь у нас есть USB-C, который поддерживает режимы как устройства, так и хоста. Многие устройства, особенно SBC, поставляются с USB-C и контроллером, который может работать в обоих режимах. Основная проблема по-прежнему в основном связана с ПК с Windows, где отсутствуют какие-либо драйверы режима устройства USB-C с ОС. Однако Linux включает драйверы режима устройства USB-C (также известные как драйверы «USB-гаджет» - хотя вам может потребоваться скомпилировать собственное ядро, если они не были включены в ваш дистрибутив).

Вам нужно будет добавить к компьютеру 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-over-USB (существуют и другие устройства для отображения устройства в качестве запоминающего устройства большой емкости, которые позволяют использовать файл как блочное устройство и отображать компьютер как гаджет запоминающего устройства большой емкости). BeagleBone Black имеет тенденцию поставляться с включенным по умолчанию, поэтому вы можете просто подключить его к компьютеру через USB и рассматривать его как сетевое устройство - и я считаю, что он также отображается как запоминающее устройство с использованием составного драйвера (который позволяет они должны отображаться как несколько типов USB-устройств через одно соединение.) Pi Zero может использовать эти , но не по умолчанию. Для Windows или других ОС вам, вероятно, придется написать этот драйвер устройства самостоятельно.

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

22
20.08.2021, 12:54
[117414] USB является диссимметричным: одна сторона - хост, другая - периферийное устройство. Вы не можете заставить периферийное устройство работать в качестве хоста или наоборот. USB-порт может работать как с одной, так и с другой стороны; это называется [117817]USB на ходу [117818] и присутствует на некоторых мобильных телефонах и планшетах. Порты физически являются портами типа устройства, а не хост-типа портов. Я никогда не видел ПК с портом устройства. Для этого требуется электроника на контроллере, недостаточно сделать кабель, который помещается на обоих концах.[12183]Так что нет, вы не сможете превратить ПК в USB-устройство.[12184]Если вы хотите использовать компьютер в качестве USB-накопителя, вы можете использовать мобильный телефон или планшет с USB-соединением вместо использования ПК.[117419].
8
27.01.2020, 19:46

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

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

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

2
27.01.2020, 19:46

Я действительно хочу, чтобы люди перестали повторять ошибочное утверждение, что всем персональным компьютерам не хватает аппаратного обеспечения, чтобы действовать как USB-устройство/ведомое устройство/гаджет/что-то еще. Я могу доказать, что это не так. Мой первый пример: все компьютеры Apple Mac с портом USB -C имеют возможность перехода в подчиненный режим USB -C. Это называется «Режим целевого диска» и описано здесь :https://support.apple.com/en-us/HT201462

.

Это функция временного превращения вашего ноутбука за 2000 долларов в USB-диск -C за 200 долларов. Зачем это делать? Так что за один раз можно восстановить диск на не загружающемся -Mac. Как это работает? Это работает, потому что Apple использовала микросхему USB -C в своих компьютерах, которая способна действовать как ведомое устройство USB / устройство / что-то еще, и установила некоторую прошивку, позволяющую использовать эту функцию. Этот чип не уникален для компьютеров Apple, он также используется рядом других производителей компьютеров.

Имеются дополнительные доказательства того, что почти каждый ноутбук с портами USB -C также имеет аппаратное обеспечение, необходимое для работы в качестве ведомого/устройства USB. Возьмите ноутбук, который использует USB -C для питания и зарядки, подключите USB -C к USB -C, получите другой компьютер с портом USB -C, на котором установлена ​​ОС Windows. Теперь подключите ноутбук к компьютеру с Windows с помощью кабеля USB -C и проверьте диспетчер устройств на наличие новых устройств. Если ноутбук получает питание от компьютера с Windows, вы должны увидеть в диспетчере устройств, что ноутбук отображается как «USB-устройство рекламного щита» в списке устройств. Это ноутбук, работающий как USB-устройство. Он должен отображаться как устройство для хоста с поддержкой USB Power Delivery, такого как блок питания USB -C, чтобы потреблять мощность более 5 Вт. Есть и другие способы проверить это, поэтому настройте процесс для предпочитаемой операционной системы или чего-то еще.

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

Некоторые люди работают над расширением возможностей Linux-систем для работы в качестве USB-устройств. Он работает прямо сейчас для широкого спектра виртуальных USB-устройств, но его настройка не является тривиальной. Я надеюсь, что когда-нибудь эта возможность станет лучше поддерживаться, и пользователи ожидают, что она будет работать просто, легко и с высокой производительностью, которую мы ожидаем от устройств USB 3.x.

Аппаратное обеспечение уже существует для того, чтобы компьютеры действовали как USB-устройства почти на каждом компьютере с портами USB -C, нам просто нужно больше людей, работающих над написанием программного обеспечения, чтобы сделать это чем-то средним пользователем (или даже пользователь чуть выше среднего )может установить и использовать -.

7
20.08.2021, 12:54

Технически это должно быть выполнимо сhttp://www.bplus.com.tw/Adapter/PP3380-AB.html-PP3380 -AB (USB3380 -оценочной платой AB ), которая включает порт USB 3.0 5 Гбит/с USB B на плате PCI Express и построен на чипе PLX USB3380 с поддержкой Linux USB Gadget. Но это недешево (250$ )и наверное далеко не тривиально (программатор в комплект не входит... ).

(Примечание :есть также http://www.bplus.com.tw/Adapter/USB3380EVB.html, где USB3380 -AB EVK с платой ADP дает вам порт microUSB -, но это просто разница в кабеле)

1
20.08.2021, 12:54

Теги

Похожие вопросы