PM863 FW File

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

blunden

Well-Known Member
Nov 29, 2019
1,210
432
83
Well that's maybe the Case for you, but it clearly didn't work for me:

Code:
root@HOST:/# ./Samsung_SSD_DC_Toolkit_for_Linux_V2.1 --disk 1 --firmware-update --fwpackage-path ./GXT5404Q.bin
================================================================================================
Samsung DC Toolkit Version 2.1.L.Q.0
Copyright (C) 2017 SAMSUNG Electronics Co. Ltd. All rights reserved.
================================================================================================
------------------------------------------------------------------------------------------------
Disk Number: *1 | Model Name: SAMSUNG MZ7LM1T9HMJP-00005 | Firmware Version: GXT52P4Q
------------------------------------------------------------------------------------------------
  [[ WARNING ]]

  Please Note that Firmware Update may format the disk and you will lose your data.
  Please Ensure that data backup is taken before proceeding to Firmware Update.
  If you are sure then only proceed, otherwise restart the application after taking a backup.
  Continue Firmware Update ? [ yes ]: yes
------------------------------------------------------------------------------------------------
[ERROR] Firmware Update Failed Due to a failure in device interaction.
------------------------------------------------------------------------------------------------
[F/W Update] Failure
------------------------------------------------------------------------------------------------
Unless you mean with hdparm ?

In which Case it also fails (scroll to the RIGHT to see why):
Code:
root@HOST:/# hdparm --fwdownload ./GXT5404Q.bin --yes-i-know-what-i-am-doing --please-destroy-my-drive /dev/sdb

/dev/sdb:
fwdownload: xfer_mode=3 min=1 max=2048 size=512
...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................SG_IO: bad/missing sense data, sb[]:  f0 00 05 04 51 e0 00 0a 00 00 00 00 21 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
. Done.
View attachment 45085

SMART Information if it matters:
Code:
smartctl 7.4 2024-10-15 r5620 [x86_64-linux-6.14.8-2-pve] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Samsung based SSDs
Device Model:     SAMSUNG MZ7LM1T9HMJP-00005
Serial Number:    S2TVNX0HC10321
LU WWN Device Id: 5 002538 c404c0e2e
Firmware Version: GXT52P4Q
User Capacity:    1,920,383,410,176 bytes [1.92 TB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
TRIM Command:     Available, deterministic, zeroed
Device is:        In smartctl database 7.3/5528
ATA Version is:   ACS-2, ATA8-ACS T13/1699-D revision 4c
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Mon Aug 18 10:27:47 2025 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x02)    Offline data collection activity
                    was completed without error.
                    Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0)    The previous self-test routine completed
                    without error or no self-test has ever
                    been run.
Total time to complete Offline
data collection:         ( 6000) seconds.
Offline data collection
capabilities:              (0x53) SMART execute Offline immediate.
                    Auto Offline data collection on/off support.
                    Suspend Offline collection upon new
                    command.
                    No Offline surface scan supported.
                    Self-test supported.
                    No Conveyance Self-test supported.
                    Selective Self-test supported.
SMART capabilities:            (0x0003)    Saves SMART data before entering
                    power-saving mode.
                    Supports SMART auto save timer.
Error logging capability:        (0x01)    Error logging supported.
                    General Purpose Logging supported.
Short self-test routine
recommended polling time:      (   2) minutes.
Extended self-test routine
recommended polling time:      ( 100) minutes.
SCT capabilities:            (0x003d)    SCT Status supported.
                    SCT Error Recovery Control supported.
                    SCT Feature Control supported.
                    SCT Data Table supported.

SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   081   081   010    Pre-fail  Always       -       1240
  9 Power_On_Hours          0x0032   088   088   000    Old_age   Always       -       56080
12 Power_Cycle_Count       0x0032   099   099   000    Old_age   Always       -       34
177 Wear_Leveling_Count     0x0013   097   097   005    Pre-fail  Always       -       221
179 Used_Rsvd_Blk_Cnt_Tot   0x0013   081   081   010    Pre-fail  Always       -       1240
180 Unused_Rsvd_Blk_Cnt_Tot 0x0013   081   081   010    Pre-fail  Always       -       5252
181 Program_Fail_Cnt_Total  0x0032   100   100   010    Old_age   Always       -       0
182 Erase_Fail_Count_Total  0x0032   100   100   010    Old_age   Always       -       0
183 Runtime_Bad_Block       0x0013   081   081   010    Pre-fail  Always       -       1240
184 End-to-End_Error        0x0033   100   100   097    Pre-fail  Always       -       0
187 Uncorrectable_Error_Cnt 0x0032   099   099   000    Old_age   Always       -       531
190 Airflow_Temperature_Cel 0x0032   067   057   000    Old_age   Always       -       33
194 Temperature_Celsius     0x0022   067   057   000    Old_age   Always       -       33 (Min/Max 16/43)
195 ECC_Error_Rate          0x001a   199   199   000    Old_age   Always       -       531
197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       0
199 CRC_Error_Count         0x003e   100   100   000    Old_age   Always       -       0
202 Exception_Mode_Status   0x0033   100   100   010    Pre-fail  Always       -       0
235 POR_Recovery_Count      0x0012   099   099   000    Old_age   Always       -       26
241 Total_LBAs_Written      0x0032   099   099   000    Old_age   Always       -       600744291374
242 Total_LBAs_Read         0x0032   096   096   000    Old_age   Always       -       8933141719139
243 SATA_Downshift_Ct       0x0032   100   100   000    Old_age   Always       -       0
244 Thermal_Throttle_St     0x0032   100   100   000    Old_age   Always       -       0
245 Timed_Workld_Media_Wear 0x0032   100   100   000    Old_age   Always       -       65535
246 Timed_Workld_RdWr_Ratio 0x0032   100   100   000    Old_age   Always       -       65535
247 Timed_Workld_Timer      0x0032   100   100   000    Old_age   Always       -       65535
251 NAND_Writes             0x0032   100   100   000    Old_age   Always       -       926532040704

SMART Error Log Version: 1
ATA Error Count: 531 (device log contains only the most recent five errors)
    CR = Command Register [HEX]
    FR = Features Register [HEX]
    SC = Sector Count Register [HEX]
    SN = Sector Number Register [HEX]
    CL = Cylinder Low Register [HEX]
    CH = Cylinder High Register [HEX]
    DH = Device/Head Register [HEX]
    DC = Device Command Register [HEX]
    ER = Error register [HEX]
    ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 531 occurred at disk power-on lifetime: 21909 hours (912 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 a0 90 c0 69 40  Error: UNC at LBA = 0x0069c090 = 6930576

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 80 a0 90 c0 69 40 14      00:35:33.170  READ FPDMA QUEUED
  60 80 d8 10 c0 69 40 1b      00:35:33.170  READ FPDMA QUEUED
  60 70 f0 90 c7 69 40 1e      00:35:33.170  READ FPDMA QUEUED
  60 08 80 68 3b 83 40 10      00:35:33.170  READ FPDMA QUEUED
  60 80 88 10 c7 69 40 11      00:35:33.170  READ FPDMA QUEUED

Error 530 occurred at disk power-on lifetime: 21909 hours (912 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 a8 00 c0 69 40  Error: UNC at LBA = 0x0069c000 = 6930432

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 10 a8 00 c0 69 40 15      00:35:33.170  READ FPDMA QUEUED
  60 08 40 88 fe 56 40 08      00:35:33.170  READ FPDMA QUEUED
  60 08 58 60 66 5f 40 0b      00:35:33.170  READ FPDMA QUEUED
  60 80 38 80 f9 69 40 07      00:35:33.170  READ FPDMA QUEUED
  60 80 60 00 f9 69 40 0c      00:35:33.170  READ FPDMA QUEUED

Error 529 occurred at disk power-on lifetime: 21909 hours (912 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 98 90 c0 69 40  Error: UNC at LBA = 0x0069c090 = 6930576

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 80 98 90 c0 69 40 13      00:35:33.170  READ FPDMA QUEUED
  60 10 d8 d0 3e 76 40 1b      00:35:33.170  READ FPDMA QUEUED
  60 08 f0 70 43 3f 40 1e      00:35:33.170  READ FPDMA QUEUED
  60 08 a0 38 8e 0d 40 14      00:35:33.170  READ FPDMA QUEUED
  60 80 80 10 c0 69 40 10      00:35:33.170  READ FPDMA QUEUED

Error 528 occurred at disk power-on lifetime: 21909 hours (912 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 c8 00 8d b3 40  Error: UNC at LBA = 0x00b38d00 = 11767040

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 58 c8 00 8d b3 40 19      00:35:33.169  READ FPDMA QUEUED
  60 80 58 80 7f 69 40 0b      00:35:33.169  READ FPDMA QUEUED
  60 28 28 58 44 78 40 05      00:35:33.169  READ FPDMA QUEUED
  60 58 70 00 44 78 40 0e      00:35:33.169  READ FPDMA QUEUED
  60 80 a0 00 7f 69 40 14      00:35:33.169  READ FPDMA QUEUED

Error 527 occurred at disk power-on lifetime: 21909 hours (912 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 48 80 68 e6 40  Error: UNC at LBA = 0x00e66880 = 15100032

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 28 48 80 68 e6 40 09      00:35:33.169  READ FPDMA QUEUED
  60 80 18 00 7e 69 40 03      00:35:33.169  READ FPDMA QUEUED
  60 80 38 80 7d 69 40 07      00:35:33.169  READ FPDMA QUEUED
  60 58 40 28 cf e8 40 08      00:35:33.169  READ FPDMA QUEUED
  60 28 60 00 cf e8 40 0c      00:35:33.169  READ FPDMA QUEUED

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%     56061         -
# 2  Short offline       Completed without error       00%     56058         -

SMART Selective self-test log data structure revision number 1
SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
  255        0    65535  Read_scanning was completed without error
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

The above only provides legacy SMART information - try 'smartctl -x' for more
EDIT 1: did a complete Shutdown of the System, tried smartctl and Samsung_SSD_DC_Toolkit_for_Linux_V2.1, still GXT52P4Q Firmware :( .
The "bad/missing sense data" is unrelated as far as I know. I got that several times during the different commands I had to use to remove the security lock on my drive through the use of ERRORMOD and the commands worked anyway.

Note that I also flashed a PM863a drive that never went through ERRORMOD too, so that wasn't needed. I used hdparm to flash the firmware in both cases.
 

luckylinux

Well-Known Member
Mar 18, 2012
1,668
547
113
100% it doent make sense.

The label dates on the drive

2016:
MZ7LM1T9HCJM-00005 - GXT1003Q

2015:
MZ7LM1T9HCJM-000FB - GXT34Z3Q
2016.06 - MZ7LM1T9HCJM-00003 - GXT3003Q

But as I said, it's currently running GXT33P3Q, so Somebody somehow must have updated it ...
 

blunden

Well-Known Member
Nov 29, 2019
1,210
432
83
And you are positive that even for the one that did NOT go through ERRORMOD, the Firmware Version gets reported correctly (i.e. updated, GXT5404Q) after a Power Cycle ?

My Remarks about the version NOT being changed was for "my" Firmware Flashing.

I did NOT try to flash the GXT5404Q (which would give Errors) AND Power Cycle that one (complete System Shutdown).

Should I try that one instead ?
This was more than a year ago so I don't remember exactly when it started showing the new firmware version, but they both do so now in CrystalDiskInfo (they're both currently in a Windows system).

I don't know what the issue is for you. It seems to say "Done" to me. I just wanted to tell you that the unbranded firmware provided is working.
 

blunden

Well-Known Member
Nov 29, 2019
1,210
432
83
It says Done but it also complains about SG_IO: bad/missing sense data, sb[]: f0 00 05 04 51 e0 00 0a 00 00 00 00 21 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 before that. Which you say it's not important. It's true I didn't do a Power Cycle after applying the GXT5404Q Firmware (only the one I modified), so I cannot be 100% sure that it wouldn't work. It just seems weird that the File & Command that yields an Error is the one that works correctly in the End :rolleyes: .

Can you please provide some smartctl Output (or similar from Windows, maybe CrystalDiskInfo Screenshots about the Details ?) to see if there is something different between them ? Thanks :).
The sense data error will probably show up with most or all hdparm commands you run. That was the case for me, but every single one of them still worked fine.

The MD5 checksum of the GXT5405Q firmware I flashed is acdd9bf867ad8c2be0ef6c06424dbf00.

Code:
----------------------------------------------------------------------------
 (05) SAMSUNG MZ7LM3T8HMLP-00005
----------------------------------------------------------------------------
           Model : SAMSUNG MZ7LM3T8HMLP-00005
        Firmware : GXT5404Q
   Serial Number : S2TYNX0K60XXXX
       Disk Size : 3840,7 GB (8,4/137,4/3840,7/3840,7)
     Buffer Size : Unknown
     Queue Depth : 32
    # of Sectors : 7501476528
   Rotation Rate : ---- (SSD)
       Interface : Serial ATA
   Major Version : ACS-2
   Minor Version : ATA8-ACS version 4c
   Transfer Mode : SATA/600 | SATA/600

-- S.M.A.R.T. --------------------------------------------------------------
ID Cur Wor Thr RawValues(6) Attribute Name
05 100 100 _10 000000000000 Reallocated Sector Count
09 _90 _90 __0 00000000B66C Power-on Hours
0C _99 _99 __0 0000000000E3 Power-on Count
B1 _99 _99 __5 00000000002C Wear Leveling Count
B3 100 100 _10 000000000000 Used Reserved Block Count (Total)
B4 100 100 _10 0000000032ED Unused Reserved Block Count (Total)
B5 100 100 _10 000000000000 Program Fail Count (Total)
B6 100 100 _10 000000000000 Erase Fail Count (Total)
B7 100 100 _10 000000000000 Runtime Bad Block (Total)
B8 100 100 _97 000000000000 Error Detection
BB 100 100 __0 000000000000 Uncorrectable Error Count
BE _65 _55 __0 000000000023 Airflow Temperature
C2 _65 _55 __0 002D000E0023 Temperature
C3 200 200 __0 000000000000 ECC Error Rate
C5 100 100 __0 000000000000 Vendor Specific
C7 100 100 __0 000000000000 CRC Error Count
CA 100 100 _10 000000000000 SSD Mode Status
EB _99 _99 __0 0000000000AA POR Recovery Count
F1 _99 _99 __0 0002CB119C63 Total LBA Written
F2 _99 _99 __0 00059C32DCE7 Total LBA Read
F3 100 100 __0 000000000000 Vendor Specific
F4 100 100 __0 000000000000 Vendor Specific
F5 100 100 __0 00000000FFFF Vendor Specific
F6 100 100 __0 00000000FFFF Vendor Specific
F7 100 100 __0 00000000FFFF Vendor Specific
FB 100 100 __0 00588370EC00 Vendor Specific
You can find some hdparm output from my locked drive that I unlocked here:


Notice how it has one of those bad sense data errors in the middle of the output there. :) The size etc. is wrong in ERRORMOD mode though.
 
  • Like
Reactions: luckylinux

pimposh

hardware pimp
Nov 19, 2022
434
270
63
What about rendering drive errormode to get it flashed again with stock 5404? Sounds like gamble but may work.
 

blunden

Well-Known Member
Nov 29, 2019
1,210
432
83
Is it a Requirement though ? I believe you said before that for 1 Drive at least you did NOT need to do that, yet it seems (at least after a Power Cycle or some Time) to report the correct GXT5404Q Firmware Version ...
No, it's not a requirement. :) My second one updated just fine without doing so. I only used ERRORMOD to bypass the ATA Security lock to allow me to secure erase it and put it back to a useful state.
 
  • Like
Reactions: luckylinux

blunden

Well-Known Member
Nov 29, 2019
1,210
432
83
Funnily enough IIRC I did a Secure Erase (IIRC using Samsung SSD DC Magician) before Formatting the Drive & installing Proxmox VE on it.

Also not sure if that is required though :( .
That's not required either. The second PM863a I mentioned was updated with data on it.
 
  • Like
Reactions: luckylinux

luckylinux

Well-Known Member
Mar 18, 2012
1,668
547
113
I attempted to Upgrade my Drive using the Firmware on the GMX Archive, but sadly it didn't work for me.

Using Samsung SSD DC Magician I was getting an Error while attempting to flash the new Firmware (GXT5404Q).

So I had to dig ...

Overall the Procedure is this one:

However, for whatever Reason, the Firmware seems to have Changed, even though it's the same Version, so I was getting a not multiple of 512 Bytes Error from hdparm.

Strangely enough, even with the same original Filename (or Dell changed something ???), I was getting a file size (1048160) not a multiple of 512 Error.

So after Trimming the first 304 Bytes like EUGEN did and generated GC5B_NF_MOD_01.fwh, I had to trim a further 96 Bytes and generate GC5B_NF_MOD_02.fwh.

Then I got the same Message EUGEN did, although slightly different (SG_IO: bad/missing sense data, sb[]: f0 00 05 04 51 e0 00 0a 00 00 00 00 21 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00).

I finally trimmed another 512 Bytes and got the success I wanted: ................................. Done (same as EUGEN).

So, not sure if EUGEN remembered correctly the 304 Bytes ? I had to trim a further 96 Bytes, so 400 Bytes in Total. Plus the 512 Bytes at the next "Pass", same as EUGEN.

Code:
dd if=SAMSUNG_SM863_GB55.fwh of=GC5B_NF_MOD_01.fwh ibs=1 obs=1 skip=304

dd if=GC5B_NF_MOD_01.fwh of=GC5B_NF_MOD_02.fwh ibs=1 obs=1 skip=96

dd if=GC5B_NF_MOD_02.fwh of=GC5B_NF_MOD_03.fwh ibs=1 obs=1 skip=512

hdparm –fwdownload GC5B_NF_MOD_03.fwh –yes-i-know-what-i-am-doing –please-destroy-my-drive /dev/<drive>
Checksum of the Original Dell FW was (sha256sum): ef96e93c8b3fc9946382edaa76d3cb7f3497858c00e9c062f2a717ce3264b911 SAMSUNG_SM863_GB55.fwh

If/when my Comment will be approved, it will be here:

Not 100% sure if anything changed, since, like everybody else, the Version Information that I get via SMART (smartctl or Samsung SSD DC Magician 2.1) is the same as before (GXT52P4Q), even though it should be GXT5404Q.
 
Last edited:

pimposh

hardware pimp
Nov 19, 2022
434
270
63
Try to get it flashed via SSTK ? GXT52P4Q
Trt to figure out meaning of 6th character. There was a rule about SED drives, might be that yours also is somehow different than typical stock SKU.
 

luckylinux

Well-Known Member
Mar 18, 2012
1,668
547
113
SM=!PM.
Why of GC5B while if GC55 and they both are different models?
What are you saying exactly ????

In the GMX Archive there IS a PM863a but it did NOT work !

EDIT 1: I see now ... EUGEN Tutorial on that Website linked to the SM863, whereas he claims to have fixed PM863a Drives. Is this what you meant ?

GC5B seems to be the correct one:
 
Last edited:

blunden

Well-Known Member
Nov 29, 2019
1,210
432
83
Try to get it flashed via SSTK ? GXT52P4Q
Trt to figure out meaning of 6th character. There was a rule about SED drives, might be that yours also is somehow different than typical stock SKU.
Yeah, I've never seen that firmware version format before. Might indeed hold some significance. :)

My drives were previously on firmware GXT5204Q, the firmware they shipped with from the factory according to the sticker.
 

pimposh

hardware pimp
Nov 19, 2022
434
270
63
Indeed open market/Amazon/Oracle/Dell/etc always was in drive model itself (-xxxxx)
However i do not think cross-flashing between different firmware family was ever possible, also for other Samsung drives incl. 9xx NVMes.

And i think you're facing exactly this issue here. Fact that controller accept uploaded FW doesn't mean it will do replacement internally.
 

luckylinux

Well-Known Member
Mar 18, 2012
1,668
547
113
For the moment i thought that these cmdlines are yours and wondered why things are so mixed up.
The Command Line were mine. And also from the linked Comment. I just had to remove a further 96 Bytes as I said.

HOWEVER, EUGEN linked a GB55 File while mentioning and working on a GC5B. And Yesterday evening I failed to notice that Difference !

Thank you for pointing that out :).

That's where the Confusion comes :rolleyes: .

The GC5B File should be the correct one for the PM863a (SAMSUNG MZ7LM1T9HMJP-00005), well at least the MZ7LM1T9HMJP matches what Dell claims (MZ7LM1T9HMJP0D3), where the 0D3 is probably the OEM Identifier Code:

As I said, I also tried the GMX File for PM863a, but it did NOT work for me unfortunately :(. Probably somebody mixed up PM863 and PM863a in that Folder, I don't know.

Dell trimmed versions indeed do flash but do not change existing version visible via SMART.
Then How one knows if it works at all (flashing fw) ?

Assumption is it does since there are numerous reports of getting drives out of errormod (yet version does not change).
Yeah I agree, it's very frustrating :(. It seems that if the initial Firmware was GXT5104Q, then some SMART Attributes get erased, but that is not the case with GXT5204Q.

Mine didn't go / wasn't into ERRORMOD to begin with.

Commands with the correct Firmware:
Code:
dd if=GC5B_NF.fwh of=GC5B_NF_MOD_01.fwh ibs=1 obs=1 skip=304

dd if=GC5B_NF_MOD_01.fwh of=GC5B_NF_MOD_02.fwh ibs=1 obs=1 skip=512

hdparm --fwdownload ./GC5B_NF_MOD_02.fwh --yes-i-know-what-i-am-doing --please-destroy-my-drive /dev/sdb

/dev/sdb:
fwdownload: xfer_mode=3 min=1 max=2048 size=512
............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... Done.
But yeah, no way to tell if it did anything.
Heck it was running even with the SM863 Firmware.
After flashing the trimmed correct PM863a Firmware, there wasn't any Data loss, I did a zpool scrub rpool, but that didn't detect anything.
 

DarkServant

Active Member
Apr 5, 2022
124
99
28
I am sick of this matter.
But until a person with some in-depth know-how cracks this lockdown and shares instructions how to load the stock/original firmware (JTAG-"hack" / service-mode) i don't see a solution. There are people out there i am sure, but if they signed an NDA?
It's IMHO a crime because of the wasted labor/energy/resources...
 
  • Like
Reactions: luckylinux

luckylinux

Well-Known Member
Mar 18, 2012
1,668
547
113
I successfully flashed two PM863a drives with the unbranded GXT5404Q firmware and their firmware numbers updated correctly (after a power cycle I believe). I mentioned that earlier in this thread.
Well that's maybe the Case for you, but it clearly didn't work for me:

Code:
root@HOST:/# ./Samsung_SSD_DC_Toolkit_for_Linux_V2.1 --disk 1 --firmware-update --fwpackage-path ./GXT5404Q.bin
================================================================================================
Samsung DC Toolkit Version 2.1.L.Q.0
Copyright (C) 2017 SAMSUNG Electronics Co. Ltd. All rights reserved.
================================================================================================
------------------------------------------------------------------------------------------------
Disk Number: *1 | Model Name: SAMSUNG MZ7LM1T9HMJP-00005 | Firmware Version: GXT52P4Q
------------------------------------------------------------------------------------------------
  [[ WARNING ]]

  Please Note that Firmware Update may format the disk and you will lose your data.
  Please Ensure that data backup is taken before proceeding to Firmware Update.
  If you are sure then only proceed, otherwise restart the application after taking a backup.
  Continue Firmware Update ? [ yes ]: yes
------------------------------------------------------------------------------------------------
[ERROR] Firmware Update Failed Due to a failure in device interaction.
------------------------------------------------------------------------------------------------
[F/W Update] Failure
------------------------------------------------------------------------------------------------
Unless you mean with hdparm ?

In which Case it also fails (scroll to the RIGHT to see why):
Code:
root@HOST:/# hdparm --fwdownload ./GXT5404Q.bin --yes-i-know-what-i-am-doing --please-destroy-my-drive /dev/sdb

/dev/sdb:
fwdownload: xfer_mode=3 min=1 max=2048 size=512
...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................SG_IO: bad/missing sense data, sb[]:  f0 00 05 04 51 e0 00 0a 00 00 00 00 21 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
. Done.
1755506296684.png

SMART Information if it matters:
Code:
smartctl 7.4 2024-10-15 r5620 [x86_64-linux-6.14.8-2-pve] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Samsung based SSDs
Device Model:     SAMSUNG MZ7LM1T9HMJP-00005
Serial Number:    S2TVNX0HC10321
LU WWN Device Id: 5 002538 c404c0e2e
Firmware Version: GXT52P4Q
User Capacity:    1,920,383,410,176 bytes [1.92 TB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
TRIM Command:     Available, deterministic, zeroed
Device is:        In smartctl database 7.3/5528
ATA Version is:   ACS-2, ATA8-ACS T13/1699-D revision 4c
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Mon Aug 18 10:27:47 2025 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x02)    Offline data collection activity
                    was completed without error.
                    Auto Offline Data Collection: Disabled.
Self-test execution status:      (   0)    The previous self-test routine completed
                    without error or no self-test has ever
                    been run.
Total time to complete Offline
data collection:         ( 6000) seconds.
Offline data collection
capabilities:              (0x53) SMART execute Offline immediate.
                    Auto Offline data collection on/off support.
                    Suspend Offline collection upon new
                    command.
                    No Offline surface scan supported.
                    Self-test supported.
                    No Conveyance Self-test supported.
                    Selective Self-test supported.
SMART capabilities:            (0x0003)    Saves SMART data before entering
                    power-saving mode.
                    Supports SMART auto save timer.
Error logging capability:        (0x01)    Error logging supported.
                    General Purpose Logging supported.
Short self-test routine
recommended polling time:      (   2) minutes.
Extended self-test routine
recommended polling time:      ( 100) minutes.
SCT capabilities:            (0x003d)    SCT Status supported.
                    SCT Error Recovery Control supported.
                    SCT Feature Control supported.
                    SCT Data Table supported.

SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   081   081   010    Pre-fail  Always       -       1240
  9 Power_On_Hours          0x0032   088   088   000    Old_age   Always       -       56080
12 Power_Cycle_Count       0x0032   099   099   000    Old_age   Always       -       34
177 Wear_Leveling_Count     0x0013   097   097   005    Pre-fail  Always       -       221
179 Used_Rsvd_Blk_Cnt_Tot   0x0013   081   081   010    Pre-fail  Always       -       1240
180 Unused_Rsvd_Blk_Cnt_Tot 0x0013   081   081   010    Pre-fail  Always       -       5252
181 Program_Fail_Cnt_Total  0x0032   100   100   010    Old_age   Always       -       0
182 Erase_Fail_Count_Total  0x0032   100   100   010    Old_age   Always       -       0
183 Runtime_Bad_Block       0x0013   081   081   010    Pre-fail  Always       -       1240
184 End-to-End_Error        0x0033   100   100   097    Pre-fail  Always       -       0
187 Uncorrectable_Error_Cnt 0x0032   099   099   000    Old_age   Always       -       531
190 Airflow_Temperature_Cel 0x0032   067   057   000    Old_age   Always       -       33
194 Temperature_Celsius     0x0022   067   057   000    Old_age   Always       -       33 (Min/Max 16/43)
195 ECC_Error_Rate          0x001a   199   199   000    Old_age   Always       -       531
197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       0
199 CRC_Error_Count         0x003e   100   100   000    Old_age   Always       -       0
202 Exception_Mode_Status   0x0033   100   100   010    Pre-fail  Always       -       0
235 POR_Recovery_Count      0x0012   099   099   000    Old_age   Always       -       26
241 Total_LBAs_Written      0x0032   099   099   000    Old_age   Always       -       600744291374
242 Total_LBAs_Read         0x0032   096   096   000    Old_age   Always       -       8933141719139
243 SATA_Downshift_Ct       0x0032   100   100   000    Old_age   Always       -       0
244 Thermal_Throttle_St     0x0032   100   100   000    Old_age   Always       -       0
245 Timed_Workld_Media_Wear 0x0032   100   100   000    Old_age   Always       -       65535
246 Timed_Workld_RdWr_Ratio 0x0032   100   100   000    Old_age   Always       -       65535
247 Timed_Workld_Timer      0x0032   100   100   000    Old_age   Always       -       65535
251 NAND_Writes             0x0032   100   100   000    Old_age   Always       -       926532040704

SMART Error Log Version: 1
ATA Error Count: 531 (device log contains only the most recent five errors)
    CR = Command Register [HEX]
    FR = Features Register [HEX]
    SC = Sector Count Register [HEX]
    SN = Sector Number Register [HEX]
    CL = Cylinder Low Register [HEX]
    CH = Cylinder High Register [HEX]
    DH = Device/Head Register [HEX]
    DC = Device Command Register [HEX]
    ER = Error register [HEX]
    ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 531 occurred at disk power-on lifetime: 21909 hours (912 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 a0 90 c0 69 40  Error: UNC at LBA = 0x0069c090 = 6930576

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 80 a0 90 c0 69 40 14      00:35:33.170  READ FPDMA QUEUED
  60 80 d8 10 c0 69 40 1b      00:35:33.170  READ FPDMA QUEUED
  60 70 f0 90 c7 69 40 1e      00:35:33.170  READ FPDMA QUEUED
  60 08 80 68 3b 83 40 10      00:35:33.170  READ FPDMA QUEUED
  60 80 88 10 c7 69 40 11      00:35:33.170  READ FPDMA QUEUED

Error 530 occurred at disk power-on lifetime: 21909 hours (912 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 a8 00 c0 69 40  Error: UNC at LBA = 0x0069c000 = 6930432

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 10 a8 00 c0 69 40 15      00:35:33.170  READ FPDMA QUEUED
  60 08 40 88 fe 56 40 08      00:35:33.170  READ FPDMA QUEUED
  60 08 58 60 66 5f 40 0b      00:35:33.170  READ FPDMA QUEUED
  60 80 38 80 f9 69 40 07      00:35:33.170  READ FPDMA QUEUED
  60 80 60 00 f9 69 40 0c      00:35:33.170  READ FPDMA QUEUED

Error 529 occurred at disk power-on lifetime: 21909 hours (912 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 98 90 c0 69 40  Error: UNC at LBA = 0x0069c090 = 6930576

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 80 98 90 c0 69 40 13      00:35:33.170  READ FPDMA QUEUED
  60 10 d8 d0 3e 76 40 1b      00:35:33.170  READ FPDMA QUEUED
  60 08 f0 70 43 3f 40 1e      00:35:33.170  READ FPDMA QUEUED
  60 08 a0 38 8e 0d 40 14      00:35:33.170  READ FPDMA QUEUED
  60 80 80 10 c0 69 40 10      00:35:33.170  READ FPDMA QUEUED

Error 528 occurred at disk power-on lifetime: 21909 hours (912 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 c8 00 8d b3 40  Error: UNC at LBA = 0x00b38d00 = 11767040

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 58 c8 00 8d b3 40 19      00:35:33.169  READ FPDMA QUEUED
  60 80 58 80 7f 69 40 0b      00:35:33.169  READ FPDMA QUEUED
  60 28 28 58 44 78 40 05      00:35:33.169  READ FPDMA QUEUED
  60 58 70 00 44 78 40 0e      00:35:33.169  READ FPDMA QUEUED
  60 80 a0 00 7f 69 40 14      00:35:33.169  READ FPDMA QUEUED

Error 527 occurred at disk power-on lifetime: 21909 hours (912 days + 21 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 48 80 68 e6 40  Error: UNC at LBA = 0x00e66880 = 15100032

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  60 28 48 80 68 e6 40 09      00:35:33.169  READ FPDMA QUEUED
  60 80 18 00 7e 69 40 03      00:35:33.169  READ FPDMA QUEUED
  60 80 38 80 7d 69 40 07      00:35:33.169  READ FPDMA QUEUED
  60 58 40 28 cf e8 40 08      00:35:33.169  READ FPDMA QUEUED
  60 28 60 00 cf e8 40 0c      00:35:33.169  READ FPDMA QUEUED

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%     56061         -
# 2  Short offline       Completed without error       00%     56058         -

SMART Selective self-test log data structure revision number 1
SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
  255        0    65535  Read_scanning was completed without error
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

The above only provides legacy SMART information - try 'smartctl -x' for more
EDIT 1: did a complete Shutdown of the System, tried smartctl and Samsung_SSD_DC_Toolkit_for_Linux_V2.1, still GXT52P4Q Firmware :( .
 
Last edited:

blunden

Well-Known Member
Nov 29, 2019
1,210
432
83
Has anyone had success with PM863?
MZ7LM1T9HCJM-00003
GTX3003Q
ERRORMOD
What about it? :) Have you tried either running a Secure Erase using hdparm or used Samsung's enterprise tools to kicking it out of ERRORMOD?
 

Jek123

Member
Apr 12, 2023
22
32
13
What about it? :) Have you tried either running a Secure Erase using hdparm or used Samsung's enterprise tools to kicking it out of ERRORMOD?
I tried this firmwares:
GA3A_trimmed_448.fwh
GA3A_trimmed_960.fwh
GA3A_trimmed_1472.fwh
GA3A_trimmed_1984.fwh
GA3A_trimmed_2496.fwh

GA3B_trimmed_448.fwh
GA3B_trimmed_960.fwh

GA39_trimmed_448.fwh
GA39_trimmed_960.fwh

GA38_trimmed_448.fwh
GA38_trimmed_960.fwh

Capacity is still 1gb

Secure Erase returns nothing at 960+ trimmed or an error at 448:
SG_IO: bad/missing sense data, sb[]: 70 00 05 00 060 00 00 0a 064 51 0 001 21 04 00 060 80 00 00 00 60 00 00 00 60 00 60 00 00 00 00 06

I couldn't find any other firmware
It feels like the firmware isn't being recorded at all
When changing the firmware, absolutely nothing changes, except "bad/missing sense data" error

I performed Secure Erase for every firmware update

upd:
this is also did not work
GXT5103Q.bin
GXT1003Q.bin
 
Last edited:

luckylinux

Well-Known Member
Mar 18, 2012
1,668
547
113
The "bad/missing sense data" is unrelated as far as I know. I got that several times during the different commands I had to use to remove the security lock on my drive through the use of ERRORMOD and the commands worked anyway.

Note that I also flashed a PM863a drive that never went through ERRORMOD too, so that wasn't needed. I used hdparm to flash the firmware in both cases.
And you are positive that even for the one that did NOT go through ERRORMOD, the Firmware Version gets reported correctly (i.e. updated, GXT5404Q) after a Power Cycle ?

My Remarks about the version NOT being changed was for "my" Firmware Flashing.

I did NOT try to flash the GXT5404Q (which would give Errors) AND Power Cycle that one (complete System Shutdown).

Should I try that one instead ?
 

Jek123

Member
Apr 12, 2023
22
32
13
Maybe I need some kind of special controller? or RAID controller
flashing from native SATA - no "bad/missing sense data" error
flashing from USB-SATA adapter - has "bad/missing sense data" error

security-erase from USB-SATA adapter - disables the drive for a while, then the drive reappears

security-erase from native SATA - the disk is stay in the system
 

blunden

Well-Known Member
Nov 29, 2019
1,210
432
83
Maybe I need some kind of special controller? or RAID controller
flashing from native SATA - no "bad/missing sense data" error
flashing from USB-SATA adapter - has "bad/missing sense data" error

security-erase from USB-SATA adapter - disables the drive for a while, then the drive reappears

security-erase from native SATA - the disk is stay in the system
A native SATA should be the best. I wouldn't necessarily worry too much about the "SG_IO: bad/missing sense data" warning/error though. If I recall correctly, it didn't affect anything and can simply be ignored.

I'm not sure why there are different firmware files for different sizes as the firnware should normally be the same regardless of size, unless they made an unrelated hardware change.

Did you find out if it's a particular OEM model or a generic Samsung one?

Did you try the Samsung DC Toolkit (there are a few different versions) and its command for taking the drive out of ERRORMOD?
 

luckylinux

Well-Known Member
Mar 18, 2012
1,668
547
113
This was more than a year ago so I don't remember exactly when it started showing the new firmware version, but they both do so now in CrystalDiskInfo (they're both currently in a Windows system).

I don't know what the issue is for you. It seems to say "Done" to me. I just wanted to tell you that the unbranded firmware provided is working.
It says Done but it also complains about SG_IO: bad/missing sense data, sb[]: f0 00 05 04 51 e0 00 0a 00 00 00 00 21 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 before that. Which you say it's not important. It's true I didn't do a Power Cycle after applying the GXT5404Q Firmware (only the one I modified), so I cannot be 100% sure that it wouldn't work. It just seems weird that the File & Command that yields an Error is the one that works correctly in the End :rolleyes: .

Can you please provide some smartctl Output (or similar from Windows, maybe CrystalDiskInfo Screenshots about the Details ?) to see if there is something different between them ? Thanks :).
 

Jek123

Member
Apr 12, 2023
22
32
13
Did you find out if it's a particular OEM model or a generic Samsung one?
looks like generic.
NAND is TLC 32 layers
30_nand-1.jpg30_nand-0.jpg

Did you try the Samsung DC Toolkit (there are a few different versions) and its command for taking the drive out of ERRORMOD?
I have only tried hdparm on Linux
I see Samsung_SSD_DC_Toolkit_for_Windows.exe but I don't have Windows right now
People here said that secure-erase helps, so I didn’t even think about trying DC-Toolkit
 

blunden

Well-Known Member
Nov 29, 2019
1,210
432
83
looks like generic.
NAND is TLC 32 layers


I have only tried hdparm on Linux
I see Samsung_SSD_DC_Toolkit_for_Windows.exe but I don't have Windows right now
People here said that secure-erase helps, so I didn’t even think about trying DC-Toolkit
Yes, unless the model name indicates something else, it's probably generic seeing as the label looks the same as my generic ones.

Yes, secure erase should normally work. I just figured it might be worth trying the Samsung toolkit too. I believe it's available for Linux as well.