Faça um computador funcionar como um dispositivo USB virtual para outros equipamentos


18

Alguns aplicativos simulam uma unidade USB ou CD-ROM virtual como se uma unidade USB estivesse conectada ao computador.

Existe alguma configuração ou aplicativo que forneça uma unidade USB virtual, não para o próprio sistema operacional, mas para outros equipamentos que aceitem unidade USB, através de uma porta USB.

Portanto, terei um disco rígido virtual (por exemplo, um *.vdiarquivo) no computador, conectado por meio de um soquete USB, como uma unidade USB a outro equipamento (por exemplo, um telefone celular ou laptop).

Respostas:


12

Você precisaria adicionar um dispositivo USB / controlador periférico ao computador, em oposição ao controlador host USB que eles costumam vir.

Algo assim: https://www.maximintegrated.com/en/products/interface/controllers-expanders/MAX3420E.html

Infelizmente, você teria que encontrar uma maneira de conectá-lo à sua placa-mãe. Tecnicamente, isso pode ser feito. Praticamente, você teria que redesenhar a placa-mãe para incluí-la. Você pode ter a sorte de encontrar um barramento SPI ou I2C exposto em algum lugar da placa-mãe para permitir que você o adicione, mas eles geralmente são conectados diretamente ao que quer que estejam sendo usados, a menos que você esteja usando uma placa de desenvolvimento ou placa-mãe única. computador de bordo com GPIO exposto e outras portas, como um Raspberry Pi.

A outra opção seria um controlador USB On-the-Go. As placas-mãe projetadas para dispositivos embarcados e portáteis tendem a ter um contoller USB OTG (em movimento), que pode funcionar como um host ou um controlador de dispositivo. Por exemplo, o Raspberry Pi mencionado acima tem um controlador on-the-go, mas em todos os modelos, exceto o Pi Zero, que é religado a uma porta de host ou a um hub USB integrado, negando o uso da funcionalidade do dispositivo USB. O BeagleBone Black possui uma porta OTG.

Mas isso não é tudo - uma vez que você tenha o hardware, também precisará do software. O Linux possui alguns drivers USB Gadget úteis do kernel ("dispositivo USB" é outro termo para dispositivo / periférico USB), como g_serial e g_ethernet, que permitem conectar o dispositivo a outro computador e ficar visível como um dispositivo serial ou ethernet sobre USB (existem outras para expor um dispositivo como armazenamento em massa, que permitem usar um arquivo como dispositivo de bloco e expor o computador como um dispositivo de armazenamento em massa). O BeagleBone Black tende a vir com isso ativado por padrão, então você pode simplesmente conectá-lo ao seu PC através de USB e vê-lo como um dispositivo em rede - e eu acredito que ele também aparece como um dispositivo de armazenamento em massa usando um driver composto (que permite ele aparece como vários tipos de dispositivos USB em uma única conexão. O Pi Zero pode usá-los , mas não o usa por padrão. Para Windows ou outros sistemas operacionais, você provavelmente precisará escrever esse driver de dispositivo.

Então, teoricamente, você pode fazê-lo. Você pode desmontar o seu PC de mesa, tentar encontrar um barramento compatível não utilizado na placa-mãe em algum lugar (provavelmente alguns pinos não utilizados no IC do controlador), ou uma maneira de estender um barramento I2C ou SPI interno ou algo que você pode desmontar e instalar. substitua e solde um OTG USB ou um chip controlador de dispositivo. Em seguida, você pode instalar o Linux e usar um driver de dispositivo ou escrever o seu próprio para outro sistema operacional. Praticamente, a menos que você seja um engenheiro eletrônico de primeira linha, não poderá fazê-lo. Pelo menos, até que alguém saia com aquele adaptador indescritível com um dispositivo ou porta OTG conectada a uma porta USB (teoricamente, isso poderia ser feito com um microcontrolador como um Arduino conectado a um par de ICs de controladores de dispositivos USB), e escreve os drivers para executá-lo.


2
ótima explicação, você pode atualizar a resposta se você (com seu conhecimento) vir algo novo em relação à sua frase "até que alguém saia com adaptador exclusivo ...". Existem laptops com usb-c em 2018, eles poderiam ser uma solução.?
Asain Kujovic

8

O USB é dissimétrico: um lado é um host e o outro lado é um dispositivo periférico. Você não pode fazer um dispositivo periférico agir como host ou vice-versa. É possível que uma porta USB possa atuar como um ou outro lado; isso é chamado de USB on-the-go e está presente em alguns telefones celulares e tablets. As portas são fisicamente do tipo dispositivo, não do tipo host. Eu nunca vi um PC com uma porta de dispositivo. Isso requer eletrônica no controlador, não é suficiente fazer um cabo que se encaixe nas duas extremidades.

Portanto, você não poderá transformar um PC em um dispositivo USB.

Se você deseja usar um computador como dispositivo de armazenamento USB, pode usar um telefone celular ou tablet com uma conexão USB em vez de usar um PC.


Você pode explicar um pouco mais como o uso de um telefone celular pode me ajudar a transformar meu PC em um dispositivo / host de armazenamento USB, que eu poderia conectar a outro computador, TV ou dispositivo? Acho que estou perdendo esse ponto, apesar de achar que tenho um conhecimento justo sobre o USB OTG.
Trejder

@trejder Como escrevi, nunca vi um PC com uma porta de dispositivo (“PC” excluindo tablets x86).
Gilles 'SO- stop being evil

Sim, mas refiro-me à sua última frase: " Se você deseja transformar um computador em um dispositivo de armazenamento USB, pode usar um telefone celular ou tablet com uma conexão USB ". Talvez esteja faltando alguma coisa, mas entendo como "Você pode usar um celular ou tablet para transformar o computador em um dispositivo de armazenamento USB". Se sim, então a pergunta é: como?
Trejder

1
@trejder Ah, “computador” nessa frase não é “PC”, é “computador”. Um telefone / tablet é um tipo diferente de computador de um PC. É isso que está incomodando você?
Gilles 'SO- stop being evil

1
@trejder Não. Geralmente, sua melhor aposta é estabelecer uma conexão de rede de uma maneira ou de outra. Você pode usar o Firewire como uma conexão de rede entre dois computadores com uma porta Firewire, mas muitos computadores não têm um. A maioria dos PCs tem uma porta Ethernet, você pode conectar dois PCs com um cabo Ethernet (PCs muito antigos exigem um cabo cruzado, mas os modernos podem usar um cabo comum). Para fazer com que um PC funcione como dispositivo de armazenamento para um dispositivo móvel, normalmente é necessário conectar o PC ao wifi de alguma forma.
Gilles 'SO- stop being evil

2

Você pode usar um dos "cabos com ponte USB-USB" especiais, às vezes chamados de "cabos de rede USB". Como o mencionado nesses artigos:

Eles permitem transferir arquivos entre dois PCs. Eu tenho usado esse tipo de cabo há mais de dez anos (nos tempos do Windows XP) e, nesses tempos, todos esses cabos disponíveis no mercado exigiam um driver e software especiais. Eles permitem transferir arquivos apenas por meio de um comando especial, enviado junto com os drivers de cabo em um disco de instalação e, portanto, não permite que um PC atue em outro como um dispositivo externo USB puro.

Não tenho certeza se alguma coisa mudou desde então e se novas soluções permitem apenas transferir arquivos usando um software especial e - se você pode forçar um PC a agir como um dispositivo externo para outro PC.


2

Conforme explicado na resposta de Matt Thomson , não é possível fazer com que uma porta USB física de um computador PC atue como um dispositivo escravo USB, pois o controlador escravo USB está ausente.

Isso significa que, se tivermos uma placa adaptadora capaz de fornecer USB no modo escravo (como o Raspberry Pi Zero), precisamos conectá-la ao PC host por um canal diferente, como Ethernet com fio. Eu tenho duas propostas diferentes de qual protocolo você pode executar nessa conexão Ethernet:

(1) Exponha a porta USB pela rede IP.

Use o software para expor a porta USB no modo escravo do Raspberry Pi Zero como um dispositivo USB virtual para o seu PC. O projeto USB / IP fornece isso por meio de um driver que pode transportar redes USB sobre IP. Aqui está um exemplo de uso de USB / IP para fornecer um dispositivo USB simulado a um computador - que seria o seu PC aqui.

O que não sei nesta solução proposta é se o software USB / IP já é capaz de expor uma porta escrava USB pela rede IP ou apenas uma porta host USB normalmente.

Mas, mesmo que isso funcione, você ainda precisará configurar ou adaptar os drivers de dispositivo no seu PC de forma que (1) aceitem a conexão USB / IP de entrada como uma conexão USB, (2) forneçam o modo escravo USB em vez de Modo host USB, (3) simula um dispositivo de armazenamento em massa USB servindo os dados do local designado (seu .vdiarquivo).

No geral, essa é uma maneira complexa de fazer isso.

(2) Exponha o arquivo pela rede IP.

Essa é uma maneira muito mais simples de como utilizar a conexão Ethernet com o Raspberry Pi Zero: no Raspberry Pi Zero, monte os dados armazenados no seu PC através de um sistema de arquivos em rede. Esses arquivos aparecem logicamente como parte do sistema de arquivos do Pi Zero e você pode servi-los com o driver de dispositivo USB do Linux para fazer com que o Raspberry Pi pareça um dispositivo de armazenamento em massa USB para dispositivos conectados.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.