How To Use Thunderbolt 3 and Thunderbolt 4 on Ubuntu

ubuntu tb3 thunderbolt

When purchasing any laptop, you need to take a keen look at all the ports available since they connect your system to other devices in the digital world.

When Apple released the new style MacBook Pro in 2015, people were amazed. This machine ditched all the available ports on the previous releases and replaced them with only Thunderbolt 3 and a headphone socket.

Standard ports like the charging socket, display ports (HDMI), USB, and SD card reader, which you will most likely find on most laptops, were all removed and are now supported by the Thunderbolt 3 port.

word image 49

Since then, PC manufacturers have followed suit, and nowadays, it’s common to find a laptop with at least one USB C/Thunderbolt 3/Thunderbolt 4 port on a device.

The main reasons why Thunderbolt 3/4 ports were embraced by PC users include the following:

  • More speed: Support transfer speeds of up to 40GB/s.
  • More power: Allows up to 100w to be transferred from one device to another.
  • More Pixels: Supports high-resolution displays like 2x4K, 1x5K, 1x4K, and even the Apple 6K pro display XDR.
  • More protocols: Thunderbolt ports offer a multi-functional interface protocol that connects your PC to various peripheral devices.
  • Daisy Chaining: you can connect TB devices to other TB devices up to 6 times.

Even though Thunderbolt 3/4 has proven to work well with Windows and macOS, Linux users are still experiencing issues when using Thunderbolt on certain distributions. This post will give you a detailed guide on using Thunderbolt 3 /4 on Ubuntu and how to solve any arising errors.

There are both Thunderbolt 3 and Thunderbolt 4 docks that work on Linux.

Using Thunderbolt 3 on Ubuntu

We will explore the Lenovo ThinkPad Thunderbolt 3 Gen 2 Dock with Ubuntu.

word image 50

This dock aims to improve overall productivity and includes the following features:

  • Two DisplayPort
  • Two HDMI
  • USB C Docking interface
  • Five USB 3.1 Gen 2 ports
  • Gigabit Ethernet port
  • 3.5 mm Stereo/Microphone Combo Port for audio output

In this post, we will connect our PC running Ubuntu 20.04 LTS to the dock and try and connect to 3 external Display monitors. For the Centos version of this tutorial, see our article How to install Thunderbolt on Centos.

word image 51

In the setup shown in the image above, we have connected the center and right monitors to the two Display ports and connected the left monitor via the HDMI port. We decided to use the external displays since this is the ultimate way to test whether the Thunderbolt port works on any system.

Note: We will not install any additional drivers for a start. Instead, we will try to use the native support for Thunderbolt 3, which comes available with Ubuntu.

After a long process of switching between the Display and HDMI ports on the dock, we were able to get two external monitors working with Ubuntu. That is the center and right monitor, connected to the two Display ports. Even though that means Thunderbolt 3 works successfully on Ubuntu 20.04 LTS, it also meant that Ubuntu could only work with two external monitors and the built-in display, as shown in the image below.

word image 52

Troubleshooting Issues With Thunderbolt 3/4 on Ubuntu

Unfortunately, not all Linux users are lucky enough to get Thunderbolt working right away on their Ubuntu distribution. For some, the Ubuntu system even outputs the error “No Thunderbolt 3 support” when the PC has a Thunderbolt port, as shown in the image below.

word image 53

On other systems, you will see the error “Thunderbolt security level could not be determined.”

word image 54

Let’s dive in and look at some of the possible solutions you can use.

Solution 1: Don’t Confuse USB-C, Thunderbolt 3, Thunderbolt 4, and USB4 Ports

What you need to understand is that USB-C is just a connector type. USB-C is not Thunderbolt 3, Thunderbolt 4, or USB-4. It is just a physical connection design that all these three technologies use. Therefore, if you have a USB-C port on your computer, that doesn’t necessarily mean it’s either a Thunderbolt 3 or Thunderbolt 4 port. There is also talk of Thunderbolt 5, but we have little information at this point.

word image 55

Therefore, before hooking the Thunderbolt 3 / 4 cable to your PC, you first need to ensure it’s a Thunderbolt 4 or Thunderbolt 3 and not a USB-4 port. One trick for identifying a Thunderbolt port is checking whether there is any lightning symbol next to it. If you don’t have a Thunderbolt port, you can add a PCIe Expansion Card.

Solution 2: Install the Bolt Package

Bolt is a system daemon used to manage Thunderbolt 3 devices on Linux systems. You can install bolt by running the command below on your system.

sudo apt install bolt

When done, reboot your system and try to access the Thunderbolt settings from your Settings window. Even without any Thunderbolt device connected, you should be able to access Thunderbolt controls. If that doesn’t work, you will need to run the bolt daemon manually by executing the command below.

boltctl

Solution 3: Use the lspci Command to List PCI Buses and Devices

Lspci is a Linux command-line utility that lists detailed information about all PCI buses present on your systems and any devices connected to these buses. We can use this command to check whether the Ubuntu system recognizes the Thunderbolt port on your computer. By running the lspci command on our system, we got the output below.

word image 57

Alternatively, you can use the grep command to get detailed information on the Thunderbolt port, as shown in the command below.

lspci | grep -i thunder

If you don’t get any output after running the command above, that means your system does not recognize the Thunderbolt port. You can solve this issue by upgrading the Linux kernel, as explained below.

Solution 4: Upgrade the Linux Kernel and Ubuntu Version

Thunderbolt 3 works out of the box with recent kernel releases. Since the kernel 4.13 release, which included support for Thunderbolt security, later kernels have come with more advanced features and capabilities.

To check the kernel version on your system, run the command below:

uname -r
chmod +x ukuu-v18.9.1-amd64.deb
sudo apt install ./ukuu-v18.9.1-amd64.deb

To upgrade the kernel on Ubuntu, we will use Ubuntu Kernel Update Utility (UKUU). It is a graphical utility used to manage kernel updates on Ubuntu. To get started, install UKUU by downloading the DEB package from the teejee2008 GitHub repository.

After successfully downloading the file, launch the Terminal and navigate to the Downloads directory. Use the commands below to install the file.

word image 58

When done, navigate to the applications menu and launch UKUU. You will see a window similar to the image below, and UKUU will generate a list of all Kernels available for installation. From the image below, you can see we have two kernels installed – Linux 5.11.0.37.41 and Linux 5.4.0.26. You can see that we are running the latter, which is the latest release.

word image 59

However, these results might differ from one system to another. For example, when I installed UKUU on an old PC running Ubuntu 18.04 LTS, I got the output below.

word image 60

Select the latest kernel release from the list and click the Install button on the right. UKUU will start downloading and installing the selected kernel. When done, click the close button at the bottom of the window. You might see a window similar to the below warning you about switching and updating kernels.

word image 61

Click OK and reboot your system. Run the uname -r command again to confirm the kernel running on your system.

uname -r

 

word image 62

Solution 5: Update BIOS and Tweak Thunderbolt Configurations in Bios

If all the above solutions don’t work for you, you need to check the BIOS configuration. To get started, update the BIOS by following the guide provided for your PC model. You can easily find these guides online. When done, navigate to the BIOS configuration window. There are different keys used to access BIOS settings depending on your laptop model. In our case, we are using Dell XPS. The conventional key for accessing BIOS settings on Dell machines is F2.

On the BIOS screen, expand the System configuration menu and select Thunderbolt Adapter Configuration. That will open the Thunderbolt configuration screen on the right, as shown in the image below.

word image 63

Note: The layout might be a little different on other laptop models. However, the options and the configurations should be the same.

Ensure that you have checked all the checkboxes next to the options below:

  • Enable Thunderbolt Technology Support
  • Enable Thunderbolt Adapter Boot Support
  • Enable Thunderbolt Adapter Pre-boot Modules

When done, try switching the different security levels and see which one works well with your Thunderbolt port. There are four Thunderbolt security levels.

  1. No security: This level removes any security feature on the Thunderbolt interface, and any connected device will work without requesting authorization.
  2. User Authorization: This level will request user authorization for any connected Thunderbolt device.
  3. Secure Connect: This level uses pre-shared keys to approve specific devices only. This security measure might not be widespread in a home or small business environment, but it’s ordinary in an Enterprise environment.
  4. Display Port Only: The Thunderbolt 3 port will only function as a video output port with this option. Therefore, if you try connecting any other PCIe devices, they will not work at all.

Conclusion

This post has given you a comprehensive guide on using Thunderbolt on your Ubuntu system and all the possible solutions for any arising problems. Please let us know which solution worked for you, and in case you encounter any issues, let us know in the comments, and we will help where we can.

0 Shares:
Subscribe
Notify of
guest
Receive notifications when your comment receives a reply. (Optional)
Your username will link to your website. (Optional)

6 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Marcos Alano
Marcos Alano
2 years ago

What command can I use to check if my Thunderbolt is 3 or 4?

ciscowizard
ciscowizard
2 years ago
Reply to  Marcos Alano

You probably found your answer by now but running the lspci command displays the Thunderbolt version.

Karen
Karen
2 years ago

Wow! I finally got my Thunderbolt working on Ubuntu 20.04 LTS.
A very good and easy to read guide.

ciscowizard
ciscowizard
2 years ago

Unfortunately none of those work. LSPCI does see the port. The only thing I haven’t tried was installing other kernels. What was odd is that I purchased a hdmi adapter to hook both of my monitors through that. Even still, the second external monitor didn’t work. I am wondering if it’s a software issue regarding displaying multiple external monitors.

edwaleni
edwaleni
1 year ago

I have a new pc with the USB4 port. Naturally, the port works just fine as a USB. The best speed I could display was USB 3.2 Gen 2 since there are no valid “USB4” interfaces in the channel.

When I load a rolling release with the new kernel (6.1) with a TB3 hub, it does install the Thunderbolt module but appears to be limited to 10Gbps in each direction. The next available speed simply says “unexpected”. Naturally I was hoping to see the highest speed available on TB3.

lspci reports 16GT/s and a 16x width. (31.5Gbps @ PCIe 4.0)

As far as I can tell there is only 1 rolling release with the 6.1 kernel in GA when I type this, the rest are still in regression. Short of doing my own compile, I will wait until the rest catch up and see what happens.

But the 6.1 kernel does identify the TB3 hub on the USB4 port, loads the associated drivers (USB, Billboard and NIC).

Last edited 1 year ago by George A.
MaxN
MaxN
1 year ago
You May Also Like