Authorizing Thunderbolt 3 on Fedora Plasma

Posted by Ryan Himmelwright on Sat, Jan 25, 2020
Tags hardware, linux, laptop, thinkpad, fedora, tb3, kde
Durham, NC

After buying a 16” MacBook Pro the other month, I’ve been using a Thunderbolt 3 hub to connect it to my periphery devices. Luckily, in addition to the macbook, I am able to use the hub with my my work laptop when working from home. Normally, it works fine. However, last week I reformatted the work laptop with the KDE Plasma spin of Fedora Workstation 31… and my TB3 hub stopped playing nicely with it. Here’s why.

The Issue

Due to a NVIDIA Quadro M1000M in my lenovo P50 work laptop, I’ve been using Gnome with Wayland, because that combination seems to have the least amount of annoying trade-offs. While doing a system refresh, I figured I would see if things are any different with a clean Fedora 31 Plasma install (they weren’t, but that’s beyond this post).

Gnome Thunderbolt Settings
The Gnome desktop environment now has a thunderbolt pane in the settings GUI

Booting into the live cd, and later the installed system, I noticed that my Thunderbolt 3 hub did not work while I was in Plasma. That was fine. I expected it really, because for security reasons Linux distros tend to disable thunderbolt ports by default. In gnome, there are now settings to authorize it (which I guess I had done on my previous install, and forgot about). In Plasma however, I needed to install and configure bolt.

Bolt

Installing bolt with dnf
bolt is in the Fedora repos and is easily installed with dnf

In Fedora, bolt is in the repos (at least in Fedora 31+), so installing it is easy:

sudo dnf install bolt

Once bolt is installed, it isn’t a bad idea to check to make sure it is running: sudo systemctl bolt.

bolt systemctl status
Checking bolt is running using systemctl status

If the status shows that it isn’t running for some reason, it can be started using systemctl start bolt. Check the status again, and if it it still is not running… sorry?

boltctl

With bolt installed, the command boltctl is available to use. The base command will show information about attached thunderbolt devices. To see more boltctl commands, run boltctl --help.

Authorizing

boltctl authorize
Authorizing the device

In order to use the thunderbolt 3 device, it needs to be authorized. To authorize a device, first use a plain boltctl command to get the uuid of the device. Next, call boltctl authorize using the uuid to authorize it:

boltctl authorize <UUID HERE>

The device should now be authorized. When I authorized mine, some of my devices started showing up automatically, while others needed to be disconnected and replugged.

Enrolling

boltctl enroll
Enrolling the device for permanent use

Authorizing a device enables it to be used, but doesn’t guarantee persistence. While this may be desired to grant temporary authorization to a device, many users tend want their device to always work, without having to manually authorize it. In this case, the device should be enrolled (like systemctl enable). Simply call boltctl enroll, with the device UUID:

boltctl enroll <UUID HERE>

Once enrolled, the device’s UUID will be recorded and added to a database. By default, the device will now automatically be authorized whenever it is connected.

Conclusion

That’s it. While the solution isn’t very difficult, it can be frustrating to figure out when it appears that the thunderbolt device simply is not working. Regardless, I’m glad that I now know about bolt and how to use it!

Prev Post:

My New 16-inch Macbook Pro: Initial Thoughts
comments powered by Disqus