I want to run a .NET app in each of the two computers, so that they send and receive data through USB-2.

What kind of cable adapter will do this?

BACKGROUND: I need to build a GUI on Windows that communicates through USB-2 with an embedded EFM32 ARM on our embedded board, which is not available yet. so, I want to simulate the embedded with a .NET app running on my Windows 10 laptop and communicating through USB-2 to my .NET app GUI running on my Windows 10 desktop.


closed as off-topic by Chris Stratton, laptop2d, Dmitry Grigoryev, Andy aka, Lior Bilia Jul 10 '18 at 1:27

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions on the use of electronic devices are off-topic as this site is intended specifically for questions on electronics design." – Chris Stratton, laptop2d, Dmitry Grigoryev, Andy aka, Lior Bilia
If this question can be reworded to fit the rules in the help center, please edit the question.

  • 4
    \$\begingroup\$ Generally two computers can't communicate directly via USB, as both are USB hosts. USB host can only communicate with USB device, so you will need at least one in the middle. \$\endgroup\$ – Eugene Sh. Jul 5 '18 at 16:20
  • 2
    \$\begingroup\$ What protocol does the embedded board use to communicate with the host PC? There may be easier ways to do this. \$\endgroup\$ – Jack B Jul 5 '18 at 16:25
  • \$\begingroup\$ Let's say that you need to receive data through only one USB. How are you doing this? Is it through serial port? If so, why not use something like PuTTY and just open up two sessions with two different USBs going into your devices? If your answer is that your ARM does not have two USBs, then what's preventing you from using a USB hub? \$\endgroup\$ – KingDuken Jul 5 '18 at 16:38
  • 1
    \$\begingroup\$ There are a plethora of Host-Host transfer cable available like this: usbgear.com/windows-10-data-transfer-cable.html Search for Duolink, netlink or similar will bring up more options. There are also 'cables' that offer USB-on-the-go functionality that are even more flexible. Buying one of the 'cables' that implement as a shared disk drive is probably the easiest way to go, your application then needs only to write or read from a disk drive. \$\endgroup\$ – Jack Creasey Jul 5 '18 at 17:22
  • \$\begingroup\$ The question literally asked is not on topic here, because it is about networking between computer systems, not about electrical engineering. In terms of the original goal which might be on topic if it had been the question asked, once you are simulating you might as well just use another process on the same host or else pass the traffic over Ethernet - the accuracy of any interface dynamics would depend more on how you modeled them, you can't really assume that some different hardware interface (even if USB) would accurately model the one your program eventually needs to work across. \$\endgroup\$ – Chris Stratton Jul 5 '18 at 18:33

This is a commendable desire to emulate your device in development to proceed ahead with software development before the hardware is ready. It is a challenging problem. But you can't simulate a USB device on a regular Windows host. USB host has special functions of "hosting" the bus, which are incompatible with USB slave device functions. No "cabling hardware" can help here. The host functions are hardware-based, usually adhere to strict hardware specifications (Intel EHCI or xHCI), and cannot be turned around.

Some tablets/laptops may have an USB OTG (or dual-role-data function), and act as USB devices if connected to another USB host with correct OTG cable. To make this happen, the system must have an alternative USB device controller, another piece of hardware. However, these OTG Device controllers usually have hardware-predefined structure of endpoints (usually implementing MTP or Mass-Storage Class), and it is very unlikely that the built-in configuration will match your proprietary "embedded EFM32 ARM" enpoint structure, or can be re-programmed.

If your team is designing some proprietary "embedded EFM32 ARM" USB interface, which doesn't follow any predefined USB class, you are out of luck regarding software development in advance. While there are environments that allow virtualization of the system, you will still need to develop a transaction-based model of your "embedded EFM32 ARM" device, which will likely take time, be inaccurate, and can't be trusted. The more natural way would be to get a EFM32 development platform from Silicon Labs, and modify their existing codes to mimic your "embedded EFM32 ARM" device where possible.


Not the answer you're looking for? Browse other questions tagged or ask your own question.