Collection of SAMSUNG NVMe SSD firmware
Almost all modern SSD drives support firmware upgrade via NVM Express commands. For linux you can use https://github.com/linux-nvme/nvme-cli
List all the NVMe SSDs
$ sudo nvme list
Node SN Model Namespace Usage Format FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1 S27FNY0HB04880 SAMSUNG MZVPV512HDGL-000H1 1 163.17 GB / 512.11 GB 512 B + 0 B BXW74H0Q
Get some info
$ sudo nvme id-ctrl -H /dev/nvme0
NVME Identify Controller:
vid : 0x144d
ssvid : 0x144d
sn : S27FNY0HB04880
mn : SAMSUNG MZVPV512HDGL-000H1
fr : BXW74H0Q
rab : 2
ieee : 002538
cmic : 0
[2:2] : 0 PCI
[1:1] : 0 Single Controller
[0:0] : 0 Single Port
mdts : 5
cntlid : 1
ver : 0
rtd3r : 0
rtd3e : 0
oaes : 0
[8:8] : 0 Namespace Attribute Changed Event Not Supported
oacs : 0x7
[3:3] : 0 NS Management and Attachment Not Supported
[2:2] : 0x1 FW Commit and Download Supported
[1:1] : 0x1 Format NVM Supported
[0:0] : 0x1 Sec. Send and Receive Supported
acl : 7
aerl : 3
frmw : 0x6
[4:4] : 0 Firmware Activate Without Reset Not Supported
[3:1] : 0x3 Number of Firmware Slots
[0:0] : 0 Firmware Slot 1 Read/Write
lpa : 0x1
[1:1] : 0 Command Effects Log Page Not Supported
[0:0] : 0x1 SMART/Health Log Page per NS Supported
elpe : 63
npss : 4
avscc : 0x1
[0:0] : 0x1 Admin Vendor Specific Commands uses NVMe Format
apsta : 0x1
[0:0] : 0x1 Autonomous Power State Transitions Supported
wctemp : 0
cctemp : 0
mtfa : 0
hmpre : 0
hmmin : 0
tnvmcap : 0
unvmcap : 0
rpmbs : 0
[31:24]: 0 Access Size
[23:16]: 0 Total Size
[5:3] : 0 Authentication Method
[2:0] : 0 Number of RPMB Units
sqes : 0x66
[7:4] : 0x6 Max SQ Entry Size (64)
[3:0] : 0x6 Min SQ Entry Size (64)
cqes : 0x44
[7:4] : 0x4 Max CQ Entry Size (16)
[3:0] : 0x4 Min CQ Entry Size (16)
nn : 1
oncs : 0x1f
[5:5] : 0 Reservations Not Supported
[4:4] : 0x1 Save and Select Supported
[3:3] : 0x1 Write Zeroes Supported
[2:2] : 0x1 Data Set Management Supported
[1:1] : 0x1 Write Uncorrectable Supported
[0:0] : 0x1 Compare Supported
fuses : 0
[0:0] : 0 Fused Compare and Write Not Supported
fna : 0
[2:2] : 0 Crypto Erase Not Supported as part of Secure Erase
[1:1] : 0 Crypto Erase Applies to Single Namespace(s)
[0:0] : 0 Format Applies to Single Namespace(s)
vwc : 0x1
[0:0] : 0x1 Volatile Write Cache Present
awun : 255
awupf : 0
nvscc : 1
[0:0] : 0x1 NVM Vendor Specific Commands uses NVMe Format
acwu : 0
sgls : 0
[0:0] : 0 Scatter-Gather Lists Not Supported
ps 0 : mp:9.00W operational enlat:5 exlat:5 rrt:0 rrl:0
rwt:0 rwl:0 idle_power:- active_power:-
ps 1 : mp:4.00W operational enlat:30 exlat:30 rrt:1 rrl:1
rwt:1 rwl:1 idle_power:- active_power:-
ps 2 : mp:3.00W operational enlat:100 exlat:100 rrt:2 rrl:2
rwt:2 rwl:2 idle_power:- active_power:-
ps 3 : mp:0.0700W non-operational enlat:500 exlat:5000 rrt:3 rrl:3
rwt:3 rwl:3 idle_power:- active_power:-
ps 4 : mp:0.0050W non-operational enlat:2000 exlat:22000 rrt:4 rrl:4
rwt:4 rwl:4 idle_power:- active_power:-
As we see the disk support Firmware Image Download command (0x1 FW Commit and Download Supported), has 3 Firmware Slots (0x3 Number of Firmware Slots) and 1st Firmware Slot in Read/Write mode(0 Firmware Slot 1 Read/Write) but I don't recommend using it.. Try to use free Firmware Slot, do not overwrite the original firmware.
Lets download firmware to controller SRAM
$ sudo nvme fw-download -f firmware.bin /dev/nvme0
Firmware download success
Write firmware to free Firmware Slot 2 without activation
$ sudo nvme fw-commit -s 2 -a 0 /dev/nvme0
Success committing firmware action:0 slot:2
Activate new firmware
$ sudo nvme fw-commit -s 2 -a 2 /dev/nvme0
Success committing firmware action:2 slot:2
Reboot and pray )
M | Z | X | X | X | X | X | X | X | X | X | X | - | X | X | X | X | X |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
##### | Type | Value |
---|---|---|
1 | Type | Memory (M) |
2 | Module Classification | Z: SSD |
3 | Form Factor | V: PCIeM.2 (22*80, PCIe x4), Q: PCIe2.5 inch 7mmt, 7: 2.5" 7mmT SATA |
4 | Line-Up | L: Client/SV (VNAND 3bit MLC), K: Client/SV (VNAND 2bit MLC) |
5 | Controller | B: Phoenix, 2: Elpis, 7: Pascal, T: RFX, W: Polaris, 4: MARVELL |
6-8 | SSD Density | 256, 512, 1T0, 2T0 |
9 | NAND PKG & NAND Voltage | H: BGA (LF,HF) |
10 | Flash Generation | M: 1st Generation, A: 2nd, B: 3rd, C: 4th, D: 5th, E: 6th ... |
11-12 | NAND Density | JR: 2T ODP 2CE (FBI), LS: 4T HDP 2CE(FBI), LA: 8T HDP 2CE(FBI), HQ: 1T QDP 4CE, JQ: 2T ODP 4CE, LR: 4T HDP 4CE, LB: 8T HDP 4CE |
14 | Default | 0 |
15 | HW revision | 0: No revision |
16 | Packaging type | 0: Bulk, A: General |
17-18 | Customer | 00: World wide (non-SED), 07: World wide (SED), H7 - HP SED, L7 - Lenovo SED, D7 - Dell SED, etc |