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.
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:
- 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.
Table of Contents
- Using Thunderbolt 3 on Ubuntu
- Troubleshooting Issues With Thunderbolt 3/4 on Ubuntu
- Solution 1: Don’t Confuse USB-C, Thunderbolt 3, Thunderbolt 4, and USB4 Ports
- Solution 2: Install the Bolt Package
- Solution 3: Use the lspci Command to List PCI Buses and Devices
- Solution 4: Upgrade the Linux Kernel and Ubuntu Version
- Solution 5: Update BIOS and Tweak Thunderbolt Configurations in Bios
Using Thunderbolt 3 on Ubuntu
We will explore the Lenovo ThinkPad Thunderbolt 3 Gen 2 Dock with Ubuntu.
This dock aims to improve the 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.
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.
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.
On other systems, you will see the error “Thunderbolt security level could not be determined.”
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.
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 of identifying a Thunderbolt port is checking whether there is any lightning symbol next to it. See the image below.
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.
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.
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:
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.
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 install. From the image below, you can see we have two kernels installed – Linux 126.96.36.199.41 and Linux 188.8.131.52. You can see that we are running the latter, which is the latest release.
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.
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.
Click OK and reboot your system. Run the
uname -r command again to confirm the kernel running on your system.
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 convectional 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.
Note: The layout might be a little different on other laptops 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.
- No security: This level removes any security feature on the Thunderbolt interface, and any connected device will work without requesting authorization.
- User Authorization: This level will request user authorization for any connected Thunderbolt device.
- 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.
- 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.
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.