Соедините две системы Ubuntu по USB друг с другом

Там какой-либо путь состоит в том, чтобы создать соединение между двумя системами Ubuntu по USB путем включения USB-кабеля в них обоих?

В простой тестовой среде я хотел бы отправить несколько символов от одной системы до другого, в основном небольшого чата.

Немного в более усовершенствованном тесте я хотел бы создать соединение TCP и рассматривать соединение USB как любое другое соединение LAN.

1
задан 21 February 2017 в 11:08

3 ответа

Следующее описывает Ethernet по USB

RNDIS

, Спецификация интерфейса драйвера удаленной сети (RNDIS) является собственным протоколом Microsoft, используемым главным образом сверху USB. Это предоставляет виртуальный канал Ethernet большинству версий Windows, Linux и операционных систем FreeBSD. Частичная спецификация RNDIS доступна от Microsoft, но реализации Windows, как наблюдали, выпустили запросы, не включенные в ту спецификацию и имели недокументированные ограничения. 1

протокол сильно связывается к интерфейсам программирования и моделям Microsoft, прежде всего Спецификации интерфейсов сетевых драйверов (NDIS), которые чужды операционным системам кроме Windows. Это усложняет реализацию RNDIS в операционных системах не-Microsoft, но Linux, 2 FreeBSD, 3 NetBSD4 и OpenBSD[5] реализует RNDIS исходно.

Форум Реализаторов USB (USB - ЕСЛИ) определяет по крайней мере три несобственнических протокола коммуникационного класса устройства (CDC) USB с сопоставимым "виртуальным Ethernet" функциональность; один из них (CDC-ECM) предшествует RNDIS и широко используется для совместимости с операционными системами не-Microsoft, но не работает с Windows.

[ПАТЧ] USB: usbnet (8/9) модуль для устройств RNDIS

Википедия Ethernet_over_USB

существуют многочисленные протоколы для стиля Ethernet, объединяющегося в сеть по USB. Основная мотивация для этих протоколов должна позволить не зависящий от приложения обмен данными с USB-устройствами вместо специализированных протоколов, таких как видео или MTP. Даже при том, что USB не является физическим Ethernet, сетевые стеки всех главных операционных систем настраиваются для передачи кадров IEEE 802.3, не заботясь очень, какова базовая передача действительно.

основные промышленные протоколы (в хронологическом порядке): Удаленный NDIS (RNDIS, протокол поставщика Microsoft), Модель управления Ethernet (ECM), Модель эмуляции Ethernet (EEM) и Модель управления сетью (NCM). Последние три являются частью более многочисленной группы Коммуникационного класса устройства (CDC) протоколов Форума Реализаторов USB (USB - ЕСЛИ). Они доступны для скачивания от USB - ЕСЛИ (см. ниже). Спецификация RNDIS доступна с веб-сайта Microsoft. Относительно фактических стандартов некоторые стандарты, такие как ECM, указывают использование ресурсов USB, которые не имели ранние системы. Однако незначительные модификации стандартных, так называемых подмножеств, сделайте практические реализации возможными на таких платформах. Замечательно, даже некоторые самые современные платформы нуждаются в незначительном размещении и поэтому поддерживают для этих подмножеств, все еще необходим.

Из этих протоколов ECM является безусловно simplest— кадры, просто отправлены и получены без модификации по одному. Это было хорошей стратегией систем USB 1.1 (текущий, когда протокол был выпущен) с 64-байтовыми пакетами, но не для систем USB 2.0, которые используют 512-байтовые пакеты.

проблема состоит в том, что кадры Ethernet составляют приблизительно 1 500 байтов в size— приблизительно 3 пакета USB 2.0 и 23 пакета USB 1.1. Соответственно тому, как система USB работает, каждый пакет отправляется как передача, серия пакетов максимальной длины, завершенных коротким пакетом или специальным ZLP (пакет нулевой длины). После этого существует задержка шины, куда ничто не отправляется, пока другая передача не может инициироваться. Это уменьшает заполнение шины, означая, что ничто не отправляется за значительными частями времени шины. Разрыв каждые 23 кадра не примечательны, но разрыв каждые три кадра, может быть очень дорогостоящим к пропускной способности.

следующему ответили суперпользователь

, Ethernet по драйверам USB включен в Linux. Соответствующие драйверы размера хоста являются CDC_ETHER и RNDIS. Их дубликаты ведомого размера (которые по существу эмулируют мост Ethernet USB в программном обеспечении) являются USB_ETH, USB_ETH_RNDIS. USB_G_ANDROID также поддерживает протокол RNDIS, который является большим в моем случае, так как рассматриваемые устройства используют ядро Android, таким образом, драйвер включен по умолчанию.

измеренная пропускная способность моста USB с помощью драйвера USB_G_ANDROID является ~130Mbps от хоста до ведомого устройства и ~90Mbps наоборот.

1
ответ дан 7 December 2019 в 15:40

Вы не можете соединить два обычных USB-порта (такие как найденные на большинстве компьютеров) с кабелем. Две стороны соединения USB не симметричны. Если у Вас, оказывается, нет машины с USB-OTG (Google это) интерфейс и соответствующие драйверы, Вы не можете только соединить два USB-порта.

, Что Вы можете , делают вместо этого должен получить пару адаптеров USB К ETHERNET, разъема они в, и теперь можно просто выполнить TCP по тому соединению.

, Если Вы действительно только хотите обмениваться символами и не хотеть выполнять сетевой стек, можно получить пару USB К ПОСЛЕДОВАТЕЛЬНЫМ АДАПТЕРАМ и соединить их с нуль-модемным кабелем.

0
ответ дан 7 December 2019 в 15:40

Невозможно соединить два обычных порта USB (например, те, что есть на большинстве компьютеров) с помощью кабеля. Две стороны USB-соединения не симметричны. Если у вас нет машины с интерфейсом USB-OTG (Google it) и соответствующими драйверами, вы не можете просто подключить два порта USB.

Если один или оба компьютера имеют порт USB-C, то для соединения двух компьютеров можно использовать обычный кабель USB-C - USB-C или USB-A - USB-C. Спецификация USB 3.x определила в 2011 году кабель USB-A - USB-A для этой цели с отсоединенными линиями Vbus и D + / D-, чтобы избежать каких-либо проблем с коротким замыканием любого порта. Эти кабели, совместимые с USB 3.x, встречаются редко, а несовместимые кабели по какой-то причине встречаются повсюду, что делает это потенциально опасным, если не соблюдать осторожность.

Это безопасно с USB-C, потому что все порты USB-C (по крайней мере, те, которые соответствуют спецификации, потому что, очевидно, это проблема, которая выходит за рамки только кабелей USB-C), реализуют USB-OTG так же, как и микро стиль портов. Питание не подается на Vbus через порт, совместимый с USB-OTG, если он не видит заземленный контакт ID. Это означает, что в состоянии по умолчанию он действует как порт «B», переключаясь на порт «A», если конец кабеля «A» подключен.

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

Я знаю, что обычные USB-порты по крайней мере на некоторых компьютерах позволяют осуществлять связь через USB-A с портами USB-C, потому что я могу вставить свой MacBook Pro в "[ Target Disk Mode ", затем подключите его к другому MacBook Pro с помощью кабеля USB-A - USB-C и подключите внутренний диск моего MacBook Pro к другому MacBook Pro.

Аппаратное обеспечение есть, но для ограниченного использования на компьютерах Apple, поскольку программного обеспечения для создания сети явно нет. Режим целевого диска работал нормально, но, насколько я помню, я не мог создать сетевое соединение между компьютерами с этим же кабелем после выхода из режима целевого диска. У меня сейчас нет с собой оборудования, чтобы освежить память о том, что будет и что не будет работать.

Некоторых смущает то, что некоторые порты USB-C на компьютерах поддерживают протокол Thunderbolt, а соединение двух портов Thunderbolt вместе создает сетевое соединение. Это было еще одно, что я сделал со своим MacBook Pro и другим MacBook Pro. Я использовал адаптер Thunderbolt 3 - Thunderbolt 2 для соединения этих компьютеров друг с другом. Два компьютера с портами USB-C / Thunderbolt можно подключить с помощью обычного пассивного кабеля USB-C - USB-C для создания сети. Было бы очень удобно, если бы с USB все было так же просто, как с Thunderbolt, тем более что Thunderbolt может делать это уже почти десять лет, а USB 3.x spec определил, как это сделать так же долго.

Я хотел бы найти какой-нибудь тип связи USB-USB, такой как Thunderbolt, не только в Linux, но и в разных операционных системах, чтобы я мог подключать Linux к MacOS и Windows через USB-кабель. Я искал ответы, но вместо этого продолжаю находить новые вопросы.

1
ответ дан 6 February 2020 в 08:33

Другие вопросы по тегам:

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