0

I'd like to connect two laptops by a USB A-C cable and pipe data from one to the other. (My goal is to create a second screen from one of the laptops.) C-C cable is not an option, because one of the laptops does not have USB C.

In theory, this should be possible: USB A is for USB host and USB C is bidirectional, so this should be possible. I have found that this is possible for USB C-C cable, but without any details how to establish the connection. I think that I need to setup the laptop with C to behave as USB guest and establish some serial line there.

(I have also read that it is limited to some chips, because some don't support the guest mode. However, this is reportedly likely to be OK on a laptop.)

My questions:

  1. Is this safe? I believe so, but I'd like to make sure first.
  2. How to convince the laptop with USB C to behave as guest and open a serial line there? Ideally, I would do it in Bash, but C is also acceptable.
2
  • USB A to USB A has never been an option either, not without specialized circuitry
    – jsotola
    Mar 16, 2020 at 0:01
  • I know that A-A is not an option. But I would like to connect A-C, which should IMHO work, as C is designed to replace both A and B.
    – v6ak
    Mar 16, 2020 at 4:12

1 Answer 1

1

As the two machines probably both run some kind of Unix and use X11 for graphics I would suggest another solution to your problem, namely connecting the two machines using cabled Ethernet. Either the traditional way through a router/hub or with a single cable between the two (which then needs to create an ad-hoc network using e.g. 192.168.x.y auto-assigned ip-numbers).

When the two can see each other you can open the X11 server on the second machine initially using xhost + and then you can tell applications on the first machine to use that screen instead. A simple way is to run export DISPLAY=second-ip:0 and then invoke programs which then display on the second machine.

Notes:

  • If the machines do not have ethernet ports, cheap USB Ethernet adapters exist. A USB3 adapter can saturate a gigabit network.
  • You will still need to use the keyboard and mouse on the second computer for those programs shown there.
  • xhost + is extremely insecure. You only want to do this on a trusted network! Better solutions exist but this is a start.
  • Window managers might exist that can spread a session over two separate displays. That might be enough for you. I do not have experience with that.

Please let us know what worked for you.

6
  • 1
    A replacement for the really really insecure xhost + is to use ssh -X which encrypts and forwards X11 connections.
    – Ned64
    Mar 15, 2020 at 22:21
  • @Ned64 at a price! Additionally this approach does not help towards having machine one using machine two as a second display only. Mar 16, 2020 at 0:12
  • While the USB3-Ethernet adapters are cheap, it would require me to buy it, but going outside is not much recommended in my area. Also, I want to do this on QubesOS, which means I have a separate VM for network and separate VM for usb and separate VM for GUI. I can kind of pipe between VMs and I would be probably able to find a solution if I was also able to pipe between laptops Also, you have noted other issues.
    – v6ak
    Mar 16, 2020 at 4:33
  • @v6ak you want to do a very non-standard thing and you don’t mention these details until now? I think you are in an uphill battle! Adapters can come by mail. Mar 16, 2020 at 6:15
  • @ThorbjørnRavnAndersen Well, I wanted just to ask about piping some data from one laptop to the other. The note about my use case was there rather for the context to have an idea about the bandwidth and latency requirements. Yes, I can get the ethernet adapter is some other way, but there are other problems. So, thanks for the effort, but I am not going to use the solution.
    – v6ak
    Mar 16, 2020 at 10:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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