Electronic – Emulate USB device with USB host

computersemulatorusb

Is it in principle possible to connect two computers with a USB A to USB A cable, and have one pretend to be a USB device, and the other act as host?

Assume I have complete control on the software side (via driver / kernel module), and the cable can be modded (e.g. crossover).

If it's not possible, why not? (For example, maybe the host chipset can't be made to send neccessary signals by software, or something.) And what is the minimal hardware I'd have to put between the two computers to make this work?

Best Answer

I found the Facedancer board, which looks interesting. It contains a FTDI, a microcontroler, and a MAX3421E USB controler, and allows you to emulate a USB device in Python! That is, you basically write bit-banging code in Python on your PC, and the other PC sees the USB device that you emulate. It could be interesting for prototyping, and it has been used for fuzzing (automatically finding errors in USB host implementations and software).