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!
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!
Flashing steps
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/md0 wget https://s3.ap-northeast-2.amazonaws.com/global.semi.static/SAMSUNG_BRAND_SSD_980PRO_ISO/FW/E2512E718DB3E7EWGAJLDA8A7108M1Y2D9M9090J2KIA55338/Samsung_SSD_980_PRO_3B2QGXA7.iso apt-get -y install gzip unzip wget cpio mkdir /mnt/iso sudo mount -o loop ./Samsung_SSD_980_PRO_3B2QGXA7.iso /mnt/iso/ mkdir /tmp/fwupdate cd /tmp/fwupdate gzip -dc /mnt/iso/initrd | cpio -idv --no-absolute-filenames cd root/fumagician/ sudo ./fumagician
Parts borrowed from original post
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.
End remarks
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….
If you are looking at picking up some of these Samsung SSDs (they are excellent performers), consider using my affiliate links:
Samsung 970Pro 1TB: https://geni.us/1EBm9z
Samsung 980Pro 1TB: https://geni.us/8wT2K
Hope this helps you! 😀
Hm. This is a lot to take in. Yeah, so let me start with I never used Linux before. LOL. Do I need to buy a PS2 keyboard, or just an adapter would do the trick?
Thanks again great tutorial and awesome videos.
What? No, if you are using Windows, just flash using that? Confused here….
???
Hello and thank you for such informative posts. I am currently copying your plotting rig.
Unfortunately I am not very knowledgeable about Linux and I’m wondering if updating a samsung 970 pro is a must.
Thank you
Not sure what you mean, but running the newest firmware is always smart!
Hi,
Thanks for this knowledge! I really love your video about Chia 🙂
Do you update the firmware just to resolve boot issue or is it usefull regarding the plotting speed?
There where some rumors out there that the 980 Pro 1TB had worse performance in Linux vs Windows, so I updated to the newest version. They have been performing great for me in this Linux boxes. 🙂
Hello,
after updating, I have always the old version onto the nvme : 2B2QGXA7 instead 3B2QGXA7.
Did you notice the problem ?
(I have a raid0 configuration on an Asus B550 chipset). Ubuntu 20.x with an mdadm configuration in raid0 also because the os see 2 drives instead of one logical.
Interesting, mine do show the new version after updating, so not sure what’s going wrong there!
Yeah, for me the RAID0 performs great and it makes managing things even easier!
Same problem.
But after i flashed the firmware, i shutdown and started again the whole system and checked again. Now it has the newest firmware 🙂
Great, thanks for this hint! It did not really work for me, though.
Using a chroot environment, I made it work as follows:
replace the “sudo ./fumagician” command with (as root):
mount –bind /proc /tmp/fwupdate/proc
mount –bind /dev /tmp/fwupdate/dev
mount –bind /sys /tmp/fwupdate/sys
mount –bind /run /tmp/fwupdate/run
env SHELL=/bin/sh chroot /tmp/fwupdate
And then , inside the chroot environment:
cd root/fumagician
./fumagician
I was able to update the firmware of my two Samsung M.2 NVME SSD 980 PRO 1TB drives without any problems.
from firmware 2B2QGXA7 to 3B2QGXA7.
both drives work together in a raid 0 setup.
I also have a X570 ROG Crosshair VIII Formula motherboard and my OS is Windows 11 Pro Version 21H2.
my motherboard has two M.2 NVME slots.
they are labeled M.2_1 and M.2_2
here is what I did to succesfully update the drives.
first boot into your UEFI Bios.
now enable this settings.
Boot->CSM (Compatibility Support Module)->Launch CSM->Enabled
Boot Device Control->UEFI and Legacy OPROM
Boot from Network Devices->Legacy Only
Boot from Storage Devices->Legacy only
Boot from PCI-E/PCI Expansion Devices->Legacy only
Boot->Secure Boot->OS TYpe->Other OS
Advanced->SATA Configuration->NVMe RAID Mode->Disabled
F10 to save the settings and reboot.
now turn off your pc.
unplug the power cord.
remove the 2nd NVME from the M.2_2 slot.
turn on PC and boot into the UEFI Bios, now select to boot from the legacy USB drive created by UNetbootin with the Linux Firmware Utility (Samsung SSD Firmware Update Utility).
now select the 3rd option “Samsung”.
it will scan the drives and offer to update the firmware, confirm with Y twice.
now reboot again and turn off and unplug pc.
now remove the updated NVME drive from the M.2_1 slot and insert the other not updated NVME drive into the M.2_1 slot.
now repeat this steps here.
turn on PC and boot into the UEFI Bios, now select to boot from the USB drive created by UNetbootin with the Linux Firmware Utility (Samsung SSD Firmware Update Utility).
now select the 3rd option “Samsung”.
it will scan the drives and offer to update the firmware, confirm with Y twice.
Done.
boot again into the UEFI Bios and revert back the settings.
Boot->CSM (Compatibility Support Module)->Launch CSM->Disabled
Boot->Secure Boot->OS TYpe->Windows UEFI Mode
Advanced->SATA Configuration->NVMe RAID Mode->Enabled
F10 to save the settings and reboot.
and for the keyboard problem.
there are two different USB rear ports.
USB 3.2 Gen 1 ports and USB 3.2 Gen 2 ports.
while you are inside the Samsung SSD Firmware Update Utility try switch the USB ports your keyboard is plugged in.
it helped me.
my keyboard was working again.
the problem this Samsung SSD Firmware Update Utility has i guess is that it will only update the firmware from M.2 NVME drives in the first M.2_1 slot. it can’t see and find drives in the M.2_2 slot.
M2_1 is usually connected to the CPU directly, while M2_2 – not necessarily (can be connected to the chipset).
the one closest to the CPU is the one you want. usually right under the first PCIe GPU slot.
Whatever settings I tried, because of the horribly old kernel they use, my keyboard would just not work. Luckily the flashing in Linux with my little help is now done in like a minute, so no more need to do all of this stuff!
I hope you also updated from 3B2QGXA7 firmware, it seems there is a glitch in it that make the SSD die.
“Flashing steps
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.”
The boot drive problem can be solved very easily if you boot from a USB stick with Ubuntu 20.04 and choose the “Try Ubuntu” option (there are tutorials on how to make a disk for Ubuntu both from Windows and much easier from Ubuntu).
The necessary utilities cpio, gzip, unzip and wget are already installed.
After configuring the internet connection (from the graphical interface) only the iso image containing the firmware for the SSD remains to be downloaded or the iso image can be copied from another USB stick.
The commands used remain the same with a single change:
mkdir /mnt/iso -> sudo mkdir /mnt/iso
Finally, somebody with some smarts!
This was really helpful, thanks a lot!
Once I had created a bootable USB drive from the ISO (which, by the way, didn’t work with unetbootin as described in Samsung’s docs… I used rufus and got it to boot then), I couldn’t believe that the keyboard wasn’t working! I even unplugged it from the monitor and plugged it directly into the computer because I was thinking the monitor’s fancy hub wasn’t working or whatever… still nothing. I mean, WTF Samsung?! It’s 2022, I would have to steal a PS2 keyboard from a computer museum! And then I still couldn’t use it, because my mainboard doesn’t have a socket.
Once I had found your post I plugged in my Ubuntu USB thumb drive, booted from it, opened your post again from the browser there and followed your instructions. Literally 3 mins later the firmware update was done.
Excellent, glad to hear it helped! 😀
This guide worked for me like a charm. Thank you.
Linux has a wonderful firmware updating infrastructure : https://fwupd.org
It works very well, is supported by many hardware makers, and allows to let everything auto-update without thinking about it.
If Samsung doesn’t want to support it, I can only recommend NOT using their drives under Linux.
Imagine having to repeat your procedure (or having to boot under Windows) for a whole datacenter ….
Awesome! I used your procedure to update the firmware on a Samsung 870 EVO SSD in a Lenovo Thinkcenter M81 running Linux Mint 20.3 and it worked flawlessly. I was nervous about updating it on my running boot disk so I used a live usb for the update with no problems.
Thanks again.
I don’t have a PC at home, all I have is 2 old Intel Macbook Pros. I’ve plugged my Samsung 980 Pro on a USB NVMe enclosure with a RealTek RTL9210 chip inside. I’ve followed the instructions here, but it seems fumagician is unable to detect the drive.
As a MacOS user on a 15-inch Mid 2015 MacBook Pro, I burnt the Samsung ISO image to a USB flash drive, then managed to boot on it. Unfortunately, after successful boot process, Samsung Magician was not able to detect my brand new 980 PRO… I suspect the NVMe adapter that I had to buy as well, because Apple uses a proprietary connector. Note that the SSD has been perfectly detected by MacOS though (System Info’s NVMe section).
Solution: get another computer. I inserted the SSD into the M.2 socket of another laptop’s motherboard (thus without the need to use the NVMe adapter) and booted on a Ubuntu Live USB flash drive—and selected the “Try” option.
I ran the above commands and the SSD was successfully flashed. Then, I put the SSD back into the MacBook Pro. Well detected again by MacOS (Monterey) with updated revision number as shown by MacOS System Information app.
Thanks a lot to the author for sharing those commands.
Thank you, this worked for me on a Linux Mint 19.3 system. Good comment on maybe looking at alternatives for my next SSD.
I did this on my boot drive while it was mounted and it worked.
thanks for sharing. Unfornately fumagician is a x86-64 binary. My system is a aarch64 and I don’t have another sysstem with m.2 and x86-64 architecture … 🙁
Hi.
Thank you!
Easy to follow and works!
Thank you again!
You don’t have to do any hacking on Linux. Forget all the magician, Samsung is providing iso file that is a bootable Linux based utility. You can try boot it in VirtualBox, I looks good.
So you take Samsung_SSD_980_3B4QFXO7.iso or your SSD model iso from their website https://semiconductor.samsung.com/consumer-storage/support/tools/ under Firmware section and put that iso on USB stick, but not like copy to USB, just make bootable USB using
YUMI – Multiboot USB Creator
or Ventoy or
pendrivelinux
Then you just boot your machine from that stick and you can update firmware, no command line necessary.
Screenshot https://ibb.co/0VydFgB
Nice guide, thanks! This worked fine for me with a Samsung 980 using the ISO from the Samsung support page and MX Linux live USB.
I didn’t catch that the ISO had an update tool as well and was expecting a worse solution (wanted to try nvme-cli first, but installing it failed horribly).
Wow thanks so much for this! Worked on Kubuntu 23.10 Mantic in 2023. Samsung website is still recommending an archaic method!
You just made my day, I struggled since I bought that f…n drive within an awful expensive laptop. Always starting up in r/o mode, hanging on boot, after some “warmup” w/ hard resets (very healthy for the hdd as 2nd drive in the system) it booted.
Thanks for the clarification, why “anykey” didn’t work, whatever I pressed w/their stupid rescue-iso. Shame on SAMSUNG, will be my last high tech stuff from them for sure. Everything worked fine, except if upgrading the system ssd, I recommend strongly to boot the system simply from a rescue dvd, mount your extracted stuff and then do the update. That thing will unmount your system w/o any grace, killing all proc down to the bare metal, and no one knows, what a total loss of the root means for your system.
But your hint saved my system and my weekend’s mood 🙂
Thanks al lot!!
I used this procedure to update the firmware on my Samsung 990 Pro while the drive was mounted. Worked like a charm, no issues!
This worked to update the firmware on a 990 PRO 4TB with Heat Sink on Intel NUC 13. Thanks!!!!!!!!!!
Still enjoying this great post. Thanks!