The instructions were tested on a Lenovo X1 Carbon 5th Gen (X1C5) on Arch Linux but should be applicable to other Lenovo models and Linux distributions.
BACKUP YOUR DATA! I created a bootable Ubuntu Image like this:
$ sudo sh -c 'curl --location --silent --fail "http://releases.ubuntu.com/18.04/ubuntu-18.04.1-desktop-amd64.iso" | pv > /dev/<your-usb-drive>'
# note that pv is only there to show progress, it is perfectly fine to redirect curl to the usb drive directly.
then I booted from this drive by pressing F12 on reboot and dumped my NVMe disk to an external hard drive like this:
$ sudo sh -c 'cat /dev/nvme0n1 | pv --size 477G > /mnt/<external-harddrive>/something.img'
This took about an hour and trust me, if something fails you would be grateful having spend this hour instead of loosing your data.
Now we are ready to start.
- Install nvme-cli, they have instructions for all major distros and compiling it from source is also rather easy.
- Download the firmware update, in my case it was this one: https://download.lenovo.com/pccbbs/mobiles/fwnv25.zip
- Unzip it.
- Check you current firmware version:
$ sudo nvme id-ctrl /dev/nvme0 | grep fr
fr : 1.9.<something>
frmw : 0x2
- Download the extracted update to your nvme drive:
$ sudo nvme fw-download /dev/nvme0 --fw=/path/to/update.img
# in my case the update file was called NVME_End2End_Lenovo_512_dvt_OPAL_Encrypt_and_Signature.bin
- Commit the update
$ sudo nvme fw-commit /dev/nvme0 --slot=0 --action=2
if this fails, try action=1
, which succeeded on my drive (could take some seconds before the command returns).
- Reboot
- Check if the firmware upgrade was done:
sudo nvme id-ctrl /dev/nvme0 | grep fr
fr : 2.7.8341
frmw : 0x2
This guide is based on information from the following links:
- https://forums.lenovo.com/t5/ThinkPad-X-Series-Laptops/Upgrade-NVMe-SSD-firmware-to-FWNV15-X1-Carbon-5th-Gen-on-Linux/td-p/3741894/page/3
- https://github.com/linux-nvme/nvme-cli/blob/master/Documentation/nvme-fw-download.txt
- https://github.com/linux-nvme/nvme-cli/blob/master/Documentation/nvme-fw-commit.txt
I got a massive speed-up from this update, previously my boot-time took about 15-20 seconds, now I'm ready in 5s or something:
$ systemd-analyze blame
559ms dev-mapper-archgroup\x2droot.device
410ms lvm2-monitor.service
239ms swapfile.swap
236ms org.cups.cupsd.service
227ms ModemManager.service
226ms tlp.service
197ms upower.service
178ms systemd-timesyncd.service
159ms systemd-logind.service
129ms systemd-journal-flush.service
128ms polkit.service
110ms systemd-modules-load.service
101ms boot.mount
95ms systemd-udev-trigger.service
92ms NetworkManager.service
89ms thermald.service
60ms systemd-tmpfiles-clean.service
56ms systemd-udevd.service
53ms systemd-journald.service
51ms lvm2-pvscan@254:0.service
48ms avahi-daemon.service
43ms udisks2.service
42ms systemd-fsck@dev-disk-by\x2duuid-4902a621\x2d2995\x2d4df1\x2da2aa\x2d64c85223c6a5.service
41ms systemd-fsck@dev-disk-by\x2duuid-B364\x2d37C8.service
41ms [email protected]
41ms alsa-restore.service
41ms systemd-tmpfiles-setup.service
40ms systemd-binfmt.service
40ms unmount-webdrives-on-shutdown.service
40ms dev-hugepages.mount
38ms [email protected]
37ms systemd-random-seed.service
32ms systemd-tmpfiles-setup-dev.service
25ms bluetooth.service
25ms wpa_supplicant.service
21ms colord.service
20ms ntpd.service
18ms systemd-backlight@leds:tpacpi::kbd_backlight.service
...
@klingtnet I followed your guide but didn't worked for me. I have Lenovo Thinkpad T480 running Manjaro xfce on Intel SSD Pro 7600p. I found this firmware update https://pcsupport.lenovo.com/gb/en/products/laptops-and-netbooks/thinkpad-t-series-laptops/thinkpad-t480-type-20l5-20l6/downloads/driver-list/component?name=Storage but it says that's for Windows 10(64 bit). I checked README file and my SSD is listed there. Anyway, i followed your guide: created bootable usb with linux mint, backed up my data, booted mint, downloaded zip file with firmware update, ran all commands listed above, shuted down mint and booted manjaro, checked the firmware version and it remains the same. My current firmware version is L08P but on Intel's website the latest firmware version is 004P. What i did wrong? Can you help me to update firmware. I'm desperate to get full performance from my SSD.