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:
Make it executable with
List all SSD/NVME drives with
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
Place the script in a directory of your choice and make it executable with
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:
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:
Step 3
Mount and unpack the content of the ISO file:
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
and start the firmware upgrade process by
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
!! 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: