emre's blog

An easy way to update the infamous Thinkpad Thunderbolt Firmware

When I got my X380 Yoga, I couldn't believe how much it was unnecessarily hard to update (or even check) the Thunderbolt Firmware on Windows. After a long search on Reddit and StackOverflow, I finally successfully updated mine. I recommend using Linux to update the firmware because the process is much simpler and streamlined compared to Windows. You don't have to fiddle with mixing old and new drivers and use flight mode etc.

It's important to update it because there's a bug in the earlier versions of the firmware, which writes to the Thunderbolt chip every time a cable is plugged or unplugged. This writes makes the chip malfunction after some time and breaks the Type-C port. You SHOULD update it to any version >=20 (You can check the safe versions for your model here).

These devices need the update and might become unusable if they're not updated:1

P Series T Series X Series
P43s (Type 20RH, 20RJ) T470 (Type 20HD, 20HE) X1 Carbon 5th Gen (Type 20HR, 20HQ)
P51 (Type 20MM, 20MN) T470 (Type 20JM, 20JN) X1 Carbon 6th Gen (Type 20KH, 20KG)
P51 (Type 20HH, 20HJ) T470s (Type 20HF, 20HG) X1 Carbon 7th Gen (Type 20QD, 20QE)
P51s (Type 20HB, 20HC) T470s (Type 20JS, 20JT) X1 Carbon 7th Gen (Type 20R1, 20R2)
P51s (Type 20JY, 20K0) T480 (Type 20L5, 20L6) X1 Yoga 2nd Gen (Type 20JD, 20JE, 20JF, 20JG)
P52 (Type 20M9, 20MA) T480s (Type 20L7, 20L8) X1 Yoga 3rd Gen (Type 20LD, 20LE, 20LF, 20LG)
P52s (Type 20LB, 20LC) T490 (Type 20N2, 20N3) X1 Yoga 4th Gen (Type 20QF, 20QG)
P53s (Type 20N6, 20N7) T490 (Type 20RY, 20RX) X1 Yoga 4th Gen (Type 20SA, 20SB)
P71 (Type 20HK, 20HL) T490 (Type 20Q9, 20QH) X1 Tablet 3rd Gen (Type 20KJ, 20KK)
T490s (Type 20NX, 20NY) X280 (Type 20KF, 20KE)
T570 (Type 20H9, 20HA) X380 Yoga (Type 20LH, 20LJ)
T570 (Type 20JW, 20JX) X390 (Type 20Q0, 20Q1)
T580 (Type 20L9, 20LA) X390 Yoga (Type 20NN, 20NQ)
T590 (Type 20N4, 20N5) Yoga 370 (Type 20JJ, 20JH)

| ⚠️ The following instructions worked for me but might mess up your computer. I'm not responsible for bricked devices, dead SSDs, thermonuclear war, or you getting fired because your computer stopped working.

  1. Install a distro of your choice or boot the laptop from a live Linux USB. I used Ubuntu Live, but any distro should work. Make sure you have an internet connection. Also, you might have to plug in a charger or a dongle to the Thunderbolt port for your laptop to detect it.
  2. Fwupd Method; Open Terminal and follow along;
# install the fwupd package if it's not installed
sudo apt update && sudo apt install fwupd

sudo fwupdmgr get-devices # display the devices, check your Thunderbolt version here.
sudo fwupdmgr refresh # download the latest metadata
sudo fwupdmgr get-updates # list available updates
sudo fwupdmgr update # install the updates

# When it's done, check the version again by issuing the following command.   
# If it's higher than 20, you should be good,
# but check the safe versions for your exact model.
sudo fwupdmgr get-devices
  1. DD Method; Some computers (like mine) might not be updated to the latest firmware version because the repositories don't have it. In this case, you should get the newest firmware installer on Lenovo's site and manually flash it.

  2. Get the installer from Lenovo. It should be called "Intel Alpine Ridge Thunderbolt Firmware for Windows".

  3. Run the installer using Wine. Pick the extract mode and extract it to an easily reachable folder.

  4. cd into the extracted folder and follow the commands.

# waking the Thunderbolt port
echo 1| sudo tee /sys/bus/wmi/devices/86CCFD48-205E-4A77-9C48-2021CBEDE341/force_power

# checking the current version
cat /sys/bus/thunderbolt/devices/0-0/nvm_version

# writing the extracted firmware. replace the filename with
# the one you extracted. it should have .bin extension
sudo dd if=<put filename here>.bin of=/sys/bus/thunderbolt/devices/0-0/nvm_non_active0/nvmem

# lastly, authenticate the firmware you wrote and activate it.
echo 1| sudo tee /sys/bus/thunderbolt/devices/0-0/nvm_authenticate

# check the version again
cat /sys/bus/thunderbolt/devices/0-0/nvm_version
  1. Critical Intel Thunderbolt Software and Firmware Updates - Lenovo Support