Fai in modo che un computer funga da dispositivo USB virtuale per altre apparecchiature


18

Alcune applicazioni simulano un'unità virtuale USB o CD Rom come se un'unità USB fosse collegata al computer.

Esiste una configurazione o un'applicazione che fornisce un'unità USB virtuale, non per il sistema operativo stesso, ma per altre apparecchiature che accettano l'unità USB, attraverso una porta USB.

Quindi avrò un disco rigido virtuale (ad esempio un *.vdifile) nel computer, che è collegato, tramite una presa USB, come unità USB ad altre apparecchiature (ad esempio un telefono cellulare o un laptop).

Risposte:


12

Dovresti aggiungere un dispositivo USB / controller periferico al computer, al contrario del controller host USB che tendono a venire.

Qualcosa del genere: https://www.maximintegrated.com/en/products/interface/controllers-expanders/MAX3420E.html

Sfortunatamente, dovresti trovare un modo per collegarlo alla tua scheda madre. Tecnicamente, può essere fatto. Praticamente, dovresti riprogettare la scheda madre per includerla. Potresti essere abbastanza fortunato da trovare un bus SPI o I2C esposto da qualche parte sulla tua scheda madre per permetterti di aggiungerlo, ma di solito sono collegati direttamente a tutto ciò per cui vengono utilizzati a meno che tu non stia usando una scheda di sviluppo o un singolo- computer di bordo con GPIO esposto e altre porte come un Raspberry Pi.

L'altra opzione sarebbe un controller USB On-the-Go. Le schede madri progettate per dispositivi embedded e portatili tendono ad avere un controller USB OTG (On-the-go), che può funzionare come controller Host o Device. Ad esempio, il summenzionato Raspberry Pi ha un controller On-the-Go, ma su tutti i modelli tranne il Pi Zero che viene ricablato a una porta host o un hub USB integrato che nega l'uso della funzionalità del dispositivo USB. BeagleBone Black ha una porta OTG.

Non è tutto però: una volta ottenuto l'hardware, avresti anche bisogno del software. Linux ha alcuni driver del gadget USB del kernel utili ("gadget USB" è un altro termine per periferica / dispositivo USB) come g_serial e g_ethernet che ti consentono di collegare il tuo dispositivo a un altro computer e di essere visibile come dispositivo seriale o Ethernet su USB (ce ne sono altri per esporre un dispositivo come memoria di massa, che ti consentono di utilizzare un file come dispositivo a blocchi ed esporre il computer come gadget di memoria di massa). BeagleBone Black tende ad avere questo abilitato per impostazione predefinita, quindi puoi semplicemente collegarlo al tuo PC tramite USB e vederlo come un dispositivo di rete - e credo che appaia anche come dispositivo di archiviazione di massa utilizzando un driver composito (che consente apparire come più tipi di dispositivi USB su una singola connessione. Il Pi Zero può usarli , ma non di default. Per Windows o altri sistemi operativi, probabilmente dovresti scrivere tu stesso quel driver di dispositivo.

Quindi, teoricamente, puoi farlo. Puoi abbattere il tuo PC desktop, provare a trovare un bus compatibile inutilizzato sulla scheda madre da qualche parte (molto probabilmente alcuni pin inutilizzati su un controller IC) o un modo per estendere un bus I2C o SPI interno o qualcosa che puoi strappare e sostituire e saldare un OTG USB o un chip controller del dispositivo su di esso. Quindi è possibile installare Linux e utilizzare un driver di gadget o scrivere il proprio per un altro sistema operativo. Praticamente, a meno che tu non sia un ingegnere elettronico di prim'ordine, non sarai in grado di farlo. Almeno, fino a quando qualcuno non esce con quell'adattatore sfuggente con un dispositivo o una porta OTG su di esso che si collega a una porta USB (teoricamente, che potrebbe essere fatto con un microcontrollore come un Arduino collegato a una coppia di CI di controller di dispositivo USB), e scrive i driver per eseguirlo.


2
grande spiegazione, puoi aggiornare la risposta se (con le tue conoscenze) vedi qualcosa di nuovo riguardo alla tua frase "fino a quando qualcuno esce con un adattatore esclusivo ...". Ci sono laptop con USB-C nel 2018, potrebbero essere una soluzione?
Asain Kujovic,

8

L'USB è dissimmetrico: un lato è un host, l'altro lato è un dispositivo periferico. Non è possibile fare in modo che un dispositivo periferico funga da host o viceversa. È possibile che una porta USB sia in grado di agire da entrambi i lati; questo si chiama USB on-the-go ed è presente su alcuni telefoni cellulari e tablet. Le porte sono porte di tipo dispositivo, non porte di tipo host. Non ho mai visto un PC con una porta per dispositivo. Ciò richiede elettronica sul controller, non è sufficiente realizzare un cavo che si adatti ad entrambe le estremità.

Quindi no, non sarai in grado di trasformare un PC in un dispositivo USB.

Se si desidera utilizzare un computer come dispositivo di archiviazione USB, è possibile utilizzare un telefono cellulare o un tablet con una connessione USB anziché utilizzare un PC.


Puoi approfondire un po 'di più, in che modo l'utilizzo di un telefono cellulare potrebbe aiutarmi a trasformare il mio PC in un dispositivo / host di archiviazione USB, che potrei collegare a un altro computer, TV o dispositivo? Penso che mi manchi questo punto, anche se penso di avere una buona conoscenza di USB OTG.
trejder

@trejder Come ho scritto, non ho mai visto un PC con una porta per dispositivo ("PC" esclusi i tablet x86).
Gilles 'SO- smetti di essere malvagio' il

Sì, ma mi riferisco all'ultima frase: " Se vuoi trasformare un computer in un dispositivo di archiviazione USB, puoi utilizzare un telefono cellulare o un tablet con una connessione USB ". Forse mi manca qualcosa, ma lo capisco come "Puoi usare il cellulare o il tablet per trasformare il computer in un dispositivo di archiviazione USB". In tal caso, la domanda è: come?
trejder

1
@trejder Ah, "computer" in quella frase non è "PC", è "computer". Un telefono / tablet è un tipo diverso di computer da un PC. È questo che ti preoccupa?
Gilles 'SO- smetti di essere malvagio' il

1
@trejder No. Di solito la soluzione migliore è stabilire una connessione di rete in un modo o nell'altro. È possibile utilizzare Firewire come connessione di rete tra due PC con una porta Firewire, ma molti PC non ne hanno uno. La maggior parte dei PC ha una porta Ethernet, è possibile collegare due PC con un cavo Ethernet (i PC molto vecchi richiedono un cavo crossover ma quelli moderni possono prendere un cavo normale). Per fare in modo che un PC funga da dispositivo di archiviazione per un dispositivo mobile, in genere è necessario in qualche modo portare il PC sul wifi.
Gilles 'SO- smetti di essere malvagio' il

2

Puoi prendere in considerazione l'uso di uno degli speciali "cavi con ponte USB-USB", a volte chiamati "cavi di rete USB". Come uno menzionato in questi articoli:

Ti consentono di trasferire file tra due PC. Ho usato questo tipo di cavi più di dieci anni fa (in tempi di Windows XP) e in quei tempi tutti questi cavi disponibili sul mercato richiedevano un driver e un software speciali. Ti consentono di trasferire i file solo tramite uno speciale File Commander, fornito insieme ai driver dei cavi su un disco di installazione e quindi non ha permesso a un PC di agire su un altro come dispositivo esterno USB puro.

Non sono sicuro, se da allora qualcosa è cambiato e se le nuove soluzioni consentono solo di trasferire file utilizzando un software speciale e - se è possibile forzare un PC a fungere da dispositivo esterno su un altro PC.


2

Come spiegato nella risposta di Matt Thomson , non è possibile far funzionare correttamente una porta USB fisica di un computer PC come dispositivo slave USB, poiché manca il controller slave USB.

Ciò significa che se disponiamo di una scheda adattatore in grado di fornire USB in modalità slave (come Raspberry Pi Zero), dobbiamo collegarla al PC host tramite un canale diverso, come Ethernet cablata. Ho due diverse proposte su quale protocollo è possibile eseguire su quella connessione Ethernet:

(1) Esporre la porta USB sulla rete IP.

Utilizzare il software per esporre la porta in modalità slave USB di Raspberry Pi Zero come dispositivo USB virtuale sul PC. Il progetto USB / IP lo fornisce, tramite un driver in grado di trasportare reti USB su IP. Ecco un esempio dell'uso di USB / IP per fornire un dispositivo USB simulato a un computer, che sarebbe il tuo PC qui.

Quello che non so in questa soluzione proposta è se il software USB / IP è già in grado di esporre una porta slave USB su rete IP o solo una porta host USB come di consueto.

Ma anche se funziona, devi comunque impostare o adattare i driver di dispositivo sul tuo PC in modo tale che (1) accettino la connessione USB / IP in entrata come connessione USB, (2) fornisca la modalità slave USB anziché Modalità host USB, (3) simula un dispositivo di archiviazione di massa USB fornendo i dati dalla posizione assegnata (il tuo .vdifile).

Nel complesso, è un modo complesso di farlo.

(2) Esporre il file sulla rete IP.

Questo è un modo molto più semplice di come utilizzare la connessione Ethernet a Raspberry Pi Zero: su Raspberry Pi Zero, montare i dati memorizzati sul PC tramite un file system di rete. Questi file appaiono quindi logicamente come parte del file system di Pi Zero e puoi servirli con il driver del gadget USB Linux per rendere Raspberry Pi simile a un dispositivo di archiviazione di massa USB ai dispositivi collegati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.