Conecte dois sistemas Ubuntu via USB uns aos outros

1

Existe alguma maneira de criar uma conexão entre dois sistemas Ubuntu via USB conectando um cabo USB em ambos?

Em um ambiente de teste simples, eu gostaria de enviar alguns personagens de um sistema para outro, basicamente um pouco de conversa.

Em um teste um pouco mais avançado, gostaria de criar uma conexão TCP e tratar a conexão USB como qualquer outra conexão LAN.

    
por Socrates 21.02.2017 / 09:08

2 respostas

1

O seguinte descreve Ethernet sobre USB

RNDIS

  

A Especificação da Interface de Driver de Rede Remota (RNDIS) é uma   Protocolo proprietário da Microsoft usado principalmente em cima de USB. Ele fornece   um link Ethernet virtual para a maioria das versões do Windows, Linux e   Sistemas operacionais do FreeBSD. Uma especificação parcial do RNDIS está disponível   da Microsoft, mas as implementações do Windows foram observadas   solicitações de emissão não incluídas nessa especificação, e para ter   restrições não documentadas. 1

     

O protocolo é strongmente acoplado às interfaces de programação da Microsoft   e modelos, mais notavelmente a especificação de interface de driver de rede   (NDIS), que são alheios a sistemas operacionais diferentes do Windows. este   complica a implementação do RNDIS em sistemas operacionais não-Microsoft, mas   Linux, 2 FreeBSD, 3 O NetBSD 4 e o OpenBSD [ 5] implementar o RNDIS   nativamente.

     

O USB Implementers Forum (USB-IF) define pelo menos três   protocolos de classe de dispositivos de comunicações USB (CDC) não proprietários com   funcionalidade comparável de "Ethernet virtual"; um deles (CDC-ECM)   é anterior ao RNDIS e é amplamente usado para interoperabilidade com   sistemas operacionais não-Microsoft, mas não funciona com o Windows.

[PATCH] USB: usbnet (8/9 ) módulo para dispositivos RNDIS

Ethernet_over_USB Wikipedia

Existem inúmeros protocolos para redes no estilo Ethernet via USB. A principal motivação para esses protocolos é permitir a troca de dados independente de aplicativos com dispositivos USB, em vez de protocolos especializados, como vídeo ou MTP. Mesmo que o USB não seja uma Ethernet física, as pilhas de rede de todos os principais sistemas operacionais são configuradas para transportar quadros IEEE 802.3, sem importar muito o que o transporte subjacente realmente é.

Os principais protocolos da indústria são (em ordem cronológica): Remote NDIS (RNDIS, um protocolo de fornecedor da Microsoft), Ethernet Control Model (ECM), Ethernet Emulation Model (EEM) e Network Control Model (NCM). Os últimos três fazem parte do grupo de protocolos Classe de dispositivos de comunicações (CDC) do Fórum de implementadores USB (USB-IF). Eles estão disponíveis para download no USB-IF (veja abaixo). A especificação RNDIS está disponível no site da Microsoft. Em relação aos padrões de fato, alguns padrões, como o ECM, especificam o uso de recursos USB que os sistemas antigos não tinham. No entanto, pequenas modificações do padrão, os chamados subconjuntos, possibilitam implementações práticas em tais plataformas. Notavelmente, até mesmo algumas das plataformas mais modernas precisam de acomodações menores e, portanto, o suporte para esses subconjuntos ainda é necessário.

Destes protocolos, o ECM é de longe o mais simples - os quadros são simplesmente enviados e recebidos sem modificação, um de cada vez. Essa foi uma boa estratégia para sistemas USB 1.1 (atuais quando o protocolo foi lançado) com pacotes de 64 bytes, mas não para sistemas USB 2.0 que usam pacotes de 512 bytes.

O problema é que os quadros Ethernet têm cerca de 1500 bytes - cerca de 3 pacotes USB 2.0 e 23 pacotes USB 1.1. De acordo com o funcionamento do sistema USB, cada pacote é enviado como uma transferência, uma série de pacotes de comprimento máximo terminados por um pacote curto ou por um ZLP especial (pacote de comprimento zero). Depois disso, há latência de barramento, onde nada é enviado até que outra transferência possa ser iniciada. Isso reduz a ocupação de ônibus, o que significa que nada é enviado por frações consideráveis de tempo de ônibus. Um intervalo a cada 23 quadros não é perceptível, mas um intervalo a cada três quadros pode ser muito caro para o processamento.

Os seguintes foram respondidos superusuário

  

Os drivers Ethernet over USB estão incluídos no Linux. O relevante   drivers de tamanho de host são CDC_ETHER e RNDIS. Seu tamanho de escravo   contrapartes (que basicamente emulam uma ponte USB-Ethernet em   software) são USB_ETH, USB_ETH_RNDIS. USB_G_ANDROID também suporta   Protocolo RNDIS, o que é ótimo no meu caso, já que os dispositivos em   pergunta usar o kernel do Android, então o driver está habilitado por padrão.

     

A largura de banda medida da ponte USB usando o USB_G_ANDROID   driver é ~ 130Mbps de host para escravo e ~ 90Mbps o contrário.

    
por Yaron 21.02.2017 / 09:35
0

Você não pode conectar duas portas USB comuns (como as encontradas na maioria dos computadores) com um cabo. Os dois lados de uma conexão USB não são simétricos. A menos que você tenha uma máquina com uma interface USB-OTG (Google it) e os drivers correspondentes, não é possível conectar apenas duas portas USB.

O que você pode fazer é obter um par de adaptadores USB-para-Ethernet, conectá-los , e agora você pode simplesmente executar o TCP através dessa conexão.

Se você realmente deseja apenas trocar caracteres e não quer executar uma pilha de rede, você pode obter um par de adaptadores USB para Serial e conectá-los com um cabo de modem nulo.

    
por JayEye 22.02.2017 / 02:52