[TUTORIAL] Update Samsung consumer SSD/NVME firmware in Proxmox

cwt

Well-Known Member
May 30, 2022
612
162
53
This is a short tutorial how to update the firmware of Samsung's consumer SSD/NVME drives in Proxmox.

!! CAUTION !! Upgrading firmwares is always a risk!

Before proceeding, make sure


- to backup your VMs which are located on the target drive(s)
- stop all your VMs/LXCs which are located on the target drive(s)

If Proxmox VE itself is located on the drives be sure to backup your configs and anything else which is important to you!

---

Determine current firmware versions with DC Toolkit V2

To get an overview of all installed SSD/NVME firmware you can use the DC Toolkit for Linux V2.

URL: https://semiconductor.samsung.com/consumer-storage/support/tools/

Direct Link: https://download.semiconductor.sams...sources/Samsung_SSD_DC_Toolkit_for_Linux_V2.1

Installation & usage

Login via shell to your PVE. Within the /root directory (or any other directory of your choice) download the DC Toolkit:

Bash:
wget -O ssdtoolkitv2 https://download.semiconductor.samsung.com/resources/software-resources/Samsung_SSD_DC_Toolkit_for_Linux_V2.1

Make it executable with

Bash:
chmod +x ssdtoolkitv2

List all SSD/NVME drives with

Bash:
./ssdtoolkitv2 -L

The tool will detect and list all drives including model, serial no., firmware, capacity, drive health and TBW. It's possible to update the firmware with the DC Toolkit but you'll need the appropiate .BIN file which is encrypted in the ISO files.

To manually decrypt the firmware from an ISO, take a look on this Python script at GitHub:

URL: https://github.com/chrivers/samsung-firmware-magic

There's another script available ion GitHub which decrpyts the .BIN file directly from the downloaded ISO:

URL: https://gist.github.com/Zibri/3b3c34c3ce36ec6c6f57618eeda6f200

It needs 7zip which can be installed with

Bash:
apt install p7zip-full

Place the script in a directory of your choice and make it executable with

Bash:
chmod +x sfwd2.sh

Usage:

./sfwd2.sh <Name-of-your-downloaded.iso>

It will automatically extract and create these files:

DSRD.bin, DSRD.magic, SVTXXXX.bin (<-- the decrypted firmware file) and SVTXXXX.magic

With the appropiate .BIN file available, you can update the firmware with the DC Toolkit.

For a complete set of instructions take a look on the official manual:

URL: https://download.semiconductor.sams...-manual/Samsung_DCToolkit_V2.1_User_Guide.pdf

---
Firmware upgrade with ISO files from Samsung

Step 1


Login via shell and create some temporary directories.

From the root directory we'll use /temp as the base folder:

Bash:
mkdir -p /temp/{iso,fwupgrade}

Now you should have /temp with "iso" and "fwupgrade" as subfolders.

Step 2

Open the URL with Samsung's firmware and copy the download link (ISO file) for your drive(s).

URL: https://semiconductor.samsung.com/consumer-storage/support/tools/

In this example, we'll update the 990 Pro firmware.

CD into your /temp dir:

Bash:
cd /temp

wget https://download.semiconductor.samsung.com/resources/software-resources/Samsung_SSD_990_PRO_4B2QJXD7.iso

Step 3

Mount and unpack the content of the ISO file:

Bash:
mount -o loop ./Samsung_SSD_990_PRO_4B2QJXD7.iso /temp/iso

cd /temp/fwupgrade

gzip -dc /temp/iso/initrd | cpio -idv --no-absolute-filenames

Step 4

Within /temp/fwupgrade you should see the following folders:

bin dev etc init lib lib32 linuxrc media mnt opt proc root run sbin sys tmp usr var

CD into /temp/fwupgrade/root/fumagician

Bash:
cd /temp/fwupgrade/root/fumagician

and start the firmware upgrade process by

Bash:
./fumagician

Do not run the fumagician.sh, it will only reboot your PVE.

Follow the steps in the update utility. It will automatically detect your drives and offer an upgrade. If everything worked well be sure to reboot your Proxmox VE so that the new firmware gets active. To be absolutely sure, power off your host and switch it on again after a few seconds.

The /temp dir can be removed after the reboot.

Hope this tut helps.

Cheers
 
Last edited:
Does this process of installing the ISO have to be run on the NVME drive that you intend to update or just the drive that Proxmox VE is installed on? I have a secondary Samsung 990 NVME drive that will eventually have my VM's on that I want to be able to update also.
 
How can you check the currently running firmware version on each of your Samsung NVME drives before upgrading?
 
Does this process of installing the ISO have to be run on the NVME drive that you intend to update or just the drive that Proxmox VE is installed on? I have a secondary Samsung 990 NVME drive that will eventually have my VM's on that I want to be able to update also.

If you download and run the ISO for the 990 NVME it will detect ALL installed drives of this type. You can choose which drive shall be updated. To check which firmware is installed use the DC Toolkit V2. I made an update in the tutorial in the first section about this.
 
  • Like
Reactions: Wasca

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!