I got a new ThinkPad X1 Carbon laptop for work. Of course I immediately installed Fedora 28 on it. Everything seemed to work just fine. But the laptop came with a ThinkPad Thunderbolt dock and when I went to go use it, I noticed the Ethernet port didn’t work. Then I noticed the USB ports didn’t work. But at least the HDMI port worked? (Full disclosure: I didn’t try the VGA port).
It turns out the solution was really simple, but I didn’t find a simple explanation so I’m putting one here. (Comment #17 of Red Hat Buzilla #1367508 had the basic solution. I hope this post becomes a little easier to find.)
The dock uses Thunderbolt which includes some security features. A package called bolt provides a management tool for this. Happily, it’s already in the Fedora 28 repo.
First, I installed it
# dnf install bolt
Then I examined the connected device
# boltctl list
● Lenovo ThinkPad Thunderbolt 3 Dock
├─ type: peripheral
├─ name: ThinkPad Thunderbolt 3 Dock
├─ vendor: Lenovo
├─ uuid: 00cd2054-ef95-0801-ffff-ffffffffffff
├─ status: connected
│ ├─ authflags: none
│ └─ connected: Fri 29 Jun 2018 03:13:10 PM UTC
└─ stored: no
Finally, I enrolled the device
# boltctl enroll 00cd2054-ef95-0801-ffff-ffffffffffff
● Lenovo ThinkPad Thunderbolt 3 Dock
├─ type: peripheral
├─ name: ThinkPad Thunderbolt 3 Dock
├─ vendor: Lenovo
├─ uuid: 00cd2054-ef95-0801-ffff-ffffffffffff
├─ dbus path: /org/freedesktop/bolt/devices/00cd2054_ef95_0801_ffff_ffffffffffff
├─ status: authorized
│ ├─ authflags: none
│ ├─ parent: cf030000-0080-7f18-23d0-7d0ba8c14120
│ ├─ syspath: /sys/devices/pci0000:00/0000:00:1d.0/0000:05:00.0/0000:06:00.0/0000:07:00.0/domain0/0-0/0-1
│ ├─ authorized: Fri 29 Jun 2018 03:19:39 PM UTC
│ └─ connected: Fri 29 Jun 2018 03:13:10 PM UTC
└─ stored: yes
├─ when: Fri 29 Jun 2018 03:19:39 PM UTC
├─ policy: auto
└─ key: no
After that, everything worked as expected. I’d like to thank the people who did the work to discover and implement the fix. I hope this post means a little less Googling for the next person.
Pingback: Ben Cotton: Solved: ports on ThinkPad Thunderbolt dock don’t work with Fedora | Fedora Colombia
That helped me, along with:
https://bugzilla.redhat.com/show_bug.cgi?id=1625285
I had to turnoff SELinux or the boltctl command would “Timeout”
But it looks like a fix is on its way…
Thanks a lot !
@Thomas, great! I’m glad it helped.
Pingback: ThinkPad Thunderbolt 3 Dock | Suspend Problem – Ricardo's Blog
Thanks Ben. I had the same problem with my new X1.
Thanks so much! Solved for my P1 and 230W Thunderbolt 3 dock!
Awesome! I’m glad it helped.
I have bolt installed but sudo boltctl list returns absolutely nothing, just the void of my black terminal. I checked and the systemd service is started and journalctl / dmesg show the dock (sorry, the “port replicator”) being unplugged. Actually, it says “undocked from hotplug port replicator” both when unplugging and plugging the USB-C cable. Hmm. Anyway, if anyone has a clue 🙂
Thanks! This helped with my X1 Extreme + 230W Thunderbolt 3 dock on Ubuntu 18.10.
Hi there, I had very similar issue with my T480s and Fedora 29. It was like ‘erosion’ of port accessibility on the docking station. At first I lost charging, then network and suddenly it completely stopped giving me the rest of the ports. I dropped the db entry in bolt db:
# boltctl forget
Had to switch my thunderbolt cable into the back slot (didn’t realize it was there and was connecting it to the front slot, which was ‘obvious’) and had to press the power button to suspend the laptop (yes, the power button worked) and then wake it up again. Then the device again appeared in ‘boltctl list’ and after enrolling it everything looks to work fine. Thank you, Ben. You made my life a little bit easier.
Roman, thanks for your comment. Sounds like a frustrating failure case. I’m glad you got it working.
Hey Roman,
You mentioned you got this to work with T480s and Fedora 29. I have the same nothing seems to be working and “boltctl list” is blank.
Did you follow a guide or did it work out of the box? What are your BIOS settings for Config -> Thunderbolt (TM) 3? Do you have Secure Boot on or off?
Thanks very much for any assistance, Conor
Conner I have the exact same issue as you. Were you able to get it solved?
Rich, Conor,
Had a similar issue – blank output from “boltctl list” command on Fedora 30. Fix turned out to be much simpler than I thought.
There are two USB-C ports on the laptop. Do not use the far-left port, instead use the one next to it with the lightning icon.
Solution: Credit to Christian
https://christian.kellner.me/2018/10/24/thunderbolt-port-guide-t480s-force-power/
I didn’t do this, but instead I rebooted and went into the BIOS settings. It turns out there’s a bunch of USB, LAN, and Thunderbolt settings there. I set those and everything works now. I’m not sure why someone would need security on a USB port on a docking station when they could just plug into the USB port 2′ away on the laptop. Maybe this feature is useful for a custom system (like in the military) where they inject hot melt glue into the USB ports so you can’t use them.
I am running Linux Mint 19.1 MATE on Lenovo X1 Extreme.
I have a related problem with using a thunderbolt dock on a Lenovo T480 with an HP Omen dock. I used the thunderbolt gui originally (under settings/devices/thunderbolt) which implements the boltctl commands. I was able to find and register it and use it for charging, USB and ethernet. When I suspend the laptop, the dock is turned off (good, I want that.)
Occasionally when I restart my machine after the suspend the thunderbolt gui reports that the port is disconnected, and no sequence of unplugging and replugging or power cycling seems to work. The fix seems to be
boltctl authorize deviceid
which forces the request for the root pwd.
Thanks for this. Helped me to finally set everything.
Pingback: Using the Lenovo Thunderbolt 3 Essential Dock with Linux – Lennart's weblog
Thanks! Didn’t know about the ‘enroll’ phase.
I’m glad I could help
Great tutorial! Mine showed already enrolled but I’m still having problems on waking it up after it suspends.
Hi Stephen. I’ve had to give up using the suspend function. I normally now either log out of my account (dock stays on) or power off ( shuts down the dock). I leave the dock plugged in unless I’m travelling with it and it starts up without a fuss.
If I suspend the system, when I revive it I loose control of the keyboard and mouse, so I have to power down to recover.
This is all with Fedora 33 and NVIDIA drivers.
Had similar issues with P1 Gen3 and Thinkpad Thunderbolt 3 Docking station (40AN) here is what fixed my issues:
Environment:
Fedora 34
Installed:
fwupdmgr
sudo vi /etc/fwupd/remotes.d/lvfs-testing.conf
#Change Enabled=false –> true
Enabled=true
#Save:
:wq
sudo fwupdmgr refresh –force
sudo fwupdmgr get-updates
sudo fwupdmgr update
#Multiple items related to the Thunderbolt 3 and dock are updated.
#Reboot:
sudo init 6
Now for the first time ever I can “live” dock the laptop and all the USB devices (Keyboard,mouse,etc…) work again… My 2 Display port monitors always came back, but the USB devices did not previously.
Hope this helps.
Instead of editing files, you can use `fwupdmgr enable-remote lvfs-testing` – that also brings up the warning screen which people should see before accepting.
I tried Matt Faust’s fix with my hardware – fc33 Lenovo 480 with HP Omen dock.
Various firmwares got updated but there was no specific firmware for the HP ock.
My computer still froze when recovering from a suspend. Also it started freezing ~1/hr while running on the dock/GPU. Resetting the lvfs-testing.conf to false seems to fix the problem.
You are the best. 🙂
This was the best solution to my problem.
My Thinkpad and my dock are best friends now.
Thank you very much!
Thank you! I’m glad I could help.
The only issue left is the Ethernet initialized only after reboot.
If I wish to use the Ethernet cable which connected to lenevo dock station, I will need to reboot each time.
The USB-ports on my new dock didn’t work on my P1 running Fedora 36. “enrolling” it with boltctl fixed it, thanks! I had no idea that is a necessary step!
Thank you, thank you very much! The best tips this month!
It solved the problem for my Dell Latitude.
/Pelle
I’m on ThinkPad P1 Gen1 with Zeon processor and running on dual boot with Windows 11 and Red Hat Enterprise Linux release 9.1 (Plow) developer edition.
#Giving extensive background so that someone in similar boat could relate
I had a problem of freezing while booting specifically into RHEL and using dock connected to thunderbolt 3. I could boot if one of these 2 confitions doesn’t exist. That is – boot in windows with dock connected via TB3 or disconnect TB3 to dock during booting into RHEL and let it slide past the freeze point and then reconnect back TB3. All peripherals seems to be connected via Dock but problem is freezing while booting
Checked boltctl list and I was already authorized.
[root@JackRabbit ram]# boltctl list
● Lenovo ThinkPad Thunderbolt 3 Dock
├─ type: peripheral
├─ name: ThinkPad Thunderbolt 3 Dock
├─ vendor: Lenovo
├─ uuid: 00aa2a30-016a-0801-ffff-ffffffffffff
├─ generation: Thunderbolt 3
├─ status: authorized
│ ├─ domain: c7010000-0070-741e-0381-b41c5a934923
│ ├─ rx speed: 40 Gb/s = 2 lanes * 20 Gb/s
│ ├─ tx speed: 40 Gb/s = 2 lanes * 20 Gb/s
│ └─ authflags: none
├─ authorized: Wed 22 Feb 2023 06:02:15 PM UTC
├─ connected: Wed 22 Feb 2023 06:02:15 PM UTC
└─ stored: Tue 21 Feb 2023 11:22:42 PM UTC
├─ policy: iommu
└─ key: no
So I changed “policy: iommu” TO “policy: auto”
Like so –
[root@JackRabbit ram]# boltctl forget 00aa2a30-016a-0801-ffff-ffffffffffff
[root@JackRabbit ram]# boltctl list
● Lenovo ThinkPad Thunderbolt 3 Dock
├─ type: peripheral
├─ name: ThinkPad Thunderbolt 3 Dock
├─ vendor: Lenovo
├─ uuid: 00aa2a30-016a-0801-ffff-ffffffffffff
├─ generation: Thunderbolt 3
├─ status: authorized
│ ├─ domain: c7010000-0070-741e-0381-b41c5a934923
│ ├─ rx speed: 40 Gb/s = 2 lanes * 20 Gb/s
│ ├─ tx speed: 40 Gb/s = 2 lanes * 20 Gb/s
│ └─ authflags: none
├─ authorized: Wed 22 Feb 2023 06:02:15 PM UTC
├─ connected: Wed 22 Feb 2023 06:02:15 PM UTC
└─ stored: Tue 21 Feb 2023 11:22:42 PM UTC
[root@JackRabbit ram]# boltctl enroll –policy auto 00aa2a30-016a-0801-ffff-ffffffffffff
● Lenovo ThinkPad Thunderbolt 3 Dock
├─ type: peripheral
├─ name: ThinkPad Thunderbolt 3 Dock
├─ vendor: Lenovo
├─ uuid: 00aa2a30-016a-0801-ffff-ffffffffffff
├─ dbus path: /org/freedesktop/bolt/devices/00aa2a30_016a_0801_ffff_ffffffffffff
├─ generation: Thunderbolt 3
├─ status: authorized
│ ├─ domain: c7010000-0070-741e-0381-b41c5a934923
│ ├─ parent: c7010000-0070-741e-0381-b41c5a934923
│ ├─ syspath: /sys/devices/pci0000:00/0000:00:1b.4/0000:04:00.0/0000:05:00.0/0000:06:00.0/domain0/0-0/0-3
│ ├─ rx speed: 40 Gb/s = 2 lanes * 20 Gb/s
│ ├─ tx speed: 40 Gb/s = 2 lanes * 20 Gb/s
│ └─ authflags: none
├─ authorized: Wed 22 Feb 2023 06:02:15 PM UTC
├─ connected: Wed 22 Feb 2023 06:02:15 PM UTC
└─ stored: Tue 21 Feb 2023 11:22:42 PM UTC
├─ policy: auto
└─ key: no
# And, that’s it. freezing while booting into Linux went away while conected to dock on Thunderbolt 3
Thanks Ben and others on this thread. Your inputs helped a lot while troubleshooting.
Thank-you!
Thanks for posting this, 6 years later it saved me with a new connection to a dell dock.