I love using Samsung SSDs (SATA or NVMe) and have them in most of my builds. But for some reason, Samsung does not publish a way to update the SSD firmware on Linux and their ISO boot tool is completely broken. Let’s fix that!
Estimated reading time: 3 minutes
Table of contents
Trying to update a Samsung 980 Pro 1TB
In my case I was trying to update 2 Samsung 980 Pro 1TB NVMe drives which are present in one of my Chia plotter boxes. This box is built around a x570 motherboard with a Ryzen 9 5900x.
Easy you’d say, just download the firmware update ISO, put it on a USB stick, boot, update the firmware, done!
Yeah, except that Samsungs Linux boot environment has been broken **for a few years now**! It will not work with your AMD system, two main problems:
- Refuses to recognize SATA SSDs
- Doesn’t understand the controller somehow
- USB keyboard won’t work
- Broken kernel, no way around it, have to use PS2 keyboard or you are just stuck
And well, I was stuck on the “no keyboard” issue once again, like I had also been a few years back. At that time I solved it by moving those SATA drives to an Intel based system, but that was no option for these NVMe drives.
Flashing in Linux anyway
The machine these drives where in was running Ubuntu 21.04, luckily, with a few easy to follow command-line steps, we can extract the firmware tool from Samsungs ISO file and run it in our modern Linux environment, this helped flashing the drives without any issues for me!
Word of Warning
Although this worked fine for me, your results might be different
Try at your own risk!
First, unmount any filesystem mounted on the drive(s). If it’s your boot drive, no luck there and you can try flashing while it’s mounted.
Get the URL for your SSD
Samsung keeps a list of downloadable Firmware ISO files here: https://www.samsung.com/semiconductor/minisite/ssd/download/tools/ right click on the version you need and select “copy link” and paste it in the command lines below.umount /dev/md0wget https://s3.ap-northeast-2.amazonaws.com/global.semi.static/SAMSUNG_BRAND_SSD_980PRO_ISO/FW/E2512E718DB3E7EWGAJLDA8A7108M1Y2D9M9090J2KIA55338/Samsung_SSD_980_PRO_3B2QGXA7.isoapt-get -y install gzip unzip wget cpiomkdir /mnt/isosudo mount -o loop ./Samsung_SSD_980_PRO_3B2QGXA7.iso /mnt/iso/mkdir /tmp/fwupdatecd /tmp/fwupdategzip -dc /mnt/iso/initrd | cpio -idv –no-absolute-filenamescd root/fumagician/sudo ./fumagician
Flash the firmware
Once the tool loads it should recognize your SSD/NVMe drives and ask you if you want to update them.
Once updated I strongly recommend rebooting or even turning the whole system off and then on again.
After the system booted up again, I noticed no issues and all my data was still there and I confirmed using “sudo smartctl -a” on my NVMe drives that they where indeed running the new firmware!
I have no clue why Samsung stopped providing a way to firmware flash your SSDs from Linux, they used to do so but now only offer it for Enterprise SSDs.
This wouldn’t be too big of a problem if their own tooling would work, but as said, their ISO boot environment has been completely broken for a few years now, making it no option.
Next time buying SSDs, if there is a viable alternative vs the Samsung and they do offer tooling to do this, It’ll be a plus on their side….