2

I'd guess lspci would be the tool to do this but I can't seem to find any identifying output. Is there a way to know from the command line whether a Thunderbolt port is present on a machine?

I have one computer that I know has a Thunderbolt port and lspci shows this:

00:00.0 Host bridge: Intel Corporation Device 3ec2 (rev 07)
00:01.0 PCI bridge: Intel Corporation Skylake PCIe Controller (x16) (rev 07)
00:02.0 VGA compatible controller: Intel Corporation Device 3e92
00:08.0 System peripheral: Intel Corporation Skylake Gaussian Mixture Model
00:12.0 Signal processing controller: Intel Corporation Device a379 (rev 10)
00:14.0 USB controller: Intel Corporation Device a36d (rev 10)
00:14.2 RAM memory: Intel Corporation Device a36f (rev 10)
00:15.0 Serial bus controller [0c80]: Intel Corporation Device a368 (rev 10)
00:16.0 Communication controller: Intel Corporation Device a360 (rev 10)
00:17.0 SATA controller: Intel Corporation Device a352 (rev 10)
00:1d.0 PCI bridge: Intel Corporation Device a330 (rev f0)
00:1f.0 ISA bridge: Intel Corporation Device a306 (rev 10)
00:1f.3 Audio device: Intel Corporation Device a348 (rev 10)
00:1f.4 SMBus: Intel Corporation Device a323 (rev 10)
00:1f.5 Serial bus controller [0c80]: Intel Corporation Device a324 (rev 10)
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (7) I219-LM (rev 10)
01:00.0 Multimedia video controller: Blackmagic Design DeckLink Mini Recorder
02:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)

I have remotely logged into another machine, and would like to know if it has a Thunderbolt port, and lspci shows the following:

00:00.0 Host bridge: Intel Corporation Device 191f (rev 07)
00:01.0 PCI bridge: Intel Corporation Device 1901 (rev 07)
00:02.0 VGA compatible controller: Intel Corporation Device 1912 (rev 06)
00:14.0 USB controller: Intel Corporation Device a12f (rev 31)
00:14.2 Signal processing controller: Intel Corporation Device a131 (rev 31)
00:16.0 Communication controller: Intel Corporation Device a13a (rev 31)
00:16.3 Serial controller: Intel Corporation Device a13d (rev 31)
00:17.0 RAID bus controller: Intel Corporation 82801 SATA Controller [RAID mode] (rev 31)
00:1d.0 PCI bridge: Intel Corporation Device a118 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Device a146 (rev 31)
00:1f.2 Memory controller: Intel Corporation Device a121 (rev 31)
00:1f.3 Audio device: Intel Corporation Device a170 (rev 31)
00:1f.4 SMBus: Intel Corporation Device a123 (rev 31)
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-LM (rev 31)
01:00.0 Multimedia video controller: Blackmagic Design DeckLink Mini Recorder
02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5722 Gigabit Ethernet PCI Express
  • lspci | grep -i thunder shows 'em all on my machine (mid-2011 27" iMac w/ Mint 19 on it) – ivanivan Sep 11 '18 at 17:10
  • I think that may be specific to your machine though. "thunder" doesn't show up on a machine I have here that clearly has a Thunderbolt port. – mpr Sep 11 '18 at 17:12
0

On my system, at least, with Thunderbolt 3 it's invisible to lshw & lsusb if nothing's plugged into it (I do see the USB3 port). I have a Clevo N131WU laptop, which you can buy from vendors such as System76 and Tuxedo.

That said, the modules are loaded:

[tara@tuxmonster ~]$ lsmod | grep thund
intel_wmi_thunderbolt    16384  0
wmi                    28672  1 intel_wmi_thunderbolt
[tara@tuxmonster ~]$

And I double checked on my desktop computer, which does not have thunderbolt but is running the same distribution & kernel (Arch, on 4.18), and the thunderbolt driver is not loaded on the desktop.

  • This method seems to work for the cases I have so answer accepted! – mpr Oct 30 '18 at 13:42
3

On Mac hardware, Thunderbolt hot-plugging is primarily managed by OS and so the Thunderbolt controller is always visible.

But on x86 PC hardware, Thunderbolt (at least Thunderbolt 1) tends to be managed by ACPI firmware, and hotplugging is dealt with like a standard PCIe hotplug event. As a result, the Thunderbolt bus can be completely invisible to the OS if nothing is connected to it. But when you connect something to it, a number of bridge devices will, from the viewpoint of Linux, just pop into existence: you will see a lot of output in dmesg as resources are allocated for the Thunderbolt bus and devices within it.

Thunderbolt 3 might be possible to detect, as it coexists with USB Type-C connectors and so might be visible in Type-C configuration data. However, I don't have access to any system with Thunderbolt 3 at the moment, so I cannot verify this right now.

  • Hm, that means one should be able to detect Thunderbolt by looking closely at the ACPI information (which won't be trivial, but should be doable). – dirkt Sep 12 '18 at 6: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.