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.
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.
fonte
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.
fonte
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
.vdi
arquivo).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.
fonte