Firmware update Samsung SSD in Linux

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! 😀

26 thoughts on “Firmware update Samsung SSD in Linux”

  1. 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.

    1. What? No, if you are using Windows, just flash using that? Confused here….

  2. 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

    1. Not sure what you mean, but running the newest firmware is always smart!

  3. 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?

    1. 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. 🙂

  4. 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.

    1. 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!

    2. 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 🙂

  5. 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

  6. 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.

    1. 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!

  7. “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

  8. 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.

  9. 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 ….

  10. 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.

  11. 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.

  12. 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.

Leave a Reply

Your email address will not be published. Required fields are marked *