Seeking software/drivers for USB to USB connection, using a PASSIVE cable, between computers
Even if someone were to avoid this search for a compliant USB-A to USB-A cable there is still the obvious application of the USB spec to connect two computers with a USB-C to USB-C cable, or a USB-A to USB-C cable, for a high speed connection between computers. But if anyone were to connect computers this way the operating systems would not allow communication. If someone were to try this between two Apple computers that supported the ThunderBolt protocol over their USB-C ports this would work, but that's not USB and that's specific to Apple computers.
Perhaps the next obvious question is, why bother? If all someone cares about is a connection between Apple computers then this isn't even a concern. If there is a desire to do this between computers with different operating systems then just create a cable with two USB to Ethernet adapters and an Ethernet crossover cable. This is assuming that only USB ports are available, which certainly isn't always the case. What is happening though is many computers, especially laptops and tablets, there may only be USB ports for bi-directional communication.
One reason to want a direct connection by USB is cost. A couple USB to Ethernet adapters and an Ethernet cable would cost less than $50 if going for a gigabit connection, which is certainly not all that bad. If someone wanted a 10G Ethernet connection then that's going to cost hundreds of dollars for the adapters and cable, which is something one might not do on a whim but still not completely unreasonable. A USB cable capable of 5G or 10G speeds is much closer to that $50 range than it is to that of the 10G Ethernet connection. A cable with USB-C on one end and USB-C or USB-A on the other is something everyone reading this already has, so if such a cable allowed for a host to host connection then there is no added cost for added capability. There are special purpose cables with USB-A connections on each end built for this specific use but this is a cable with just one purpose, and they are not often all that cheap.
Another reason to want this is speed. While a gigabit Ethernet connection might be sufficient, and again those reading this likely have a couple USB to Ethernet adapters lying about so this costs nothing, it would be nice to have greater speed.
Perhaps the biggest reason is convenience. An Ethernet connection is relatively cheap, and fast enough for most uses, but this means having another set of cables and adapters on hand to make this connection. I'm sure people that use computers daily will have a USB cable within easy access but not perhaps extra Ethernet adapters. Since computers are getting smaller, and wireless communications more common, finding Ethernet ports built in to our devices is becoming more rare. Certainly wireless communications allows for simple file transfers and such but this can take time to set up, and if there is interference the connection might not be stable or fast. Wireless communications is also not always secure unless care is taken. But a wired connection should be far more simple, faster, secure, and cheap.
So where is the software or drivers to allow for a host to host connection over USB? The USB spec has had this function spelled out in their USB 3.0 specification back in 2011. Apple has had this host to host connection capability built in to their systems going back to nearly the first days of the Macintosh, just not for USB to USB. While computers have had ports of various kinds disappear from them the USB port has been ubiquitous for nearly a decade, and is not likely to go anywhere soon.
Has someone written such software for Windows and/or Linux and I just didn't see it? If this does exist then does it allow for cross platform communications? This would require software for Apple computers too since this host to host capability by USB-C ports is using the ThunderBolt protocol, not USB. If this existed for the macOS then this would allow host to host communications on pre-USB-C systems with USB-A 3.x ports.
I've searched the Internet for software to make this happen, and many others have asked this question, but all I see is one of three responses. The most common response is that the USB spec does not allow for this. This is not true, it's in the spec and it has been for years. Another common response is to use an Ethernet connection, one of those USB bridge cables, or some other work around. This is either not as fast as a direct connection could be, or more expensive. A third common response is that this is a stupid question and those asking this should feel ashamed for bringing it up.
Well, maybe this is a stupid question but I'm asking anyway. I bring this up here and now because I've seen a number of cases recently where this would have come in handy. I'm also hoping that enough time has passed since this question was first asked that someone has come up with the drivers and/or software to make this work.
I also bring this up to dispel the myth that the USB 3.x spec does not allow for a host to host connection. It's there in the spec, though perhaps hard to find. I found the appropriate document on the Wayback Machine (Link -> https://web.archive.org/web/20140519092924/http://www.usb.org/developers/docs/documents_archive/usb_30_spec_070113.zip ) and the section that talks about a USB host to USB host connection is 5.5.2 on page 5-38. In the days of USB 1.1 and 2.0 the possibility of a host to host connection was impossible, and people were discouraged to not try this as noncompliant cables were everywhere and were prone to damage computers. Because of the problem of fried computers this is still discouraged, but with USB-C ports replacing all other ports and cables being so inexpensive the ability to create a host to host connection by USB would be something very convenient and useful for many.
If someone has made the software for a host to host connection by a passive USB cable then where can I find it, and how can I make it work?
Comments
-
JDMurray Admin Posts: 13,099 AdminSomething like this: https://www.datapro.net/products/usb-2-0-host-to-host-cable.html
Maybe if you gave a short bullet list of your requirements the TL;DR response could be mitigated.
-
MacGuffin Member Posts: 241 ■■■□□□□□□□JDMurray said:Something like this: https://www.datapro.net/products/usb-2-0-host-to-host-cable.html
Maybe if you gave a short bullet list of your requirements the TL;DR response could be mitigated.
That cable does in fact connect two computers together by USB. What is not in the title, but perhaps should have been, was the requirement that the connection provide gigabit level data rate transfers using USB 3.x. USB 3.x provides data rates at 5Gbps, 10Gbps, and (fairly recently) 20Gbps, and it's getting this kind of speed with a cable that costs less than $20 that's the ultimate goal.
Finding a cable is not the problem.
This is a passive C to A cable: https://www.datapro.net/products/usb-3-1-type-a-to-type-c-male-male-cable.html
This is a passive C to C cable: https://www.datapro.net/products/usb-type-c-male-male-cable.html
This is a passive A to A cable: https://www.datapro.net/products/usb-3-0-super-speed-a-a-debugging-cable.html
Use any of those cables to connect two computers together, excepting two computers that support Thunderbolt over USB-C, will not create a useful data path between them. Where can I find the drivers and/or software to do something useful?
The product description for the A to A cable links to a MSDN article on how to use the cable for kernel debug. I'm certain that's a useful feature for some, but this seems like the best we can get out of this. What would make this far more useful is a means to use this cable more like a high speed serial crossover cable, or like an Ethernet crossover cable. Something that does not require editing system files and a reboot to get working.
Much of my original post is discussing why this came to mind, why I believe many others would find this useful, and my frustration on finding an answer. Your response fell into one of the typical categories of non-answer answers I've got before, which I anticipated might happen in my original post. I guess that's better than no answer at all.
Did I make this clearer for everyone?MacGuffin - A plot device, an item or person that exists only to produce conflict among the characters within the story. -
MacGuffin Member Posts: 241 ■■■□□□□□□□thomas_ said:Have you tried searching Github?
I've seen others post this same question before on various places on the web. There's a lot of discussion on workarounds, but those will always require extra hardware that people may not have on hand. Even then there's a compromise on data speed since this isn't a native USB 3.x connection, often a 100Mbps or 1Gbps Ethernet instead. We should be able to do 10 times better than that without spending a small fortune on hardware.
I'm guessing that if this was on Github then someone would have mentioned it before in one of my many searches on the topic. If it is there then I'll need something to raise my signal to noise ratio to find it. Even then, if it's there and I find it, then I'm likely to have other questions on getting it to work for me.MacGuffin - A plot device, an item or person that exists only to produce conflict among the characters within the story. -
thomas_ Member Posts: 1,012 ■■■■■■■■□□I don't know if it exists either. I think your best bet would be to search specific tech sites and forums using google's "site:example.com" operator to narrow your search to that site or using the site's built in search operators.
It sounds like a fairly unique use case since you're having a lot of time finding stuff. You might have to learn how to program and to make it yourself. A five-minute search using "site:stackoverflow.com peer to peer usb connections" without the quotes on google produced this link:
http://thecodewash.blogspot.com/2017/05/communicating-with-your-ios-app-over.html
It's for IOS communication, but maybe you can leverage their methodology and write a program for the computer on each side of the link. This assumes that your assertion of their being a specification for the direct connection of two computers is correct. I haven't dug into the specification to confirm. -
MacGuffin Member Posts: 241 ■■■□□□□□□□thomas_ said:It sounds like a fairly unique use case since you're having a lot of time finding stuff.
Well, yes and no. Whenever this comes to mind and I run a search to see if there's been anything new on this I will find more and more people asking. The responses are mostly the same predictable non-answer answers I mentioned before. I just ran another search and I'm at least seeing people that recognize that the USB 3.x spec supports this, often with some commentary that this is likely not available because of some hardware limitation. I don't know if this is true. Maybe to get this to work one or both computers has to support USB-OTG or some other optional part of the spec. This might be true for the computers to recognize that a proper cable was connected. Even so this should not prevent such a connection from working, not any more than having a serial cable from doing the same. The connection could be done "blind" by having one computer just send stuff and hope the other computer gets it. The connection could have a "handshake" to establish communications, like any of a number of protocols that talk over serial or other lines.
thomas_ said:You might have to learn how to program and to make it yourself.
The thought has crossed my mind. I've written lots of code before but this is well outside of my comfort zone. I've written code in quite a few different scripting languages, a couple hardware description languages, and I know enough C and Java to be dangerous. I haven't written drivers before, and I don't know where to even begin.thomas_ said:A five-minute search using "site:stackoverflow.com peer to peer usb connections" without the quotes on google produced this link:
http://thecodewash.blogspot.com/2017/05/communicating-with-your-ios-app-over.html
Using "peer to peer" didn't give me much that was helpful. Using "host to host" gets more that is on topic. I'm still seeing a lot of people believing the lie that a direct USB host to host connection would violate the USB spec. What is encouraging is seeing more people recognizing that a direct host to host connection would not in fact violate the spec. What is discouraging is that nobody knows where to find the right software, or know if such software exists yet.
By limiting my searches in time, to the last year or so, I'm seeing less mention of USB 2.0 bridge cables and more mention of USB 3.x bridge cables. Cables like this one:
https://www.startech.com/Networking-IO/USB-PS2/usb-file-transfer-cable-windows-mac~USB3LINK
At least people aren't still mentioning the very old and slow USB 2.0 bridge cables as often. This is at least a cable the can transfer data at 5Gbps. A passive cable though could get up to four times the data rate at one quarter the cost. That's like 16 times better.
I guess I could buy that cable and hopefully remember to take it with me at times I think I mind need it. The point of this all was to avoid having to get a cable that was so expensive, rare, and slow. A cable that I'm unlikely to have when I need it, unlikely to find in stock at a brick and mortar store to get a replacement on short notice, and too expensive to leave behind for others to keep "just in case".
As I keep looking I'll post on different forums like this to hopefully prompt someone to write the software I'm looking for. That is one reason I brought this up here, to let people know that this is possible. If people keep believing the lie that is being perpetuated, that such a connection would only fry the computers, then people that might have the skills to write the software won't bother. By knowing it is possible then I'm hoping this drives demand and therefore creates the supply.MacGuffin - A plot device, an item or person that exists only to produce conflict among the characters within the story. -
JDMurray Admin Posts: 13,099 AdminI would suggest finding a USB hardware developers forum and asking why your data transfer requirements using a PASSIVE cable are not available or even possible.
-
thomas_ Member Posts: 1,012 ■■■■■■■■□□@MacGuffin - You're right "host to host" is a better search term. I was looking at the specification last night and came up with that search term as well. I did find a crossover cable, but you're still left with the driver problem. You would most likely still have the issue of taking the cable that specific cable with you everywhere or buying multiple cables so you always have one available:
https://www.datapro.net/products/usb-3-0-super-speed-a-a-debugging-cable.html
Jan Axelson, the author of some USB development books, seems to concur that host to host is possible and supported by the spec:
http://janaxelson.com/usb3faq.htm#ca_direct
"Can two SuperSpeed hosts connect directly to each other?USB 3.0 defines a new crossover cable with a Standard A plug on each end. The cable does not include VBUS, D+, or D- wires. The SuperSpeed transmit and receive wires are cross-connected to route each output to its corresponding input. The specification says the cable is intended for OS debugging and other host-to-host applications. The cable won't hurt USB 2.0 hosts because the only line that connects on these hosts is GND. USB 2.0 does not have a legal host-to-host cable except for bridge cables that contain two device controllers with a common buffer."
Maybe his books are a good place to learn how to develop the drivers/application yourself?
I did a search for usb superspeed host to host application and it turned up Prolifics PCLinq5 program, but it appears to need a special cable to do the transfer. However, I'm not sure if that's because they have multimode transfer modes to choose from and how the device presents itself to the computer or if there is something else preventing host to host with a passive cable.
Maybe the issue isn't necessarily getting it to work, but getting it to work consistently across devices using different chipsets?
Prolifics website makes mention of the Windows Easy Transfer program. They mention that Windows 8.1/10 don't have it and you have to copy it from a Windows 7 or Windows 8 computer to your windows 8.1/10 computer. I would be interested in seeing if using that program with a passive USB 3.0 crossover cable actually worked. I'm leaning towards it not working for whatever reason since other people would already be doing it by now.
Microsoft does seem to have a lot of pages dedicated to USB development:
https://docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/
and they do have some sample drivers:
https://docs.microsoft.com/en-us/samples/browse/?redirectedfrom=MSDN-samples&term=usb
-
MacGuffin Member Posts: 241 ■■■□□□□□□□JDMurray said:I would suggest finding a USB hardware developers forum and asking why your data transfer requirements using a PASSIVE cable are not available or even possible.
One thing about the hardware is that with a USB A to A connection there's no pins to indicate a device was connected. USB C has the pins and uses them to allow the devices to negotiate the capability of each device, or gives some indication of what connection is on the other end. (Since USB-C can handle a number of protocols then the cable will indicate if it's supposed to do USB, DisplayPort, ThunderBolt, etc.) For a USB A to C cable the cable is wired to tell the USB C device that there's a USB A plug or port on the other end and so the computer or device knows to look for a voltage on the Vbus line, or for something on the D+/D- lines. With the cable setting the USB C port into host or client mode there's no risk of shorting out the power supply.
I have a guess why Microsoft buries their USB A to A connection support in their technical support documents for software developers. Liability.
There's simply a lot of trash cables out there that wire up the connectors in ways not intended by the USB group. It's inevitable for someone to buy a $5 cable, plug it into their computers that cost a kilobuck each, and then when they let the magic smoke out they come crying to Microsoft, Apple, or whomever has deep enough pockets to hopefully fix their screwup.
It's simply easier to not offer the feature to discourage the support nightmare that is nearly inevitable to come. This however does not prevent software developers from writing this on their own. Given the popularity of USB C ports now the risk of someone shorting out their kilobuck laptops should be far lower, and if someone does then it's not the fault of Apple, Microsoft, or whomever that wanted to avoid this liability.MacGuffin - A plot device, an item or person that exists only to produce conflict among the characters within the story. -
JDMurray Admin Posts: 13,099 AdminMacGuffin said:JDMurray said:I would suggest finding a USB hardware developers forum and asking why your data transfer requirements using a PASSIVE cable are not available or even possible.
The people who write the cookbooks for USB hardware understand the requirements of the driver(s) that you are seeking and will have written such drivers to test their hardware designs.
You are asking about hardware driver development on an IT certification Website. Why are you avoiding the hardware and kernel-mode information sites and the developers that can help you much better? -
MacGuffin Member Posts: 241 ■■■□□□□□□□thomas_ said:
I did a search for usb superspeed host to host application and it turned up Prolifics PCLinq5 program, but it appears to need a special cable to do the transfer.
As I recall the Windows Easy Transfer program makes use of a number of different kinds of connections between computers. This goes way back and those that have been in the IT business long enough will know the name "LapLink" as the company that made most of these cables. It looks like they are still around and making cables.
https://web.laplink.com/cables/
What they made in the beginning were serial crossover cables and specialized host to host parallel cables for data transfer. It looks like now they use Ethernet and USB cables with Prolific chips. Those old LapLink cables had quite a following, and perhaps still do. They were simple for someone to build on their own, required no active components, were quite fast for the time, and because the hardware in the computer was so simple people could write drivers to make this work in little time. People found all kinds of creative ways to use these LapLink cables. Things like making head to head games, and utilities to share internet connections.
I'm guessing that a company like LapLink has the resources to write software to use a passive USB cable for transferring data. I'm guessing they don't because of the liability problem I mentioned in my previous post. If they state that their software is only for their hardware then if someone fries their computer with a cheap cable then it's on them.
Also, it's probably easier to make money selling $50 active cables than selling $15 passive cables that are no different than what people could buy on Amazon for $8.
My guess is once someone takes the leap of making drivers for a passive USB cable then these active cables might just disappear off the market. As I recall Ethernet nearly put LapLink into bankruptcy, they had to get creative on selling software to stay in business. Microsoft including the Easy Transfer utility in Windows that duplicated much of what LapLink sold didn't help.
The Prolific chip gives two things that a passive USB cable would not. It allows for a fallback to a USB 2.0 bridge mode, it would be slow but it would work. If both computers support USB 3.x then the chip tells both computers that there is an active connection and which "mode" the connection should take, a "serial like" mode or an "Ethernet like" mode. The right software with a passive cable should allow for this same capability, but without that chip in the middle the detection of an A to A cable being connected might be difficult.MacGuffin - A plot device, an item or person that exists only to produce conflict among the characters within the story. -
MacGuffin Member Posts: 241 ■■■□□□□□□□JDMurray said:You are asking about hardware driver development on an IT certification Website. Why are you avoiding the hardware and kernel-mode information sites and the developers that can help you much better?MacGuffin - A plot device, an item or person that exists only to produce conflict among the characters within the story.
-
MacGuffin Member Posts: 241 ■■■□□□□□□□I forgot to comment on this earlier.thomas_ said:I did find a crossover cable, but you're still left with the driver problem. You would most likely still have the issue of taking the cable that specific cable with you everywhere or buying multiple cables so you always have one available:
Passive and USB compliant A to A cables are rare but suitable A to C and C to C cables are everywhere and inexpensive. I can be fairly certain that if someone doesn't already have such a cable then there is a big box store, cell phone store, or even a lumber yard or grocery store, that is nearby and has the cables in stock. Care would still have to be taken in seeking out the right cable. Most A to C cables are made for charging a cell phone, not for data transfer. These cheaper USB 2.0 cables will sell for something like $8, but the USB 3.x cable will be more like $20. They would be cheaper from an online retailer but this is about getting something that will let two computers talking to each other on short notice. If there's time to wait then, sure, the active cable is an option. But if the driver for a passive cable is available for download, even if I have to pay as much as for this software that I would for having the active cable shipped to me, then I've still solved my problem far more quickly even if I didn't save any money.
As for keeping the cables on hand I don't see that as much of a concern. If someone has a laptop with only USB C ports then only two cables need to be kept at hand, a USB C to C to connect to computers with only USB C ports, and a USB C to A cable for computers with only USB A ports. If someone has a laptop with both USB A and USB C ports on them then one cable, USB C to A, will be sufficient. Because such cables support charging a cell phone from a USB wall wart, computer, or USB port in a car or plane, then this is something people are likely to keep close. Again this cable would need to have the USB 3.x Superspeed wires, not just the USB 2.0 wires like the cables that typically come with a cell phone. Just leave the USB 2.0 cable at home, keep the USB 3.x cable with the cell phone charger, and if this cable is needed then "borrow" it from the phone.
The hard to find passive USB 3.x compliant A to A cable would only be needed in the increasingly rare case of both computers lacking a USB C port. Given that they are about 1/3rd the price of the active cable then I can have three on hand instead of just one for the same price. A passive cable would not only be cheaper but also faster, so long as both computers support the higher data rates from USB 3.1 or 3.2.
I believe a lot of people would find this very convenient. Again, I understand that there are hardware solutions for this. There are active USB A to A cables. Using Ethernet will also work in many cases, even if that means having to buy an Ethernet adapter for one or both computers. Serial cables have been used for a very long time to resolve this, and finding the software for that is likely trivial to find and use. All of these solutions cost more and are slower than if there was software for a direct USB connection with a passive cable. A passive cable for this is likely something everyone reading this already has, and therefore costs effectively nothing. And zero dollars is less than the $50 for the active cable, and nobody would have to worry about leaving it at home when it's needed most.MacGuffin - A plot device, an item or person that exists only to produce conflict among the characters within the story. -
bigdogz Member Posts: 881 ■■■■■■■■□□I have just used the Ethernet / USB cables and adapters because it was easier and I really did not want to buy a Laplink license.You took me way back... thanks.I never really had a need/want. Most of my work at the PC level is just taking the image from one PC and send it to another. I never really cared about the speed because I get paid by the hour and I am working on other tasks while the transfer is made. I never made it a priority.
-
MacGuffin Member Posts: 241 ■■■□□□□□□□bigdogz said:I have just used the Ethernet / USB cables and adapters because it was easier and I really did not want to buy a Laplink license.You took me way back... thanks.
I don't recall anyone having a license for LapLink, but nearly everyone had a LapLink cable. Or at least that's what people called them even though LapLink didn't make them. I don't mean people pirated the software, thought that probably happened too. What I mean is people would buy a cable with identical function to the LapLink cables and use them for a variety of things besides what LapLink originally intended.
I had an Apple computer at university, as did several of my friends. When we realized that the serial cable used for a printer could be used to connect two computers together then we had all kinds of fun with head to head games. Being cheap university students this was very nice since we didn't have to invest in any additional hardware. We didn't need an Ethernet hub or anything, just had to borrow the cable to the printer for gaming.
(Perhaps I need an aside for the old Mac illiterate. Apple used the RS-422 serial port for their early Macintosh computers. The way the port was defined all the cables were crossover cables, just like USB C to C cables are defined today. Plugging two modem ports together made it a null modem cable. Plugging two Localtalk/printer ports together created a network. I still needed a null modem adapter, or so called "serial LapLink cable", if I wanted to connect my Mac to an IBM PC compatible computer.)
I think you are on the right path of where I'm going, just think past the LapLink software and what people used the cables for besides the LapLink software. While the cables were often called "LapLink cables" I cannot recall a time I saw anyone using them for their original intended purpose.bigdogz said:I never really had a need/want. Most of my work at the PC level is just taking the image from one PC and send it to another. I never really cared about the speed because I get paid by the hour and I am working on other tasks while the transfer is made. I never made it a priority.
I'm seeing fewer computers with Ethernet ports built in, to be replaced with wireless and USB C. The parallel port disappeared from computers long ago. If I have a computer with a serial port then it's something I would not even think of using if given any other option because of the slow speed. There's really no direct replacement for the old LapLink cables today. With that loss is that the convenience is lost too.
It's often hard to get hardware requests past the management, especially if the hardware is a matter of convenience for people in the IT department and not a vital business operation. A request for a $50 LapLink cable will get questions, and near certain denial. A request for a $250 USB C drive and $20 USB A to C cable to connect it might not even make them blink, just include a note that the drive is used to store drive images for deployed PCs and the extra cable is so it can be used on older computers with only USB A ports. But that $20 cable, with the right software, will do well in connecting two computers just like I discovered with that printer cable long ago. The USB C to C cabe that comes with the drive would serve the same purpose for newer computers with USB C ports. Of course the cable would still be used with the drive as stated on the purchase request, it's just that there's another use for the cable besides what was on the note attached to the request.
Even in an IT environment this use of a passive USB cable to connect two computers should be very convenient, and I could give numerous examples on how this would have come in very handy in the past. If you don't see this as useful then, again, think back to the numerous uses for LapLink cables decades ago. This would be the modern interpretation of that. If you still don't see it then I'm not sure what to say.
I did a bit more searching on this last night and I found more requests for this feature. I also saw that USB4 promises to support host-to-host connections. Since this was already an optional feature in USB 3.x then I must assume that they mean to make this a required feature, define it in a way to make this easier, and/or merely advertise this feature more to compete with ThunderBolt and such.
Even if this makes it into the USB4 spec then the question is if this will be rolled back into the drivers for existing USB 3.x hardware. There would be an incentive to keep this to new hardware so new hardware sells better, but then if new USB4 systems cannot create a host-to-host connection with existing USB 3.x systems then the feature isn't all that valuable. My concern is really about using this on existing hardware. If I need a new computer to make this work then I'll just buy one with ThunderBolt and not worry about if this works with USB.
That was a longer post than I intended. I guess that's what happens when I keep getting interrupted and think of more to add while away from the keyboard.MacGuffin - A plot device, an item or person that exists only to produce conflict among the characters within the story. -
bigdogz Member Posts: 881 ■■■■■■■■□□Laplink came in a box with the software and cable back in my day.Being questioned on buying Laplink is crazy. You may want to talk to management on that one. I guess I have to consider myself lucky. We do what it takes to get the job done within reason.
-
MacGuffin Member Posts: 241 ■■■□□□□□□□bigdogz said:Laplink came in a box with the software and cable back in my day.
Once people found uses for these cables outside of the LapLink software they became a very useful tool for IT pros and cheap university students. This created a market for generic copies. Ethernet, FireWire, ThunderBolt, and other such cables/protocols replaced the old serial, parallel, and whatever cables. Even these newer ports are getting hard to find on computers now, it's just USB on most computers any more. This is why I was looking into software like what I remember from long ago, something to turn today's equivalent to a cheap serial printer cable into something useful for creating a small network. The USB hardware can do this, if there isn't software to make this work then there should be.bigdogz said:Being questioned on buying Laplink is crazy. You may want to talk to management on that one. I guess I have to consider myself lucky. We do what it takes to get the job done within reason.
It is crazy, but it happens.
I'm not saying this would be wise to deny the purchase, only that it would be far easier to get if there was a cable that did the same thing at half the price of the alternatives, and did so at twice the speed. Any company that has the option for something that costs less and does the same thing would be stupid to take the more expensive option.
Once again my speculation is that the liability and support nightmare of people using the wrong cable and complaining is why we haven't seen software for passive USB to USB cables yet. While USB C removes the threat of damaged hardware (well, mostly) it doesn't remove the support nightmare of people using the wrong cable (such as those only intended to charge cell phones).
Whenever this comes to mind and I do another search I find more people asking about it and hints of people working on solutions.MacGuffin - A plot device, an item or person that exists only to produce conflict among the characters within the story. -
thomas_ Member Posts: 1,012 ■■■■■■■■□□I found this while farting around online and if true seems to be the best explanation why passive cables wouldn't work:
https://superuser.com/questions/1080002/usb-3-1-type-c-host-to-host
"The MSI mainboard and the Razer laptop are both USB HOSTS. The connection between two USB link "partners" can be only if one is HOST, and the other is DEVICE.The Type-C USB specifications do define so-called DRD - Dual Role Data ports, which can turn itself into being a host or device. However, to have such dual-role functionality from a PC, the system must have TWO USB controllers inside, one acting as xHCI-compliant HOST, and another IP (piece of silicon) that can act as USB device (with all necessary attributes as USB class etc.) The external Type-C port then is internally multiplexed into xHCI or DCI hardware block depending on cable identification rules. The mainstream desktop systems do not have this functionality designed in, but all Intel systems that targeted "mobile space" (Atom line of SoC) usually do have this dual-role functionality.So the answer to the first question is: yes, you can try to connect both systems with C-C cable, but chances of data transfer are slim, unless the one of systems clearly identifies itself as Dual-Role system (aka "OTG") in its datasheet.Even if a silicon hardware does have this internal USB capability, the system must provide proper handling of Type-C CC (communication) channel, to determine the role of ports, and engage proper software stack. The Type-C port must be designed in a way that no VBUS power is applied until a cable is plugged in, and both ports sort their identities out. Host ports have CC pull-ups, while device ports have 5.1k pull-down on their CC pin. If both ports have the same "gender role", VBUS power shouldn't be turned on. So the answer to the second question is - if both systems are USB-IF certified, there should be no concern of VBUS power collision.The answer to the third question is negative, there is no need in any "crossover cable", all crossover is handled in muxes behind the Type-C connector. If both ports are DRP, they will periodically advertise their identity, and the result will be selected at random"
Assuming the above explanation is true, I'm wondering a USB OTG cable would solve the issue? On Amazon they are between $5 - $10 which is significantly cheaper than the active cables. It's probably doesn't meet your passive cable requirement, but it's not much more expensive, if not less expensive, than a regular USB cable. If it did work, then it would most likely just work on its own without needing a driver. As a result, you wouldn't have to try to search for drivers/programs. -
MacGuffin Member Posts: 241 ■■■□□□□□□□thomas_ said:I found this while farting around online and if true seems to be the best explanation why passive cables wouldn't work:
https://superuser.com/questions/1080002/usb-3-1-type-c-host-to-host
The reason that connecting two USB 3.x compliant hosts together by their USB C ports does not establish a communications channel is because the software to implement this feature is not there.
Perhaps a different kind of passive cable would be needed than the kind someone might use now to connect a USB 3.x host to a USB 3.x hard drive. One possible means to construct this cable is by taking one of those USB A to A cables, the kind that has wires on only the Superspeed and ground lines, and put a USB C to USB A adapter on each end. For a USB C port to comply with the USB 3.x spec it must act exactly like a compliant USB A port when that USB A adapter is connected, therefore since such cables can be used for Windows kernel debugging by computers with USB A ports then this will work for computers with USB C ports with the adapters.
If a special USB C to C cable is needed, and I have my doubts, then the cable would need to put both computers in to host mode to emulate the function of the USB A to A cable used for Windows kernel debugging. The link you gave describes how this mode setting is done passively.
Perhaps putting one computer in device mode might make connection setup easier. A USB C to C cable could be constructed in a way that one end is wired to tell one computer to be the host and the other to be the device.
A computer able to put a USB C port into device mode is a common occurrence, it is in fact required for a laptop to charge it's batteries from a USB C port. To emulate this kind of cable would only require taking a standard USB A to C cable, the kind one would use to plug a USB C hard drive into a computer with a USB A port, and then putting a USB C to A adapter on the end, the kind one would use to plug a USB A hard drive with a captive cable into a computer with a USB C port. This constructed cable will allow me to charge my laptop from a USB C power brick (slowly, as this connection would only support 12 watts because of the USB A connection in the middle). Flip that cable around so the host end is plugged into the laptop and the device end in the power brick and nothing happens. Connect two laptops together with this USB C to A to C cable and nothing will happen, except perhaps the device mode laptop will draw power from the host mode laptop.
The reason that there is nothing happening between the host laptop and the device laptop, other than power being transferred, is because the feature of data transfer was not implemented in software.
The USB 3.x A to A cable used for Windows kernel debugging lacks the wiring to tell a computer to put a port into device mode because by definition a device with a USB A port will be the host, therefore putting either computer into device mode is not required to establish communications. This is overcome in software by telling the "device" computer (the one from which debug information is sent) that it needs to send data on the Superspeed data lines without regard on if a cable was detected on that port. The "host" computer (the one receiving the debug information) is likewise configured to expect data on the Superspeed data lines with no regard on if a cable was detected.
Since people are already using USB 3.x host ports to communicate between two computers, with USB 3.x A ports and passive cables, then the same would be true for communications between computers with USB 3.x C ports.
A passive host to host USB C cable would be no different than a passive host to host USB A cable with USB C adapters on each end, the connection would then have to be established in software. This is without a doubt less convenient than a cable that was wired to allow both computers to detect that a cable was plugged in.
A passive cable that sets which end is for the host and which is for the device might simplify the use of the cable for computer to computer communications but that means this is still a cable with limited utility outside of this one function. A solution that requires special purpose cables would be less desirable to one that allows for general use cables.
A standard USB C cable allows each computer to negotiate which is the host and which is the device. This kind of connection already works for connecting computers to negotiate power delivery. This can lead to some frustration as this could lead to computers providing power instead of receiving it as desired. This undesirable behavior can be resolved in software. A hardware solution also exists to avoid power being transferred, using a passive cable like I described earlier that lacked the power delivery lines.thomas_ said:The answer to the third question is negative, there is no need in any "crossover cable", all crossover is handled in muxes behind the Type-C connector.
There is no need for a "crossover cable" if one or both computers has a USB 3.x type C port. Every USB 3.x cable crosses over the data lines. The muxes behind the USB C port has nothing to do with this.
The concept of a "crossover cable" for USB A to A connections has little meaning as there is only one kind of cable that complies with the USB 3.x spec, one that crosses over the data lines. I can imagine people might call these A to A cables a "crossover cable" to distinguish them from noncompliant cables that wire everything straight through.thomas_ said:Assuming the above explanation is true, I'm wondering a USB OTG cable would solve the issue?
It would not. USB OTG cables lack the Superspeed lines that are being sought out here. USB OTG cables support only USB 2.0 data speeds. The problem is not a lack of suitable hardware, the problem is a lack of suitable software.thomas_ said:If it did work, then it would most likely just work on its own without needing a driver. As a result, you wouldn't have to try to search for drivers/programs.
This functionality will absolutely need a driver. Perhaps this could be a driver that allows one computer to emulate a device for which the other already has a driver, therefore needing something specific only on one computer. Perhaps both computer will need a driver to implement a new protocol. As established by Microsoft's use of a passive USB cable for kernel debugging we know that the required hardware is only a USB 3.x compliant port and a passive cable. The software to use these ports to communicate from one USB host to another exists in many different versions of Windows for desktops and servers, but this software is limited in function to only providing kernel debugging.
To get the desired functionality will require software, and only software.MacGuffin - A plot device, an item or person that exists only to produce conflict among the characters within the story.