Hacker News new | past | comments | ask | show | jobs | submit login
Intel's Thunderbolt Share lets two PCs control each other over a USB cable (theverge.com)
80 points by Brajeshwar 20 days ago | hide | past | favorite | 76 comments



This is a bit depressing in that it reminds us there are many such obviously basic functions which still aren't built into all PCs, when they should have been a long time ago. Modern tech platforms are so impressively capable that it makes these gaps even more shocking.

I felt the same thing yesterday reading through Google's new features announcement for Android 15. A good third of the features were things where I thought, "How in the hell did this extremely mature platform still not have that?"


> there are many such obviously basic functions which still aren't built into all PCs

You can already manually configure TCP/IP networking to run over FireWire, USB, or Thunderbolt cables connecting PCs or Macs.

However, this assumes you understand enough to manually configure network settings and then manually configure file sharing to run on top of that.

The value add would come from making file sharing dead simple for unsophisticated users while retaining the speed advantage of the Thunderbolt connection.

Something like Apple's Airdrop sets up a temporary adhoc WiFi network and configures its TCP/IP settings for you as well as handling the file-sharing details, but is limited to WiFi speeds. It's a huge ease of use win for unsophisticated users, but if you need to transfer huge 8k video files, you may prioritize speed over ease of use.

Macs also have Target Disk mode that allows you to plug two Macs together using a Thunderbolt cable and have the shared Mac's disk show up in the Finder of the other. It's also been around since the FireWire days, but always on disk encryption means you have to be logged onto the computer before you can share its disk today.

I would assume that this Intel software also handles the details of setting up simple point to point file-sharing for the user, although the article doesn't make this clear.


Thunderbolt-net on Linux will set up a link local ipv6 connection automatically. There's dozens of not hundreds of filesharing options that'll just work from there. Samba being advertised by avahi or systemd.dns-sd will be immediately visible. LocalDrop will work instantly. File Sharing is super solved, albeit not via generally with "slick" drag and drop (Samsung notably has a suite of proprietary protocols which also geant drag and drop across devices too.)

What's actually interesting is literally everything other than networking (already in thunderbolt) and filesharing (good options abound). I'm far more interested in the entire rest of the capabilities than I am the easy already done one: > Install it on two Thunderbolt . . . computers, connect them . . ., and you should be able to share your mouse, keyboard, screens, storage, and other USB peripherals;

That's cool and worth doing and new. That starts to blur the boundaries of what a conventional computer is, draws outside the box of the typical system design. It sounds like an applicationized usb-ip. It sounds like shit MediaTek was trying to make protocols for 9 years ago, CrossMount, https://www.eetimes.com/why-mediatek-pushes-cross-device-sha...


People keep saying that thunderbolt/usb4 networking Just Works, so I went and tried. I plugged my PC (ubuntu 23.10, Maple Ridge) into my NAS (ubuntu 23.10, Maple Ridge) with my good USB4 cable which I just tested to have full connectivity on my LED tester and transfer above USB3 speeds to my NVMe enclosure. No network interfaces appeared. I also tried plugging my PC into my M2 macbook and again no network interfaces appeared on either end. I booted into Windows and tried PC-NAS and PC-Macbook. No auto-configured network interfaces. Windows did make the "connect" sound with the Macbook, but that was it.

Until connecting the computers by USB4 results in:

0. Drivers already installed and configured without additional effort

1. Automatic appearance of network interfaces

2. Automatic configuration of network interfaces for peer connectivity

3. Automatic peer and service discovery on auto-configured network

4. Automatic presentation of sharing options through a popup or other icon

5. At least some of those options actually work.

then it shouldn't be called automatic, "already done," "super solved," or any related phrases. Linux can probably get away with having a few of those steps broken by default, but for everyone else 0-5 above are minimum viable. I'm not even including things that really ought to happen like bad cable detection. The theoretical possibility of getting this to work if you are willing to compile custom drivers, learn an undocumented configuration format, iterate a few times with it, and then proceed to do 1-5 above manually is so far from being minimally viable for public consumption that it might as well not exist and definitely does not deserve any of the praise being heaped upon it here. From the user perspective, it is approximately 0% done, not 100% done.


Based off guides like https://gist.github.com/scyto/67fdc9a517faefa68f730f82d7fa35... it seems likely that thunderbolt-net module isn't being loaded by udev. Or it seems like none of these things you are plugging into are loading thunderbolt networking on their side. Can you try modprobe-ing the module and seeing if you see the network device? Should take nothing more than that

As for network connectivity/configuration, there's going to be a lot of different options depending on daemons. I tend to think NetworkManager is the most likely to do something. But anyone who brings the interface up should get link local which should be good enough for these use cases.


As far as I've seen, you've always had to know enough to manually configure the network settings and then configure file sharing to work on top of that.

Which us why you need those user facing features like Airdrop or Target Disk mode to automatically handle the networking and file sharing details for the unsophisticated users.

Airdrop will continue to work even if there are no existing cellular or WiFi networks available. The devices will just create their own ad hoc WiFi network on the fly, without the user needing to know a thing about how it works.


In the same vein, since I heard about the US Army's 500 PS4 super computer I've thought it should be simple to plug multiple computers together to multiple their power.

Why cant I connect an old laptop, a few old cellphones and a hard drive all together and have one computer use the resources of the other devices? Collectively we have SO MUCH available ram just sitting around unused.


Because it’s not as simple as you’re making it out to be. This is highly workload dependent - you can’t just connect multiple CPUs that are designed to (even with old hardware) have lightning fast connections to their neighboring hardware with a slow USB cable and expect it to just linearly multiply power. The CPUs end up actually running slower because they spend most of their time sitting around waiting for instructions to execute. This even used to be a problem with multi-GPU set ups, just much less of a factor.

This is why cluster computing is far more dependent on software being able to distribute work and load balance than the actual hardware. There exists software where you can connect random devices together in your house over Ethernet and make a cluster.

This is why every supercomputer is geared towards massive number crunching where you can break up the work into many smaller tasks and give each node a task to work on. Cluster computing sucks and is inefficient for anything resembling a normal workload.


> I've thought it should be simple to plug multiple computers together to multiple their power.

It is simple - it's so simple it became a meme: https://en.wikipedia.org/wiki/Beowulf_cluster - almost every Slashdot comments-thread in the early-to-mid-2000s would reference it somehow.

But distributed-computing isn't popular because it just isn't particularly useful for the things people want to do with their computers: combining all of my own computers together isn't going to make watching YouTube any better, not even make my games run faster.


Current day operating systems assume a cache-coherent system. Without that assumption, you're basically just looking at a bunch of networked computers. This is done because you get much, much more performance out of systems like that (see e.g. https://blog.acolyer.org/2015/06/05/scalability-but-at-what-... )

You might enjoy reading about research projects into distributed operating systems, e.g. https://en.wikipedia.org/wiki/Amoeba_(operating_system) , https://en.wikipedia.org/wiki/Sprite_(operating_system) or https://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs


What I would like are networked displays that make it trivial to throw something from one device onto a nearby display. Seamless switching, extending, and duplicating across the various displays.


I remember doing this over null modem db9 serial with Windows kernel programming over 20 years ago.

I'm suspecting there were almost always instrumentation available, albeit not the most user friendly


Windows has supported user-friendly file-transfers using serial and parallel cables going back to Windows 95, under the name “Direct cable connection” - it is unrelated to WinDbg/KD debugging using a serial/USB/Firewire cable though.

I use WinDbg over USB myself - I’m careful with the special A-to-A cable though: you can fry hardware with it.


Most platforms today are mature not because they have a lot of features but they have some features across all kinds of hardware.


It's branded as a thumb drive killer, but thumb drives can force vendors separated by walls of apathy and decades of time to be compatible with each other.

Does this have enough standardization / cross-manufacturer buy-in to make it likely to spread? Or is it an Intel "differentiator" where it will only ever work if you have two Intel laptops in a world where Intel is losing laptop marketshare? Target Disk Mode for Intel? The heavy feature-set makes me worry that this is the reality and that standardization is a pipe dream.


I can't remember where I saw them demo this technology before but the impressive thing is the quality and latency of the uncompressed video stream, which is much better than you would get over ethernet.

Still with limitations like 1080p60 and licensed client apps being required, I don't see this as being all that exciting compared to the variety of existing software KVM software already available. It really feels to me like they have the bandwidth to do better than that?


I wouldn't be surprised if it's ethernet after all. Ethernet over Thunderbolt achieves multiple gigabits, enough for uncompressed 1080p@60Hz.


One of the better possible implementation cases really is usb-ip over thunderbolt-net. https://www.kernel.org/doc/html/v4.19/admin-guide/thunderbol...

For reference, DisplayLink DL-5xxx has been doing 4k over USB since 2014. https://en.wikipedia.org/wiki/DisplayLink#DL-5xxx_(2014)

Linux has had the pieces around for a while. Usb-device-mide gadgets in Linux can be connected to a usb-ip virtual port, so you can share virtual peripherals. The rest is regular networking. Wild but USB gadget mode has been around here and there in laptops for a long long time now, but has rarely ever been used. Here's a steamdeck acting as USB printer, https://hackaday.com/2023/01/31/steamdeck-become-printer/

Getting an add-in card that can do usb-device-mode / usb-client mode can be tricky but is possible. This capability seems standard on most single-board-computers like RPi (since rpi1 iirc?). https://github.com/ufrisk/pcileech/issues/21


Is there any way to use the usb-gadget-mode to have a Linux machine become a webcam?


Sure! There's a USB "uvc" (USB Video Class device) gadget in Linux. https://docs.kernel.org/usb/gadget_uvc.html

There is support in gstreamer. The example shows piping the standard test signal out as uvc gadget. https://gstreamer.freedesktop.org/documentation/uvcgadget/in...

There's various write-ups out there for example using a RPi as a USB webcam, using this. These write-ups cover more of the details of - as an end user - setting up/configuring the gadget device. https://github.com/geerlingguy/pi-webcam?tab=readme-ov-file#...


I recently upgraded my home network and realized my laptop had just gigabit Ethernet.

So I bought a couple 2.5G USB 3 adapters and confirmed: iperf3 reports 2.5 gigabit between my laptop and desktop connected to the same switch.

Much cheaper than getting a new NIC for the desktop.

gigabit Ethernet over a switch under my desk makes nomachine almost pleasant.


So laptops might finally be getting our Ethernet ports back!!!


USB to Ethernet dongles have always been available.

If you mean RJ45 built into the device then I don't see how that's implied by the above comments.


I'll be patiently waiting until some free software thing leapfrogs it in capability and platform support. Mostly because I probably won't own two different devices with thunderbolt/usb4 before then.


I first saw this in an LTT video and I'm super excited.


In a USB type-C universe, why can't I even share files between two computers? If something so basic-and already possible with existing standards-isn't working today, why should I think that an announcement like this is anything more than hot air?


USB is directional protocol so there is always host and devices. USB-C lets devices negotiate the direction for power and data separately. This means that if they were doing USB media, one device has the files and the other can access them.

There used to be cables with USB connectors on both ends and dongle in middle, that did Ethernet between devices. That would be possible to do with USB-C, effectively two USB-C Ethernet adapters connected together. I had never thought to use two USB-C Ethernet adapters with short Ethernet cable, I bet you hadn't thought of it either.

The problem is that this isn't needed very much. Computers are almost always connected to local network, or can make Wifi Direct network if needed. There are programs for making local file sharing but they aren't common enough to rely on them.

It would be nice to have Ethernet over USB without needing adapter and using the high speeds of USB3 and USB4.


I did think about that and ultimately did do that. It's just not what the hardware could do, and it's a crappy solution. I don't often wander around with spare USB NICs, but a double ended type-C is in my standard kit.

There's no hardware reason why two type-C ports couldn't adopt host and device roles and become a NIC. Could be an RNDIS class endpoint or emulate one of the ultra common ASIX ICs. That's basically what my phone does when USB tethering.

Why does my desktop computer do less?


It's a little janky (you have to boot to recovery mode), but you _kinda_ can with modern macs by using Target Disk Mode.

The drive appears as a network share, but it's not bidirectional, in that you can read/write from/to the target device, but the target device do the same to you.


That's undershooting the possibility by a lot. If I plug two computers into each other via USB I would expect the OS on each to establish a network link at the best-available bandwidth.


On Mac, You can establish a thunderbolt-bridge network connection and then share files.

But it's not automatic. You gotta do it manually https://support.apple.com/guide/mac-help/ip-thunderbolt-conn....

I would have expected airdrop to automatically switch to thunderbolt if such a connection exists, but it doesn't.


Unless something has changed in recent macOS versions, by default:

1. Thunderbolt Bridge exists and is enabled.

2. All active (enabled, connected) interfaces get link-local IPv6 addresses.

3. All active interfaces without static or DHCP-assigned IPv4 addresses get link-local IPv4 addresses.

3. Multicast DNS (Bonjour) is enabled.

So basic networking should be automatic, though no file sharing services are enabled by default.


That's great! I wonder when they will automatically switch Airdrop over to thunderbolt when one is available.


I'd like to do this with actual universal serial bus (USB), not peripheral component interconnect express (PCIe) on a universal serial bus connector.


That’s what already happens (at least with TB, USB 4?).

10 Gbps networking. Although it seems to have really high latency for whatever reason.


I'd like it to work USB 1.1 through 3.2, not just Thunderbolt. We have dual role, why aren't we using it? Host side thinks it's talking to a NIC, device side acts like a NIC.


It was weird and cool when using firewire, I connected two powerbooks together, using one as a simple external disk.

TBF though, you could always just set up a mesh network. Wait. Does mesh network functionality still exist?


You can, just use Linux. I transfer files between my laptop and cell phone and other devices all the time.


I recently spent longer than I care to admit researching how to use USB to connect two Linux computers, but without bearing fruit. How do you do it?


What do you do? Samba plus Bluetooth?


Cool. How?


Enable USB debugging on your phone, and then use adb.


That's Android, and not serving the stated purpose of moving files between Linux computers.


I still want target disk mode[0] in the BIOS. It would be so handy.

[0] https://en.wikipedia.org/wiki/Target_Disk_Mode


Also, target display mode (on iMacs):

* https://support.apple.com/en-ca/105126

Personally, I wish iMacs had built-in KVMs: with WFH being more of a thing, it'd be nice to have a giant display that I could use for personal stuff (iMac) and work stuff (plug in Macbook, PC laptop), and auto-switch between the two.

(I personally like the all-in-one solutions of iMacs.)


Would be great to be able to boot a beefy desktop computer from my laptop SSD.


I was so envious of my friend's Macs being able to be used as external storage devices that this may have been what convinced me to buy my first macbook nearly 18 years ago.


you might be interested in https://github.com/poettering/diskomator

tldr: bootable image to expose all disks over nvme-tcp.

Note that authentication and encryption is not yet implemented so I would be cautious, but it's still pretty interesting


Why not NBD? It should be as fast, and there are many more NBD clients.


They get to share raw ram access too. Many may not want that for security reasons. As long as you don't need to share screens and just want to share mouse/keyboard you can do it over TCP/IP with: synergy 1.x, barrier, or input-leap (for the various waylands that support libei). Some of them even include file transfer. But that would be better done with SMB or NFS or the like given the TCP/IP transport between exists.


Got any sources for that?

Thunderbolt has a network mode which does not grant unrestricted DMA, to my knowledge; maybe this is just built on that?


I believe thunderbolt devices are now usually managed with the iommu and have at least some safety mechanisms


Thunderbolt is almost certainly the reason why Intel stopped using IOMMU support for product segmentation and enabled it across the whole product stack, after 2016.


I wonder how likely it is we'll see Thunderbolt become the next big thing in gaming cheats... Eugh, I hope not.


The term for this kind of thing is DMA cheat. It's been around for a while now.


Genius – a GameGenie for PCs!



Minor nit: A thunderbolt cable is not a USB cable. It's a thunderbolt cable with USB-C connectors on the ends.

This won't work with a USB cable.


That was true in the TB3 era.

This will work just fine with a 40gbps USB cable.


Thunderbolt cables are slightly different, but are USB-C cables that support Thunderbolt alternate mode. Thunderbolt 3 uses a higher speed, 40Gb/s, that require tighter tolerances and special cables. There are also Thunderbolt 3 cables that are out-of-spec for USB 3.1 Gen 2. I think can use Thunderbolt on USB3 cables at slower speed.

USB4 unified them, making 40Gb/s standard speed and adding faster speeds. It is still confusing cause USB4 doesn't have to support Thunderbolt 3. Also, USB4 tunnels USB, Displayport, and PCI Express so there is no Thunderbolt alternate mode.


What's a USB cable if not a cable with USB connectors on each end? No industrial consortium is going to tell me what to call my cable.


No, but the USB-IF will make you roll a D20 to determine if the USBC-USBC cable you are holding supports the feature you are trying to use.


Windows-only, unable to share a network connection?

Apple already allows TCP/IP between 2 systems: https://support.apple.com/guide/mac-help/ip-thunderbolt-conn...

And there is this, too: https://hackaday.com/2024/01/16/50-10gbps-mesh-network-uses-...

I was hoping for something like the Craylink cable, where connecting 2 Origin 200s gave you a single system with a single system image (1 kernel) across the two.

"One of the revolutionary features of Origin 200 is CrayLink™ Interconnect, which can connect two towers to form a large, four-CPU shared-memory system that can operate as a single system or as a high-availability cluster. By linking Origin 200 towers via CrayLink Interconnect, both CPU and I/O performance are doubled, thus scaling in all dimensions. " ( from https://www.siliconbunny.com/data_sheets/o200.pdf )


Sadly Apple stopped supporting Target Display Mode on their new machines around a decade ago. It was a super cool feature


If "Windows-only" is a problem (which I agree with), then surely "Darwin-only" is at least as bad.


The networking portion already happens without this app.


Do you mind elaborating? I am not disagreeing with you, but are you saying that I can connect two Windows laptops usung thunderbolt and natively create a local network between them that lets me seamlessly transfer files between them and share the file system+internet access?

I tried googling, and all I found was a bunch of reddit posts and random forum threads where people were trying to do exactly that, but I couldn’t find any confirmation that it would work. And for those users who were proposing workarounds, those required a bunch of steps that didn’t seem to work for users who asked the original question either.


You can create a standard TCP/IP network between two machines using TB, correct. They're treated like any other network adapter, with any other network adapter capability.

How you want to define 'difficult' with regards to file sharing or internet sharing, I'll leave up to the most familiar users of each OS who can argue which is best.


Ah, then I will just assume those reddit and online posts talking about it were either spouting outdated info or were just confused. I would’ve tried it myself, but my last Windows machine was given away last year (voluntarily by me, nothing tragic happened), and I currently have no access to one.

Because if it is as you say (which I am much more inclined to believe than random reddit comments from a few years ago tbh), then yeah, it feels pretty much like parity to the macOS experience with this, minor differences aside (that aren’t really even worth mentioning as points in favor of one OS or the other).




How about the electric potential? What will happen, if the two devices are not on the same power source? I know from early industrial USB devices, there could be a problem sometimes.


Yawn. 1394 had peer-to-peer connectivity and you could network computers together over 1394 and share files just fine. On plan 9 we can share any resource over any bi-directional connection using 9p.


So Intel is introducing a new generation of bad USBs?

Who thought this was a good idea?!?


Maybe that’s the key to AGI, two complementary (adversarial maybe?) models, that “control each other”, to produce a common output

A little bit like the two sides of our brain coordinate to produce one mono-experience out of complementary inputs (two sides of our body)


> Maybe that’s the key to AGI

Get out. Stop trying to make everything about AI.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: