Skip to main contentSkip to navigation
Lab Operational Since: 17 Years, 7 Months, 4 DaysFacility Status: Fully Operational & Accepting New Cases

TRIM, DZAT, and the SSD Recovery Window

TRIM tells your SSD that deleted blocks are no longer needed. The controller then erases those NAND cells during garbage collection. Once GC completes, the data is physically gone and no recovery method exists. If the drive failed or lost power before GC ran, the data may still be on the NAND awaiting forensic extraction.

Can deleted files be recovered from an SSD?

No, on any modern SSD with TRIM enabled. When you delete a file, the operating system sends a TRIM command and the controller marks those NAND blocks for erasure. Background garbage collection then physically zeroes the cells, and Deterministic Zero After TRIM (DZAT) makes the controller return zeros on any subsequent read. Standard SSD data recovery software cannot reconstruct data from erased cells.

Exception cases where deleted SSD data is still recoverable:

  1. TRIM was disabled or unsupported in the data path. FAT32 does not support TRIM. exFAT TRIM is completely unsupported by Windows: Microsoft's storage stack does not issue the ATA DATA SET MANAGEMENT command to exFAT volumes, whether internal or external. Deleted data on exFAT-formatted external SSDs and camera media therefore often persists until physically overwritten.
  2. The drive suffered a controller failure or firmware panic that froze garbage collection before the erase pulse executed.
  3. The drive lost power within the brief window between TRIM and garbage collection before the controller could physically apply the erase pulse to the affected NAND blocks.
  4. The USB-to-SATA or USB-to-NVMe bridge chip blocked TRIM passthrough so the controller never received the deallocate command.
What Is TRIM And Why Does01/15

What Is TRIM and Why Does It Exist?

TRIM-deleted SSD data can be recovered, but only within a narrow window before garbage collection physically erases the NAND cells. Once the SSD controller completes GC on TRIMmed blocks, no recovery method exists. If the drive lost power or suffered a firmware failure before GC ran, the data may still be physically present on the NAND.

TRIM is an ATA command (DATA SET MANAGEMENT for SATA, DEALLOCATE for NVMe) that the operating system sends to the SSD controller when files are deleted. It identifies which logical block addresses no longer contain valid data so the controller can erase the underlying NAND cells during idle time.

TRIM (ATA Data Set Management)
The SATA protocol command that tells the SSD controller which LBAs are no longer in use. Supported on all modern SATA SSDs and enabled by default in Windows 7+, macOS 10.10.4+, and Linux kernel 2.6.33+.
UNMAP (SCSI/NVMe Deallocate)
The equivalent command for NVMe and SCSI-attached SSDs. Functionally identical to TRIM: it notifies the controller that specific blocks can be erased. NVMe Deallocate is part of the Dataset Management command set.
Garbage Collection (GC)
The controller's internal background process that physically erases NAND blocks marked as invalid by TRIM. GC consolidates valid pages into clean blocks and erases the stale ones. This is the step that actually destroys data; TRIM only marks it for destruction.
DisableDeleteNotify
The Windows registry flag that controls whether the OS sends TRIM commands to the drive. Setting DisableDeleteNotify = 1 via fsutil prevents the OS from issuing TRIM, preserving deleted data on the NAND until the blocks are overwritten by new writes.

SSDs need TRIM because of how NAND flash works. Unlike magnetic hard drives, an SSD cannot overwrite a cell in place. It must erase an entire block (typically 256KB to 4MB) before writing new data to any page within that block. Without TRIM, the controller does not know which pages contain deleted data, so it must read-modify-write entire blocks when new data arrives. TRIM lets the controller pre-erase blocks during idle time, which maintains write performance over the life of the drive. The cost of that performance optimization is the recovery window: every TRIM-and-GC cycle that completes before the drive arrives at our lab is a window that SSD data recovery cannot reopen.

Why TRIM Makes SSD Data Recovery02/15

Why Does TRIM Make SSD Recovery Different from HDD Recovery?

On a hard drive, deleting a file removes the directory entry but leaves the magnetic data on the platters until new data overwrites it. On an SSD with TRIM enabled, deleting a file tells the controller those blocks are invalid, and garbage collection erases the NAND cells during idle time. The data does not wait to be overwritten; it is actively destroyed.

BehaviorHDD (Magnetic)SSD with TRIMSSD without TRIM
File deletionDirectory entry removed; data stays on plattersTRIM sent; blocks marked for erasureDirectory entry removed; data stays on NAND
Physical erasure timingOnly when new data overwrites the same sectorsDuring next garbage collection cycle (seconds to minutes)Only when controller needs the block for new writes
Recovery windowHours to months (until overwritten)Seconds to minutes (until GC runs)Hours to months (similar to HDD)
Software recovery viable?Yes, if sectors not overwrittenAlmost never; cells are physically erasedPossible if blocks not reused

This is why data recovery software cannot reliably recover deleted files from SSDs the way it can from hard drives. The physical cells have been erased to an unprogrammed state. There is nothing left for the software to read.

Recovery window03/15

When Is TRIM-Deleted Data Still Recoverable?

TRIM-deleted SSD data is still recoverable when anything interrupts the gap between the TRIM command and garbage collection. TRIM marks blocks as invalid; GC physically erases them. If the drive lost power or suffered a firmware failure before GC ran, the original charge states survive on the NAND and can be read through PC-3000 SSD diagnostic mode.

  1. 01

    Power loss before garbage collection

    If the SSD loses power after TRIM was issued but before GC erased the blocks, the data is physically intact. The controller marked the blocks as stale in its FTL, but the NAND cells still hold the original charge states. PC-3000 can read raw NAND pages and recover data from blocks that the controller considers invalid.

  2. 02

    Firmware failure freezing the controller

    When SSD firmware corrupts, the controller stops processing commands, including garbage collection. A drive stuck in firmware safe mode (SATAFIRM S11, BSY state, or 0 bytes capacity) has not run GC since the failure. TRIMmed blocks that the OS deleted before the firmware crashed may still contain data.

  3. 03

    USB enclosures blocking TRIM passthrough

    Many older USB-to-SATA bridge chips (such as the JMicron JMS539 or early ASMedia ASM1051) do not pass TRIM commands through to the drive. If the SSD was used in an external enclosure that blocks TRIM, deleted files remain on the NAND indefinitely. The controller never received the invalidation command, and standard recovery tools may work in this scenario.

  4. 04

    TRIM disabled in the operating system

    If DisableDeleteNotify was set to 1 on Windows, or the discard mount option was not enabled on Linux, TRIM was never sent. Deleted data persists on the NAND until the controller overwrites those blocks with new data during normal write operations.

How Does Garbage Collection Timing Differ04/15

How Does Garbage Collection Timing Differ by Controller?

Garbage collection aggressiveness varies by controller family. Samsung controllers erase TRIMmed blocks within seconds. Phison controllers batch GC during sustained idle periods, giving you minutes. Silicon Motion controllers defer GC until the free block pool runs low, sometimes preserving TRIMmed data for hours on lightly used drives.

Samsung Controllers: Elpis, Pascal, Phoenix

Samsung Elpis, Pascal, & Phoenix controllers begin garbage collection within seconds of idle time. Samsung firmware prioritizes NAND endurance optimization through immediate block reclamation. The recovery window after TRIM on a Samsung 870 EVO or 990 Pro is measured in seconds, not minutes.

If you deleted files from a Samsung SSD and the drive stayed powered on for more than 30 seconds, the data is gone. Samsung's aggressive GC is good for drive longevity but bad for recovery. SATA Samsung SSD recovery starts at $200; NVMe Samsung starts at $200.

Phison Controllers: PS3111-S11, PS5012-E12, PS5018-E18

Phison PS3111-S11, PS5012-E12, & PS5018-E18 controllers use configurable GC aggressiveness through firmware tuning tables. Many Phison-based drives batch GC operations during sustained idle periods rather than running GC incrementally after each TRIM command.

This batching behavior can extend the recovery window to minutes. A Sabrent Rocket (PS5012-E12) or Corsair Force MP510 (PS5012-E12) that received TRIM but stayed busy with other I/O may not have erased the target blocks yet. PC-3000 SSD's Phison utility can enter diagnostic mode & read raw NAND pages before GC resumes.

Silicon Motion Controllers: SM2258XT, SM2262EN, SM2263XT

Silicon Motion SM2258XT, SM2262EN, & SM2263XT controllers often defer GC until the drive's free block pool drops below a threshold. On a lightly used drive with plenty of free blocks, the controller has no immediate reason to erase stale blocks; it already has enough clean blocks for new writes.

TRIMmed blocks on a half-empty Kingston A400 (SM2258XT) can survive for hours without being erased. That's the longest recovery window of the three families. Power the drive off immediately, ship it to the lab, & PC-3000 SSD's Silicon Motion utility reads the raw NAND pages before the controller's GC routine ever initializes.

Controller FamilyGC AggressivenessTypical Recovery WindowNotable Behavior
Samsung (Elpis, Pascal, Phoenix)HighSecondsGC begins within seconds of idle time; prioritizes NAND endurance
Phison (PS3111, PS5012, PS5018)ModerateMinutesBatches GC during sustained idle; configurable via firmware tuning tables
Silicon Motion (SM2258, SM2262, SM2263)Low (deferred)Minutes to hoursDefers GC until free block pool drops below threshold; lightly used drives retain data longest

Regardless of controller family, the first step is always the same: power the drive off. Every second the SSD stays powered gives the controller time to run GC. Ship the drive to our Austin, TX lab & we evaluate the NAND contents before the controller has a chance to erase anything. Browse the full SSD controller recovery directory for model-specific recovery procedures.

How To Disable TRIM To Preserve05/15

How Do You Disable TRIM on Windows to Preserve Deleted Data?

Disabling TRIM prevents the OS from telling the SSD to erase deleted blocks. This preserves deleted data on the NAND until the controller reuses those blocks for new writes. Disable TRIM before deleting files if you anticipate needing recovery later.

  1. Open an elevated Command Prompt or Terminal (right-click Start, select "Terminal (Admin)").
  2. Check current TRIM status: fsutil behavior query DisableDeleteNotify
  3. If DisableDeleteNotify = 0, TRIM is enabled. Disable it: fsutil behavior set DisableDeleteNotify 1
  4. On Windows 8+ and Server 2016+, the NTFS and ReFS modifiers target the file system stack, not the transport, so a single command covers both SATA and NVMe drives carrying that file system. If you use ReFS volumes, also run: fsutil behavior set DisableDeleteNotify ReFS 1
  5. Verify: fsutil behavior query DisableDeleteNotify should now show 1.

On macOS, TRIM is enabled by default for Apple-branded SSDs and can be enabled for third-party drives via trimforce enable. There is no supported method to disable TRIM on macOS without disabling SIP. On Linux, TRIM runs only if the file system is mounted with the discard option or if fstrim is scheduled via cron/systemd timer.

How TRIM Differs By Operating System06/15

How Does TRIM Behavior Differ Between Windows, macOS, and Linux?

Windows, macOS, & Linux each handle TRIM differently at the file system level. The operating system determines when TRIM commands reach the SSD controller, and that timing controls how long deleted data survives on the NAND. Recovery windows range from zero seconds (macOS APFS) to 7 days (Linux periodic fstrim).

Windows: NTFS, ReFS, & Per-Filesystem Control

Windows 7+ sends TRIM automatically on NTFS volumes. Starting with Windows Server 2016, fsutil behavior set DisableDeleteNotify can target NTFS & ReFS independently. An admin running a ReFS Storage Spaces volume on Server 2019 can disable TRIM on ReFS while keeping it active on NTFS boot volumes. Windows Server 2012 applies a single global DisableDeleteNotify setting across all file systems.

FAT32 does not support TRIM. exFAT does not support TRIM on Windows either. Microsoft's storage stack does not issue ATA DATA SET MANAGEMENT to exFAT volumes regardless of Windows 10/11 build, so deleted data on exFAT-formatted SSDs (commonly external drives and camera media) persists until the controller overwrites it. An SSD formatted as FAT32 (common for USB flash drives & camera cards under 32GB) never receives TRIM commands from Windows. Deleted files persist on the NAND until the controller overwrites them with new data, making recovery similar to HDD recovery. SATA SSD recovery starts at $200.

macOS: APFS Cascading TRIM & Secure Enclave Encryption

APFS sends TRIM immediately on file deletion. Volume deletion triggers cascading TRIM for every block the volume occupied. Apple's trimforce enable command activates TRIM for third-party SSDs, but Apple-branded SSDs have TRIM enabled at the firmware level with no option to turn it off.

T2 & Apple Silicon Macs bind AES-256 encryption keys to the Secure Enclave on the logic board. The Media Encryption Key is bound to the Secure Enclave's secure boundary and wrapped by a hardware-unique root key; it cannot be extracted from silicon. Desoldering the NAND from a dead MacBook yields only ciphertext. Board-level logic board repair using a Hakko FM-2032 & FLIR thermal camera to locate the failed component is the only path to recovering data from a Mac SSD. NVMe recovery starts at $200; board repair runs $600–$900.

Linux: Continuous Discard vs. Periodic fstrim

Linux gives administrators two TRIM modes. Continuous TRIM mounts the file system with the discard option, sending TRIM on every delete. Periodic TRIM uses fstrim.timer, a systemd timer that runs fstrim -a weekly by default. With periodic TRIM, deleted data can remain on the NAND for up to 7 days between fstrim executions.

dm-crypt blocks TRIM by default. The Linux kernel's encryption layer strips TRIM commands to prevent metadata leakage: an attacker observing which blocks are TRIMmed could infer file sizes & deletion patterns on an encrypted volume. Passing TRIM through dm-crypt requires the explicit allow-discards flag in /etc/crypttab. If dm-crypt is configured without allow-discards, TRIM never reaches the SSD controller & deleted data persists indefinitely on the NAND.

For Linux servers running periodic fstrim, the recovery window is the longest of any OS: up to 7 days. That's enough time to power down the server, pull the drive, & ship it to our Austin, TX lab for evaluation before the next fstrim cycle executes.

Operating SystemTRIM MechanismSchedulingRecovery Window Impact
Windows (NTFS)DisableDeleteNotify flag via fsutilImmediate on file deletionSeconds to minutes (GC timing dependent)
Windows (FAT32)Not supportedNeverHours to months (no TRIM; overwrite only)
Windows (exFAT)Not supported by Windows storage stackNeverHours to months (TRIM commands are not issued to exFAT volumes; overwrite only)
macOS (APFS)Cascading TRIM on delete; trimforce for third-party SSDsImmediate on file deletionSeconds (Samsung GC) to minutes; no disable option without SIP off
Linux (continuous discard)Mount option: discardImmediate on file deletionSeconds to minutes (same as Windows NTFS)
Linux (periodic fstrim)fstrim.timer systemd unitWeekly (default fstrim.timer schedule)Up to 7 days between fstrim executions
Linux (dm-crypt, no allow-discards)TRIM blocked by encryption layerNever (default)Indefinite (TRIM never reaches controller)
TRIM Queue Processing At The Firmware07/15

How Does the Controller Process TRIM Queues at the Firmware Level?

The SSD controller doesn't erase NAND cells the instant it receives a TRIM command. TRIM updates the FTL mapping table & adds affected blocks to a garbage collection queue.

The controller's firmware scheduler decides when to physically erase those blocks based on idle time, free block availability, & SLC cache pressure.

  1. OS sends ATA DATA SET MANAGEMENT (opcode 06h) or NVMe Dataset Management Deallocate (opcode 09h) with the affected LBA ranges.
  2. Controller updates the Flash Translation Layer: affected LBAs are removed from the logical-to-physical map & the corresponding NAND pages are flagged invalid in the block validity bitmap. DZAT enforcement begins immediately; host reads to those LBAs return zeros.
  3. Affected physical blocks enter the garbage collection queue inside the controller's firmware scheduler. The NAND cells still hold the original charge states at this point.
  4. Firmware scheduler selects a trigger: idle time (background GC), free block count below threshold (foreground GC), or pSLC cache exhaustion. Trigger timing ranges from seconds (Samsung Elpis, Pascal, Phoenix) to hours (Silicon Motion SM2258XT on a lightly used drive).
  5. Controller copies any remaining valid pages from the stale block to a clean free block, updates the FTL to point those LBAs at the new location, then applies the erase pulse (+15V to +20V Fowler-Nordheim tunneling on planar NAND). Every cell in the block resets to 0xFF. The recovery window closes.

Background GC vs. Foreground GC

Background garbage collection runs during idle periods when the host isn't sending I/O commands. The controller picks stale blocks, moves valid pages to clean blocks, & erases the originals. This is the normal mode: quiet, deferred, & often delayed by seconds to hours depending on workload.

Foreground GC is different. It triggers when the controller's free block pool drops below a firmware-defined threshold. The controller must reclaim blocks immediately to satisfy incoming writes, and it does so on the critical I/O path. This is the performance cliff users notice when an SSD slows down during large file copies. For recovery, foreground GC is worse: it erases TRIMmed blocks immediately because the controller needs that NAND space right now. SATA SSD firmware recovery runs $600–$900.

SLC Cache Exhaustion & Forced Migration

Most consumer SSDs use pseudo-SLC (pSLC) caching: the controller writes incoming data to TLC or QLC cells in SLC mode (1 bit per cell) for speed, then migrates that data to full TLC/QLC density during idle time. A 1TB QLC SSD might have 12-48GB of pSLC cache. When sustained writes fill that cache, the controller must flush pSLC pages to their native TLC/QLC format.

This flush operation triggers aggressive garbage collection. The controller needs free TLC/QLC blocks to receive the migrated data, so it erases every stale block it can find, including TRIMmed blocks that might still contain recoverable data. A nearly full SSD under heavy writes can erase TRIMmed blocks within seconds of the pSLC cache filling. A half-empty SSD with a Phison PS5012-E12 controller and plenty of free blocks might defer that erasure for hours.

Over-Provisioning & Free Block Reserves

Over-provisioning (OP) is the portion of physical NAND reserved for controller operations beyond the user-addressable namespace. Consumer SSDs typically ship with roughly 7% factory OP (for example, 512 GiB of raw NAND exposed as a 500 GB / ~465 GiB namespace). Enterprise drives ship with 28% or more. The base-10 vs base-2 capacity difference (1 TB marketed = ~931 GiB reported by Windows) is a unit conversion artifact, not OP. More OP means a larger free block pool, which means the controller has less urgency to run GC on TRIMmed blocks.

Drive fill level matters too. A nearly full consumer SSD leaves the controller with a small free-block pool, so it runs GC aggressively to maintain write performance. The same drive at half capacity has a much larger pool of available blocks. GC pressure is low, TRIMmed blocks sit in the queue longer, & the recovery window extends from minutes to hours.

Background GC
Runs during idle time. Erases stale blocks at the controller's leisure. Deferred by seconds (Samsung) to hours (Silicon Motion on lightly used drives). The recovery window depends on how quickly the SSD reaches idle after TRIM.
Foreground GC
Triggers when free blocks drop below firmware threshold. Runs on the I/O critical path. Erases TRIMmed blocks immediately. The performance cliff (write speeds dropping from 500MB/s to 50MB/s on SATA) is the observable symptom.
pSLC Cache Flush
When the pseudo-SLC write cache fills (typically 12-48GB on a 1TB QLC SSD), the controller migrates cached pages to TLC/QLC blocks. This migration triggers block erasure to free space, which can include TRIMmed blocks that still held recoverable data.

NVMe APST & Garbage Collection Scheduling

NVMe drives support Autonomous Power State Transition (APST), which lets the host OS dictate how quickly the drive enters low-power states during idle. NVMe drives define multiple power states: PS0 (active, ~8W) down to PS3 or PS4 (deep sleep, ~0.009W). When the drive enters a non-operational power state, the NVMe specification allows it to temporarily exceed that state's power limit for background processing, including garbage collection.

NOPPME (Non-Operational Power State Permissive Mode Enable) controls this behavior. If NOPPME is disabled, the drive must respect the strict power limit of the current sleep state & defer GC until the host wakes it back to an operational state. On a laptop that pushes the NVMe drive into PS4 deep sleep within 100ms of idle, the drive can't run GC because the power budget is too low. This inadvertently extends the recovery window: the drive goes to sleep before the controller has time to erase TRIMmed blocks.

Enterprise & data center NVMe SSDs disable APST (0ms transition latency). The drive stays in PS0 at full power, ready for the next I/O command with zero latency. That means the controller runs GC without any power-state constraints, erasing TRIMmed blocks as soon as idle time appears. Consumer NVMe drives with aggressive host-configured APST profiles can preserve TRIMmed data longer if the system transitions the drive into non-operational states before GC completes. NVMe SSD firmware recovery runs $900–$1,200.

APST (Autonomous Power State Transition)
NVMe power management feature that transitions the drive between power states based on idle time. Each state has defined entry/exit latencies & power limits. PS0 is full active; PS3/PS4 are deep sleep. The host OS configures APST thresholds via the NVMe Set Features command.
NOPPME (Non-Operational Power State Permissive Mode Enable)
NVMe controller feature bit. When enabled, the controller can temporarily exceed a non-operational power state's power limit for background maintenance (GC, wear leveling). When disabled, GC is blocked until the host transitions the drive back to an operational power state.
PC-3000 Safe Mode08/15

How Does PC-3000 SSD Freeze Garbage Collection Before Power-On?

PC-3000 SSD forces the controller into a vendor-specific diagnostic state (Safe Mode, ROM Mode, or Techno Mode depending on controller family) where firmware doesn't initialize & garbage collection never starts. Custom microcode uploaded to controller RAM provides raw NAND access while the GC scheduler remains disabled.

Why Normal Power-On Destroys TRIM-Pending Data

A normal boot sequence loads the controller's firmware from a reserved NAND area, initializes the FTL mapping tables, & resumes any pending background tasks. GC is first in the queue. Aggressive Samsung firmware begins reclaiming stale blocks as soon as post-boot idle appears.

DZAT (Deterministic Read Zero After TRIM) makes this worse. Even before GC runs, any host read to a TRIMmed LBA returns all zeros. Recovery software like Disk Drill or R-Studio sees only zeroed blocks because the controller intercepts the read & substitutes zeros. The physical NAND may still hold the original data, but the controller's host interface hides it. PC-3000 SSD is the only tool that bypasses DZAT by reading raw NAND pages in diagnostic mode. Firmware recovery for SATA SSDs runs $600–$900; NVMe runs $900–$1,200.

Phison: ROM Mode via PCB Test Points

Phison controllers enter ROM Mode when specific test points on the PCB are shorted during power-on. On SATA Phison drives using the older PS3109-S9, shorting the documented R29 pads with a probe forces the controller into safe mode, bypassing the normal firmware boot sequence & its GC scheduler. On PS3111-S11 drives, the shorting pad location is PCB-dependent and varies by vendor because Phison ships the S11 as a turnkey controller to many third-party PCB manufacturers. NVMe controllers (PS5012-E12, PS5018-E18) use their own ROM shorting pins specific to individual M.2 PCB layouts.

Older Phison controllers (PS3109, PS3111 early revisions) require PATA connections for Techno Mode commands. PC-3000 SSD's Phison utility communicates through vendor-specific SATA or NVMe commands to upload a microcode loader into the controller's internal SRAM. This loader provides raw NAND read capability without initializing the main firmware's background task engine. NVMe SSD recovery starts at $200.

Silicon Motion: ROM Shorting & FTL Reconstruction

Silicon Motion SM2258XT, SM2262EN, & SM2263XT controllers use ROM shorting pads on the PCB to enter diagnostic mode. NVMe variants (SM2262EN, SM2263XT) connect through M.2 PCIe adapters on the PC-3000 SSD hardware interface. The controller boots into a minimal state where it accepts raw NAND page read commands.

PC-3000 SSD includes advanced translator building algorithms for Silicon Motion controllers. By uploading a custom microcode loader into controller RAM, the tool can read raw NAND service blocks to locate uncorrupted fragments of the Flash Translation Layer (FTL). If the active FTL is damaged, PC-3000 reconstructs a virtual mapping table from these redundant metadata pages to regain access to the physical blocks. SATA SSD firmware recovery runs $600–$900.

Samsung NVMe: Board-Level Repair Is the Only Path

PC-3000 SSD does not currently support firmware-level diagnostic loaders for Samsung's modern NVMe controllers (Elpis on 980 Pro, Pascal on 990 Pro, Phoenix on 970 EVO Plus era). ACELAB's published support matrices do not list Techno Mode, microcode loader injection, or raw NAND read capability for these controllers. Firmware-panicked Samsung NVMe drives cannot be recovered through software utilities.

Samsung drives use hardware AES-256 encryption by default. The Media Encryption Key (MEK) is bound to the controller's secure boundary and wrapped by a hardware-unique root key; it cannot be extracted from silicon. Raw NAND pages read after chip-off extraction are ciphertext that no commercial tool can decrypt.

The only viable recovery path is reviving the original controller so it can run its internal decryption pipeline. If the controller's PMIC (power management IC) has failed, we locate the shorted component using FLIR thermal imaging & replace it with a Hakko FM-2032 on an FM-203 base station. Once the original controller boots, the key material is intact & the data becomes accessible. Board repair isn't separate from data recovery for encrypted Samsung SSDs; it IS data recovery.

This section expands on the general PC-3000 TRIM recovery procedure described further down the page, with controller-specific entry methods & the encryption considerations unique to each family.

What Is DZAT

What Is DZAT (Deterministic Read Zero After TRIM) on SSD Controllers?

DZAT (Deterministic Read Zero After TRIM) is a SATA specification behavior defined in IDENTIFY DEVICE Word 69, Bit 5. The controller intercepts all host reads to TRIMmed LBAs and returns absolute zeros, even before garbage collection physically erases the NAND. Recovery software sees only zeros. PC-3000 SSD bypasses this by reading raw NAND pages in diagnostic mode.

DZAT (Deterministic Zeroes After TRIM) on SATA
SATA specification behavior defined in IDENTIFY DEVICE Word 69, Bit 5. The controller returns absolute zeros for any TRIMmed LBA. Required for enterprise RAID arrays where parity calculations depend on consistent zero-fill across degraded members. Software tools see only zeros; the physical NAND charge state is unchanged until garbage collection erases the block.
DLFEAT 001b (NVMe Equivalent of DZAT)
NVMe Identify Namespace byte 33, bits 2:0. When set to 001b, the drive guarantees all reads to deallocated (TRIMmed) LBAs return all 00h bytes. This is the NVMe Dataset Management Deallocate (opcode 09h) equivalent of SATA DZAT. Modern NVMe SSDs manufactured after 2019 report DLFEAT 001b to maintain RAID parity consistency. DLFEAT 010b returns all FFh bytes; 000b means behavior is not reported.
ATA DSM-TRIM (SATA, opcode 06h) vs. NVMe Deallocate (opcode 09h)
SATA TRIM travels as the DATA SET MANAGEMENT command (opcode 06h) with the TRIM attribute bit set. NVMe uses opcode 09h, Dataset Management, with the Attribute-Deallocate (AD) bit set in Command Dword 11. Both commands queue a deallocation hint in the controller's FTL mapping structures; neither physically erases NAND. Physical erasure happens only during the subsequent garbage collection cycle when the controller applies the erase pulse.
DRAT (Deterministic Read After TRIM) on SATA
SATA specification behavior defined in IDENTIFY DEVICE Word 69, Bit 14. The controller returns a single consistent value for all reads to TRIMmed LBAs, though not necessarily zeros. DZAT is the stricter subset of DRAT: a DZAT drive is always DRAT, but a DRAT drive is not necessarily DZAT.

PC-3000 SSD bypasses DZAT by entering vendor-specific diagnostic mode, which reads raw NAND pages without going through the controller's host command processing layer. Recovery software like Disk Drill, R-Studio, & Recuva reads through the host interface; the controller intercepts their read commands & returns deterministic zeros. PC-3000 sends raw page read commands that skip the FTL's validity markings entirely.

Full DRAT, DZAT, and DLFEAT compliance matrix for supported controller families below

Forensic Write Blocker Limitations08b/15

Why Can't Forensic Write-Blockers Stop TRIM?

Hardware write-blockers intercept host write commands at the SATA or NVMe interface, but they cannot reach the SSD controller's internal firmware scheduler. When power is applied to a TRIMmed drive, the controller autonomously executes garbage collection on stale blocks regardless of whether the host sent a write command. The evidence is erased while the write-blocker reports zero host writes.

Write-blockers sit between the host computer and the drive's physical interface. They pass read commands through & block write commands from reaching the NAND. The SSD controller's background task scheduler lives inside the controller silicon, not on the interface bus. It wakes up the moment the drive receives power & begins reclaiming stale NAND blocks without any host instruction.

A forensic examiner who powers a TRIMmed SSD through a Tableau or WiebeTech write-blocker will see the drive enumerate normally. The write-blocker logs zero host writes. Meanwhile, inside the controller, the GC scheduler is erasing every block marked invalid by the last TRIM command. The evidence disappears silently while the interface monitor shows no activity. SATA SSD recovery starts at $200; NVMe starts at $200.

The only ways to stop this are to keep the drive completely unpowered, or to enter vendor-specific diagnostic mode before the firmware initializes its garbage collection routine. PC-3000 SSD can freeze GC by forcing supported controllers into Safe Mode or ROM Mode at power-on. In diagnostic mode the background task scheduler never starts, & raw NAND pages remain readable. Firmware recovery for SATA SSDs runs $600–$900; NVMe runs $900–$1,200.

Write-Blocker ProtectionWhat It BlocksWhat It MissesImpact on TRIMmed Data
SATA/NVMe interface filterHost write commands (ATA WRITE, NVMe WRITE)Controller firmware GC schedulerTRIMmed blocks erased autonomously; write-blocker shows zero host writes
USB bridge translationSCSI WRITE, UNMAP passthroughInternal controller background tasksSame limitation; bridge has no path into controller scheduler
Software write-blockerOS-level write I/OController hardware-level operationsGC still runs during idle time; software cannot intercept silicon-level routines

For supported controllers, PC-3000 SSD enters diagnostic mode via vendor-specific commands that upload a microcode loader into controller RAM. This loader disables the GC scheduler & grants raw NAND page access before any background erasure can occur. The tool reads pages by Physical Block Address, bypassing the FTL's validity markings & the DZAT protocol layer that would return zeros through a normal host read. SATA firmware recovery runs $600–$900.

How Much Does SSD Recovery Cost09/15

How Much Does SSD Data Recovery Cost?

SATA SSD recovery: $200–$1,500. NVMe SSD recovery: $200–$2,500. The price depends on the failure type, not on whether TRIM was involved. Free evaluation, firm quote before any paid work. No data recovered means no charge.

If your SSD failed due to firmware corruption, power loss, or controller failure, the question is whether garbage collection ran before the failure stopped the controller. We determine this during the free evaluation by examining the NAND contents directly with the PC-3000. If the data survived, we image it. If GC already erased the target blocks, we report that honestly. No attempt fees.

Rush service available for an additional +$100 rush fee to move to the front of the queue. Call (512) 212-9111 for a free evaluation.

DRAT, DZAT, And NVMe DLFEAT Deterministic10/15

How Do DRAT, DZAT, & NVMe DLFEAT Affect Recovery?

DRAT, DZAT, & NVMe DLFEAT define what the SSD controller returns when software reads a TRIMmed LBA. Modern SSDs enforce deterministic behavior: they intercept host reads to TRIMmed addresses & return zeros, even if the physical NAND cells haven't been erased yet. PC-3000 SSD bypasses this by entering vendor-specific diagnostic mode to read raw NAND pages directly.

Older budget SATA SSDs used non-deterministic TRIM. The controller returned unpredictable data for TRIMmed LBAs: sometimes the original data, sometimes zeros, sometimes garbage from a different page. This inconsistency occasionally allowed recovery software to read surviving data before GC ran. Non-deterministic TRIM appeared on early SM2246EN & JMicron JMF670H controllers and is rare in drives manufactured after 2016.

Current drives enforce DRAT at minimum. DRAT is identified by SATA Word 69, Bit 14 in the drive's IDENTIFY DEVICE response. DZAT (Bit 5 of the same word) is stricter & required for RAID-capable enterprise SATA SSDs because array controllers need consistent parity calculations across members. A DZAT drive returns the same value for every read to every TRIMmed LBA: absolute zeros, no exceptions.

Behavior ModelProtocol IdentifierDefinitionRecovery Impact
Non-DeterministicPre-2016 budget SATAController returns unpredictable data for TRIMmed LBAsSoftware recovery occasionally possible if GC hasn't run
DRATSATA Word 69, Bit 14Controller returns a consistent fixed payload for all reads to TRIMmed LBAsSoftware sees fixed pattern; original data inaccessible via host interface
DZATSATA Word 69, Bit 5Controller intercepts all reads & returns absolute zeros for TRIMmed LBAsRequired for RAID parity consistency; software recovery impossible via host
NVMe DLFEAT (001b / 010b)Identify Namespace byte 33, bits 2:0001b returns all 00h bytes (NVMe DZAT equivalent); 010b returns all FFh bytes; 000b means behavior not reportedModern NVMe SSDs enforce a deterministic pattern; software recovery impossible via host

The practical result: on any SSD manufactured after 2016, recovery software sees only zeros or a fixed pattern for deleted blocks. Disk Drill, R-Studio, & PhotoRec all read through the host interface. The controller intercepts their read commands & returns deterministic data instead of what's physically stored on the NAND. The original charge states may still exist in the floating gate transistors, but the controller's protocol layer refuses to expose them.

PC-3000 SSD bypasses this protocol layer. In vendor-specific diagnostic mode, the tool sends raw NAND page read commands that skip the controller's LBA translation & deterministic-zero interception logic. If GC hasn't physically erased the cells, the original page data is readable at the hardware level. Firmware recovery for SATA SSDs runs $600–$900; NVMe runs $900–$1,200.

DRAT (Deterministic Read After TRIM)
SATA specification behavior (Word 69, Bit 14). The controller returns a single, consistent value for all host reads to TRIMmed LBAs. The specific value varies by implementation but is always the same for every TRIMmed block on that drive.
DZAT (Deterministic Zeroes After TRIM)
SATA specification behavior (Word 69, Bit 5). Stricter than DRAT: the controller returns absolute zeros for any TRIMmed LBA. Required for enterprise RAID arrays where parity calculations depend on consistent zero-fill across degraded members.
DLFEAT (Deallocate Logical Block Features)
NVMe Identify Namespace byte 33, bits 2:0. 001b means reads to deallocated (TRIMmed) LBAs return all 00h bytes (the NVMe equivalent of SATA DZAT). 010b means reads return all FFh bytes. 000b means the behavior is not reported. Modern NVMe controllers (Samsung Elpis, Phison PS5018-E18, Silicon Motion SM2264) enforce one of the deterministic encodings, typically 001b.
Controller DZAT / DLFEAT Compliance Matrix

Which SSD Controllers Enforce DZAT & DLFEAT 001b?

Nearly all modern SSD controller families return deterministic zeros to any host read of a TRIMmed LBA. The protocol field (SATA IDENTIFY DEVICE Word 69 bit 5 or NVMe DLFEAT) tells you what recovery software sees. The PC-3000 SSD diagnostic mode column tells you whether a lab can read past that protocol layer and reach the physical NAND before garbage collection erases it.

SATA controllers advertise DZAT through IDENTIFY DEVICE Word 69 bit 5. NVMe controllers advertise the equivalent behavior through Identify Namespace byte 33, bits 2:0 (the DLFEAT field), where 001b means deallocated reads return all 00h. The matrix below maps the controller families we see most often to their protocol encoding, ACELab PC-3000 SSD v3.8.10 support status, & the practical recovery path that remains when TRIM has already executed.

Controller FamilyProtocol FieldDZAT / DLFEAT EncodingPC-3000 SupportRecovery Path
Samsung Elpis / Pascal / Phoenix (NVMe)Identify Namespace byte 33, bits 2:0DLFEAT 001b (returns all 00h)Not supported by PC-3000 SSDBoard repair only; revive the original controller to reach the fused AES-256 key
Samsung MEX / S4LN045X01 (SATA)IDENTIFY DEVICE Word 69, bit 5DZAT bit set (returns all 00h)Supported via Terminal connectionPC-3000 SSD Technological Mode via Terminal-pin connection; FTL reconstruction from service-area copies on 840 EVO, 850 Pro, PM851
Samsung MGX (SATA)IDENTIFY DEVICE Word 69, bit 5DZAT bit set (returns all 00h)Not supported by PC-3000 SSDBoard repair only; no Technological Mode loader available for this in-house Samsung controller
Phison PS5012-E12 (NVMe)Identify Namespace byte 33, bits 2:0DLFEAT 001bSupportedPC-3000 SSD ROM boot mode & volatile SRAM loader; diagnostic raw-NAND reads bypass DLFEAT
Phison PS5018-E18 (NVMe)Identify Namespace byte 33, bits 2:0DLFEAT 001bPartial; repair-only statusBoard repair to revive a panicked controller; no production microcode loader for Gen4 firmware reconstruction yet
Silicon Motion SM2262EN (NVMe)Identify Namespace byte 33, bits 2:0DLFEAT 001bSupportedSafe mode entry via PCB pin-shorting; volatile loader injection & raw-NAND extraction
Silicon Motion SM2263XT (NVMe)Identify Namespace byte 33, bits 2:0DLFEAT 001bSupported with caveats (DRAM-less / HMB architecture)PC-3000 SSD diagnostic mode; FTL corruption from power-loss events is common & reduces the survival window
Marvell 88SS1093 (NVMe)Identify Namespace byte 33, bits 2:0DLFEAT 001bSupported per ACELab matrixPC-3000 SSD diagnostic loaders; hardware AES-256 means the original controller must boot for any logical recovery
Maxio MAS0902 (SATA)IDENTIFY DEVICE Word 69, bit 5DZAT bit setSupportedPC-3000 SSD diagnostic mode; FTL & translator reconstruction from service-area copies
Maxio MAS1102 (SATA)IDENTIFY DEVICE Word 69, bit 5DZAT bit setPartial; under deep development by ACELab, 240 GB onlyLimited PC-3000 access; treat as repair-only for capacities other than 240 GB
Maxio MAP1602 / MAP1602A (NVMe)Identify Namespace byte 33, bits 2:0DLFEAT 001bNot supported by PC-3000 SSDUnrecoverable except through board repair; HMB architecture & silicon-fused AES-256 defeat chip-off

Support disclosure. ACELab PC-3000 SSD v3.8.10 does not support every controller named above. For these families, no firmware-level diagnostic path exists in our lab; recovery is limited to component-level board repair to revive the original controller silicon & its fused encryption key.

  • Rossmann does not currently offer in-lab recovery for Samsung Elpis.
  • Rossmann does not currently offer in-lab recovery for Samsung Pascal.
  • Rossmann does not currently offer in-lab recovery for Samsung Phoenix.
  • Rossmann does not currently offer in-lab recovery for Samsung MGX.
  • Rossmann does not currently offer in-lab recovery for Maxio MAP1602.
  • Rossmann does not currently offer in-lab recovery for Maxio MAP1602A.

Drives built on these controllers can still be diagnosed for board-level faults (PMIC latchup, blown voltage regulators, cracked controller silicon). If the board repair revives the original controller, the AES-256 key path opens & data becomes accessible. If the controller silicon itself is dead, modern self-encrypting SSDs are physically destroyed.

Technical Deep Dive11/15

How Does TRIM Work at the NAND Level?

NAND flash stores data by trapping electrons in floating gate transistors. Each cell holds a charge level that encodes one or more bits (SLC = 1 bit, TLC = 3 bits, QLC = 4 bits). Erasing a cell removes the trapped electrons, resetting the cell to an empty state. This erasure is irreversible at the data level.

NAND flash has an asymmetric write/erase constraint. Writes happen at the page level (typically 4KB to 16KB). Erases happen at the block level (typically 256KB to 4MB, containing 64 to 256 pages).

You cannot erase a single page; the entire block must be erased at once. This is why garbage collection exists: the controller must consolidate all valid pages from a partially-stale block into a clean block, then erase the entire stale block.

When the OS deletes a file and sends TRIM, the controller updates its Flash Translation Layer to mark those LBAs as invalid. The physical pages still contain data at this point.

During the next garbage collection cycle, the controller reads all valid pages from blocks containing stale data, writes them to a free block, and erases the original block. After the erase completes, those NAND cells read as all-ones (0xFF). The data is gone.

Some SSD controllers implement "deterministic zeroing" per the NVMe specification: after TRIM, reads to those LBAs return all zeros even before GC runs. The actual NAND cells may still hold the original data until GC, but accessing them requires bypassing the controller with hardware tools.

ATA DSM & NVMe Deallocate Wire Protocol

SATA TRIM travels as an ATA DATA SET MANAGEMENT command (opcode 06h) with the TRIM attribute bit set in the Features register. The host transfers one or more 512-byte blocks of LBA Range Entries to the controller. Each entry is 8 bytes: a 48-bit starting LBA plus a 16-bit sector count. One 512-byte payload block holds 64 range entries; ACS-2 permits up to 8 blocks per command, capping a single DSM at 512 ranges. The drive advertises TRIM support through IDENTIFY DEVICE word 169, bit 0. DRAT and DZAT appear in IDENTIFY DEVICE word 69, bits 14 and 5 respectively.

NVMe uses opcode 09h, Dataset Management, with the Attribute-Deallocate (AD) bit set in Command Dword 11. The host transfers a Range Definition Set containing up to 256 entries. Each range descriptor is 16 bytes: a 32-bit context attribute field, a 32-bit length in logical blocks, and a 64-bit starting LBA. The controller's post-deallocate read behavior is defined by the DLFEAT field at byte offset 33 of the Identify Namespace data structure. DLFEAT bits 2:0 = 000b means not reported, 001b means deallocated reads return all 00h bytes (the NVMe equivalent of SATA DZAT), and 010b means deallocated reads return all FFh bytes.

The wire-level command does not physically erase NAND. It queues a deallocation hint in the controller's internal mapping structures. The FTL updates the logical-to-physical table so the affected LBAs no longer point at the original pages; those pages are marked invalid in the block's page validity bitmap. The NAND cells still hold their charge states until the controller selects that block for erase during the next garbage collection pass.

How Does PC-3000 SSD Read NAND12/15

How Does PC-3000 SSD Read NAND Before Garbage Collection Runs?

PC-3000 SSD puts the controller into a vendor-specific diagnostic mode before the firmware's garbage collection routine initializes. In diagnostic mode, the controller accepts raw NAND read commands without executing any background operations. TRIMmed blocks that haven't been erased yet are readable at the physical page level.

Why Normal Power-On Destroys TRIM-Pending Data

Powering a TRIMmed SSD normally is the single worst thing you can do. The controller boots its firmware, checks the FTL for pending operations, & resumes garbage collection on every block marked as invalid. Aggressive Samsung firmware can erase significant portions of stale blocks in the seconds following power-on. By the time the drive appears in BIOS, the data may already be gone.

This is why consumer recovery software can't help with TRIM scenarios even if the NAND cells still hold data. Connecting the drive to your computer boots the controller normally, which triggers GC before any software can intervene. SATA SSD firmware recovery runs $600–$900; NVMe runs $900–$1,200.

Vendor-Specific Diagnostic Mode Entry

Each controller family has a different procedure for entering diagnostic mode. PC-3000 SSD includes dedicated utilities for Samsung, Phison, & Silicon Motion controllers. The utility sends a vendor-specific command sequence over the SATA or NVMe interface that forces the controller into a low-level service mode. In this mode, the firmware's background task scheduler is disabled.

GC does not run. TRIM queues are not processed. The controller accepts direct NAND page read commands & returns raw cell data without filtering through the FTL's validity markings. Pages that TRIM marked as "invalid" still contain their original charge states because the erase operation never executed.

Raw NAND Page Reading & FTL Reconstruction

Once in diagnostic mode, PC-3000 reads physical NAND pages directly. This bypasses the controller's LBA-to-PBA mapping. The tool reads every page in every block, including blocks the controller considers invalid. Each page contains the original data plus ECC (error correction code) metadata that the tool uses to verify data integrity.

After the raw read, PC-3000 reconstructs the Flash Translation Layer mapping table to reassemble files from the physical page data. The FTL maps logical block addresses to physical NAND pages. Without this reconstruction, the raw page dump is just a stream of unordered 4KB-16KB fragments. The PC-3000's controller-specific algorithms know each family's FTL structure & can rebuild the mapping even when the controller's own FTL copy is corrupted or incomplete.

For encrypted SSDs (most NVMe drives & SATA drives with TCG Opal), the raw NAND pages are AES-256 ciphertext. Reading them without the controller's decryption key produces unreadable data. In those cases, the only path is reviving the original controller through board-level repair so it can decrypt the NAND contents with its own key material. Chip-off NAND extraction on an encrypted SSD yields only ciphertext.

Why Recovery Software Fails After TRIM13/15

Why Does Recovery Software Fail After TRIM?

Recovery software reads sectors through the OS storage driver. After TRIM, the controller returns zeros for those sectors, even if the physical NAND has not been erased yet. Software cannot distinguish between a TRIMmed block and a block that was never written to. Both read as zeros.

Tools like Disk Drill, R-Studio, Recoverit, TestDisk, EaseUS Data Recovery Wizard, and Recuva all operate above the SSD controller. They send standard read commands through the SATA or NVMe interface. The controller intercepts these reads and, for TRIMmed LBAs, returns zeros before the software ever touches the NAND. The data may physically exist on the flash, but the controller refuses to expose it through normal host commands.

The PC-3000 bypasses the controller's host interface. It communicates with the controller using vendor-specific diagnostic commands that access raw NAND pages, ignoring the FTL's validity markings. If the physical cells have not been erased by GC, PC-3000 can read the original page data regardless of the controller's TRIM status table.

Why Graceful Shutdown Destroys TRIM-Pending Data14/15

Why Does a Graceful Shutdown Destroy TRIM-Pending Data?

A graceful OS shutdown (Start > Shut Down) takes 10-30 seconds while flushing caches, closing processes, & writing final log entries. The SSD stays fully powered during this window. The controller uses every microsecond of idle time to run garbage collection on TRIMmed blocks. Pulling the power cable is the only response that stops GC before it erases your data.

Windows shutdown writes to the registry hive, flushes NTFS journal entries, & signals each running service to stop. macOS writes to the Unified Log & flushes APFS metadata. These write bursts are separated by micro-idle gaps while the OS waits for services to acknowledge the shutdown signal. Aggressive Samsung firmware reclaims stale blocks during those idle gaps. A normal 10-30 second shutdown provides ample background time for the controller to irreversibly erase significant portions of TRIMmed data.

Immediate Power Isolation Procedure

On a desktop: hold the power button for 5 seconds or pull the ATX power cable from the back of the PSU. On a laptop: hold power for 5 seconds, then disconnect the battery if it's removable. For an NVMe M.2 drive: shut down via forced power-off, then physically remove the M.2 drive from the motherboard before shipping. For a SATA SSD: disconnect both the SATA data cable & SATA power connector.

Removing power collapses the controller's internal charge pumps, which generate the +15V to +20V erase voltage from the 3.3V or 5V supply. Without main power, the charge pumps cannot sustain the Fowler-Nordheim tunneling pulse, and the controller can't erase a single cell. The drive freezes in its current state.

Ship it to our Austin, TX lab without reconnecting it to any system. SATA SSD evaluation is free; recovery starts at $200. NVMe recovery starts at $200.

Enterprise SSDs & Power Loss Protection

Enterprise SSDs include PLP (Power Loss Protection) capacitors on the PCB. These tantalum or ceramic capacitors store enough charge to keep the controller alive for 20-50ms after external power disappears. That's enough time for the controller to flush its DRAM write cache & complete any in-progress page writes to the NAND.

PLP is good for data integrity during unexpected power outages. It's bad for TRIM recovery. When you pull the power cable from an enterprise Samsung PM9A3 or Intel DC P4610, the PLP capacitors keep the controller running long enough to process pending TRIM queue entries & erase stale blocks. Consumer SSDs like the Samsung 870 EVO or WD Blue SN580 lack PLP capacitors. Pulling the cable cuts power instantly, which can leave TRIMmed blocks intact because the controller lost its erase voltage mid-operation.

ActionPower-Off DurationGC OpportunityRecovery Impact
Graceful shutdown (Start > Shut Down)10-30 secondsMultiple idle windows; controller erases dozens of blocksTRIMmed data likely gone
Hold power button 5 seconds~5 secondsMinimal; controller may erase a few blocksMost TRIMmed blocks survive
Pull ATX cable / disconnect driveInstant (consumer) / 20-50ms (enterprise PLP)None (consumer) / brief flush window (enterprise PLP)Best chance for consumer SSDs; enterprise PLP may still flush TRIM queue
Sleep / HibernateDrive stays powered in S3; powered off in S4S3 sleep: continuous GC. S4 hibernate: writes ~8-16GB then cuts powerSleep is as bad as leaving the drive running; hibernate writes then powers off
Symptom-First Decision Tree

Which SSD Recovery Path Applies to Your Drive?

Match the symptom you observe to the branch below. The leaf tells you which recovery path is technically viable & which is closed. Logical software tools do not appear as leaves here because DZAT & DLFEAT 001b defeat them before they read a single byte.

Branch 1. Was a deletion, format, or TRIM command executed on a working drive?

Drive left powered on after deletion: Likely physically destroyed. Background garbage collection has applied the +15V to +20V Fowler-Nordheim erase pulse to the affected NAND blocks. No lab tool reverses a hardware erase.

Drive powered off within seconds: Recoverable through PC-3000 SSD diagnostic mode if the controller family is supported (Phison PS5012-E12, Silicon Motion SM2262EN / SM2263XT, Marvell 88SS1093, older Samsung S3C29 / S4LJ / S4LN families including MEX / S4LN045X01 via Terminal connection, Maxio MAS0902, Maxio MAS1102 at 240 GB). Modern Samsung in-house controllers (Elpis, Pascal, Phoenix, MGX) & Maxio MAP1602 require board repair only. SATA SSD recovery starts at $200; NVMe starts at $200. See firmware recovery.

Branch 2. Does the drive enumerate in BIOS or appear in Disk Management?

Enumerates but reports 0 bytes, the wrong capacity, or SATAFIRM S11: Firmware panic. The FTL has gone inconsistent mid-flush. PC-3000 SSD diagnostic ROM-mode entry & SRAM microcode loader on supported controllers; SATA firmware recovery runs $600–$900, NVMe runs $900–$1,200.

Hangs the host (BSY state, system freezes during POST): Controller bootloop. PC-3000 SSD sends vendor-specific commands to halt boot before the FTL initializes, then reads raw NAND pages. Same pricing tier as the firmware panic leaf above.

Not detected at all: Proceed to Branch 3.

Branch 3. Is the PCB electrically functional?

Short detected on a power rail: PMIC thermal latchup, dead voltage regulator, or a blown MLCC across the 3.3V, 1.8V, or 1.2V rail. Locate the failed component with a FLIR thermal camera, replace with a Hakko FM-2032 on the FM-203 base station, & revive the original controller. This step is mandatory for any AES-256 self-encrypting drive: the encryption key is fused to the silicon & chip-off produces ciphertext. Board repair runs $450–$600 for SATA & $600–$900 for NVMe. See hardware encryption barrier.

Branch 4. Is the controller silicon cracked or irreversibly dead?

Modern drive (NVMe or post-2015 SATA with AES-256 self-encryption): Unrecoverable. The Media Encryption Key is fused to the dead controller. Chip-off yields ciphertext under a key that no longer exists outside the silicon. This is the structural endpoint for modern SSD recovery.

Legacy drive (pre-2015 SATA without hardware encryption, raw USB thumb drives): Chip-off the NAND on a programmer, then manually reverse the controller's XOR scramble & ECC. See chip-off NAND recovery.

Whichever branch you land on, ship the drive powered off. Do not reconnect it to a host that might idle long enough for one more garbage-collection cycle. Our lab is at 2410 San Antonio Street, Austin, TX 78705; all SSD work is performed in-house. Evaluation is free & carries no diagnostic fee.

OP-Area Survivability

How Does Data Survive in the Over-Provisioned Area After TRIM?

The over-provisioned (OP) area holds physical NAND blocks that the controller keeps outside the user-addressable LBA range. After a TRIM command, stale copies of deleted pages can end up inside the OP pool if the wear-leveling routine migrated them before erase. The pages remain readable through direct NAND access until the controller selects those OP blocks for its next erase cycle.

Factory OP, Dynamic OP, & User OP

Consumer SATA and NVMe SSDs typically ship with roughly 7% factory OP, often derived from the binary-to-decimal capacity difference (for example, 512 GiB of raw NAND exposed as a 500 GB / ~465 GiB LBA namespace). Enterprise drives ship with 28% or more, reserved to sustain steady-state random write performance under constant garbage collection pressure. Dynamic OP expands the pool whenever free-block counts fall below the controller threshold, temporarily borrowing user-addressable blocks. User OP is the portion the administrator leaves unpartitioned; the controller treats unmapped LBAs as extra free blocks.

Wear-Leveling Migration of Stale Pages

Before a block is erased, the controller copies its valid pages to a new free block so the original can be released. Static wear leveling extends this behavior to rarely-updated data: the controller periodically moves cold pages into blocks with higher erase counts to equalize wear.

When TRIM marks pages invalid shortly after a wear-leveling migration, the original source block may sit in the OP pool with its contents intact until the block allocator reaches it. A page that was logically deleted from the user LBA space can therefore persist physically inside the OP area for minutes to hours, depending on write pressure and block allocation order.

Chip-Off NAND Reachability of OP Blocks

The OP area is a controller-firmware abstraction. At the NAND die level, every block carries the same physical address regardless of whether the FTL maps it into user LBA space or reserves it for OP. Powering a NAND die on an external programmer after chip-off extraction exposes every physical page, including pages the controller considered OP reserve. The FTL metadata is needed to reassemble logical files, and on self-encrypting drives the raw pages are AES-256 ciphertext that cannot be decrypted without the controller's key material.

Conditions Under Which OP Survivability Matters

OP-area survivability is load-bearing only when the drive is isolated from power before the controller completes its queued erases. Immediate power disconnection after deletion halts GC mid-sequence and freezes the OP pool in whatever state the controller left it. Firmware failure that hangs the GC scheduler produces the same freeze. Queued TRIM commands that the host sent but the controller never acknowledged (for example, pending DSM operations in the SATA NCQ queue at the moment of a hard power cut on a consumer SSD without PLP) leave the FTL in an intermediate state where the affected ranges have not yet been flagged invalid. Enterprise drives with Power Loss Protection capacitors flush pending TRIMs during an outage, which is good for data integrity and bad for recovery. Any recovery path that depends on OP survival requires the drive to arrive at the lab without a second power-on.

Post-TRIM Recovery Window

What Is Still Recoverable After TRIM Has Fired?

A TRIM command does not erase NAND. It updates the Flash Translation Layer so the controller no longer maps those LBAs to user space, then enforces Deterministic Zeroes After TRIM (DZAT) so every host read of those addresses returns zeros. Until garbage collection physically erases the block, the original charge states are still sitting in the floating gates and can be read directly off the NAND with vendor-specific diagnostic access. Once the controller issues the erase pulse, the data is gone.

The Four Physical States After TRIM

  1. 01

    LBA deallocation: FTL marks pages invalid

    The OS issues an ATA DSM-TRIM (opcode 06h) or NVMe Dataset Management Deallocate (opcode 09h). The controller removes the affected LBA entries from the logical-to-physical map and flags the corresponding NAND pages as stale in the block validity bitmap. The cells themselves still hold the same charge they held before the command arrived. Recoverable through raw NAND access; not recoverable through any host-interface read.

  2. 02

    DZAT masking: host reads return synthetic zeros

    On any drive that advertises DZAT (SATA IDENTIFY word 69 bit 5) or NVMe DLFEAT 001b, every host read to a TRIMmed LBA is intercepted by the controller protocol layer and answered with all-zero data, regardless of what is on the NAND. Disk Drill, R-Studio, PhotoRec, Recuva, and every other tool that reads through the host interface sees zeros at this stage. The cells are still intact at the silicon level, but the controller refuses to expose them.

  3. 03

    Garbage collection pending: the recovery window

    Stale blocks sit in the controller's GC queue waiting for an idle window, a free-block threshold trip, or a low-power state. Window length is firmware dependent: Samsung Elpis, Phoenix, and Pascal controllers fire GC within seconds of idle; Phison E12 and E18 batch GC against LPM transitions, giving minutes; Silicon Motion SM2258 and SM2259 defer until free-block pressure rises, sometimes leaving stale blocks intact for hours on lightly-used drives. Anything that interrupts this stage, a power cut, a firmware panic, a controller short, freezes the NAND in a recoverable state.

  4. 04

    Physical erase: cells reset to 0xFF

    The controller selects the block, copies any remaining valid pages to a fresh free block, then applies the NAND erase pulse to the original. Every cell in the block returns to the unprogrammed state and reads as 0xFF. The data is destroyed at the charge level. No lab tool, no firmware exploit, no forensic technique recovers data from a block that has been physically erased. After this step the recovery window is closed.

The Lab Path While the Window Is Open

At the Austin lab the first decision after intake is whether the drive is still powered-on stable. If it is, we keep it off and image with PC-3000 SSD in technological mode. Vendor-specific commands boot the controller from its internal Mask ROM rather than the production firmware, an SRAM loader is injected that disables background processes (GC, wear leveling, TRIM execution) and strips the DZAT protocol layer.

The tool reads pages by Physical Block Address rather than LBA. The Out-of-Band metadata that the controller wrote alongside each page (block sequence numbers, LBA tags, journal fragments) is parsed to reconstruct a virtual FTL in workstation RAM, and the user data is imaged through that virtual map without touching the native firmware.

If the drive is electrically dead, controller revival has to happen first. Modern SSDs cryptographically bind the AES-256 media encryption key to the controller silicon through fused hardware key material, so removing the NAND for an external chip-off read yields ciphertext with no decryption path. The native controller is the only AES engine that can unwrap and apply that key to its own NAND.

We inspect the PCB under restricted current with a FLIR thermal camera to locate shorted PMICs, buck converters, LDOs, or MLCCs on the 3.3V, 1.8V, and 1.2V rails, then desolder and replace the failed components with Hakko FM-2032 microsoldering irons and Atten 862 hot air, sourcing replacements from an identical donor PCB. Once the rails come back up and the controller boots, PC-3000 SSD takes over before the unstable silicon has time to fail again.

For the underlying protocol mechanics see the TRIM and DZAT physics page. For controller-by-controller garbage collection timing and the precise events that trigger physical erase, see the garbage collection data loss page.

Electron Physics

Why Is TRIMmed SSD Data Physically Unrecoverable After Garbage Collection?

Once garbage collection runs on a TRIMmed block, the data is gone at the electron level. The controller applies a 3.5-5 ms erase pulse that strips charge off every floating gate or charge-trap layer, leaving an erased cell physically indistinguishable from one that was never programmed. NIST SP 800-88 classifies this as Purge: sufficient against state-actor recovery.

The DZAT Contract Is a Protocol Lie Until GC Runs

DZAT (Deterministic Zeroes After TRIM) on SATA and DLFEAT 001b on NVMe are controller-level guarantees, not NAND-level facts. The instant the host issues ATA DSM-TRIM (06h) or NVMe Dataset Management Deallocate (09h), the controller drops the affected LBAs from the logical-to-physical map and starts returning all-zero data for any host read of those addresses. The charge in the NAND cells has not changed at this point. The decoupling is purely a firmware bookkeeping operation in the FTL. Software recovery tools see zeros because the controller answers their reads with zeros, not because the data is erased.

Background GC Is Where the Charge Actually Leaves

When the controller decides to reclaim a partially-invalid block, it copies the surviving valid pages into a fresh block via incremental step-pulse programming (tPROG 200-700 µs per page), updates the FTL to point the corresponding LBAs at the new physical location, then commits an erase pulse to the original block. The erase pulse is what destroys data.

On 2D planar NAND, +15V to +20V is applied to the p-well substrate while the control gate is grounded, and Fowler-Nordheim tunneling drags electrons off the floating gate through the tunnel oxide. On 3D charge-trap NAND (Samsung V-NAND, Kioxia BiCS, Micron CMOS-under-array) there is no bulk substrate to bias, so the controller uses Gate-Induced Drain Leakage to generate electron-hole pairs at the vertical channel and injects the holes into the SiN trap layer via quantum tunneling, where they recombine with the trapped electrons.

Either mechanism takes 3.5-5 ms (tBERS) on modern TLC and QLC parts and drops every cell's threshold voltage below the read reference. The block now reads 0xFF.

Chip-Off Yields 0xFF on Erased Blocks

Customers ask whether desoldering the NAND with Atten 862 hot air and reading the raw die in PC-3000 Flash recovers the data after GC. It does not, for two reasons. First, the erase pulse drains the cells; an erased cell holds no charge & emits no signal during a sense operation, so the read returns 0xFF regardless of what was there an hour earlier. Second, the OOB area on each page (LBA tag, block sequence number, journal fragment) is erased in the exact same pulse, so even pages that were copied to a new block before the erase cannot be reverse-mapped: the metadata that tied them to a logical file is gone. Wei et al. (USENIX FAST 2011, “Reliably Erasing Data from Flash-Based Solid State Drives”) measured that software overwrites leave up to 75% of data intact in over-provisioning space, but a hardware block erase destroys the data completely. That is the same physics on today's drives, scaled up to 3D stacks of 200+ layers.

Why HDD Analogies Stop Working Here

On a hard drive, an overwritten track can in theory leave residual magnetism at the track edges that magnetic force microscopy could read, which is why DoD-style multi-pass overwrites existed at all. NAND has no analog of that. Electrons are indistinguishable particles. A floating gate with zero electrons after an erase pulse is the same floating gate as one that was never programmed at the factory. There is no “edge” of the cell where prior charge persists & no “remnant” signal to demodulate. This is why NIST SP 800-88 lists a NAND block erase under Purge, the strongest sanitization tier. For controller-by-controller GC timing windows that determine how long the recovery opportunity stays open, see the TRIM and DZAT protocol depth page. For the lab workflow and pricing on drives caught before GC fires, see our SSD data recovery service.

Faq18/18

Frequently Asked Questions

Can you recover data from an SSD after TRIM has run?

Once the SSD controller completes garbage collection on TRIMmed blocks, the NAND cells are erased and reset to an unprogrammed state (0xFF). No lab, no tool, no technique can reconstruct data from a physically erased cell. Recovery depends on whether garbage collection has executed. If the drive lost power or suffered a firmware failure before GC ran, the data may still be physically present on the NAND. SATA SSD recovery starts at $200. Free evaluation, no data = no charge.

How long does it take for TRIM to erase data?

TRIM itself is instant; it marks blocks as invalid in the controller's mapping table. The actual erasure happens during garbage collection, which runs in the background when the controller has idle time. On some drives, GC begins within seconds of TRIM. On others, it may take minutes or hours depending on workload and firmware scheduling. The gap between TRIM and GC is the only recovery window.

Does disabling TRIM help with data recovery?

If you disable TRIM before deleting files, the controller does not receive the invalidation command. Deleted files remain physically intact on the NAND until the controller overwrites them with new data. This makes SSD recovery similar to HDD recovery: the data persists until the physical blocks are reused. On Windows, run 'fsutil behavior set DisableDeleteNotify 1' in an elevated command prompt to disable TRIM on SATA drives.

Is TRIM the same as Secure Erase?

No. TRIM marks specific logical blocks as no longer needed, and the controller erases them during garbage collection. Secure Erase is a drive-level ATA command that wipes every cell on the entire drive in one operation, including reserved and over-provisioned areas. TRIM is selective and incremental; Secure Erase is total and immediate. Both result in unrecoverable data, but TRIM only affects the blocks the OS reported as deleted.

Does TRIM work on external USB SSDs?

It depends on the USB bridge chip. Many USB-to-SATA and USB-to-NVMe enclosures do not pass TRIM commands through to the drive. If your external SSD is connected via a bridge that blocks TRIM, deleted files remain on the NAND until overwritten by new data. This means external SSDs connected through USB often retain deleted data longer than internal drives where TRIM is active.

Does the file system handle TRIM differently than the controller?

Yes. The OS file system (NTFS, ext4, APFS) sends TRIM commands when files are deleted. The SSD controller receives these commands and adds the affected blocks to its garbage collection queue. The file system and controller operate independently: the OS considers the data gone immediately after sending TRIM, but the controller may not erase the physical NAND cells until GC runs during idle time. This gap between the OS marking data as deleted and the controller physically erasing it is the recovery window.

Can you recover data from a Mac SSD after TRIM?

APFS sends TRIM when files are deleted. Apple's T2 and M-series chips bind AES-256 Media Encryption Keys to the Secure Enclave on the logic board. If the controller dies, desoldering NAND yields only ciphertext because the MEK is bound to the Secure Enclave secure boundary and cannot be extracted from silicon. Board-level logic board repair is the only recovery path for Mac SSDs. Chip-off produces unreadable data. NVMe recovery starts at $200; circuit board repair runs $600–$900. No data, no charge.

Does Linux TRIM work differently than Windows TRIM?

Linux offers two TRIM modes: continuous TRIM via the discard mount option, which sends TRIM on every file deletion, and periodic TRIM via fstrim.timer, which batches all pending TRIMs into a weekly run. With periodic TRIM, deleted data can survive on the NAND for up to 7 days between fstrim executions. dm-crypt blocks TRIM by default to prevent metadata leakage; passing TRIM through encrypted volumes requires the explicit allow-discards flag in /etc/crypttab. If dm-crypt is configured without allow-discards, TRIM never reaches the SSD controller and deleted data persists indefinitely.

What is Deterministic Read Zero After TRIM (DZAT)?

DZAT (Deterministic Zeroes After TRIM) is a SATA specification behavior defined in IDENTIFY DEVICE Word 69, Bit 5; the NVMe equivalent is DLFEAT 001b in Identify Namespace byte 33. In both cases the controller returns all zeros for any LBA that has been TRIMmed or deallocated, even before garbage collection physically erases the NAND cells. Recovery software sees only zeros for those blocks. The actual NAND flash may still hold the original charge states, but the controller intercepts all host reads and substitutes zero-filled responses. PC-3000 SSD bypasses this protocol layer by entering vendor-specific diagnostic mode, which reads raw NAND pages without going through the controller's host command processing layer.

What happens if an SSD loses power during a TRIM operation?

If power is lost after the OS sends TRIM but before the controller updates its FTL mapping tables, the controller may not record that those blocks were TRIMmed. On next power-up, the blocks remain marked as valid in the FTL, and the data is intact. If power is lost during garbage collection (mid-erase), the affected block may contain partially erased data. PC-3000 SSD can read the surviving pages from partially erased blocks and reconstruct what remains. SATA SSD recovery starts at $200; NVMe starts at $200.

Do Samsung SSDs erase TRIMmed data faster than other brands?

Samsung controllers (Elpis, Pascal, Phoenix) are generally among the more aggressive at prioritizing background garbage collection. Samsung firmware prioritizes NAND endurance by reclaiming stale blocks during idle periods. Phison and Silicon Motion controllers are generally less aggressive, with GC timing depending on free block availability and firmware configuration. For any Samsung SSD with deleted data, treat the recovery window as short. Power off the drive immediately and do not reconnect it to a running system.

What is the difference between DRAT and DZAT?

DRAT (Deterministic Read After TRIM) returns a consistent fixed payload for TRIMmed blocks; the controller picks one value and sticks with it. DZAT (Deterministic Zeroes After TRIM) is stricter: the controller returns absolute zeros for any TRIMmed LBA. NVMe drives specify post-deallocate behavior through the DLFEAT field; modern NVMe SSDs typically report DLFEAT=001b (reads return all 00h bytes, the NVMe equivalent of SATA DZAT) or 010b (reads return all FFh bytes). In all cases, recovery software sees only the specified deterministic pattern for deleted blocks, even if the physical NAND cells haven't been erased yet. The difference matters for enterprise RAID arrays: DZAT guarantees parity consistency across degraded array members. For supported controllers (Phison, Silicon Motion), PC-3000 SSD can bypass the protocol layer and read raw NAND pages in diagnostic mode. SATA SSD firmware recovery runs $600–$900.

Should I shut down my computer or pull the plug after accidental SSD deletion?

Pull the plug. A graceful OS shutdown takes 10-30 seconds while flushing caches, writing logs, and closing processes. The SSD stays powered the entire time, and the controller uses idle time to run garbage collection on TRIMmed blocks. Aggressive Samsung firmware can reclaim significant portions of stale NAND during a normal shutdown. Hold the power button for 5 seconds, pull the ATX power cable, or physically disconnect the drive from the motherboard. Removing power collapses the controller's internal charge pumps, which generate the erase voltage from the 3.3V or 5V supply. Without main power, the charge pumps cannot sustain the Fowler-Nordheim tunneling pulse, and the controller cannot erase a single cell. The drive freezes in its current state. Ship the drive to our Austin, TX lab without reconnecting it to any system. SATA SSD evaluation is free; recovery starts at $200.

Do enterprise SSDs handle TRIM differently than consumer SSDs?

Yes. Enterprise SSDs enforce strict DZAT to maintain RAID parity consistency across array members. Consumer SSDs use aggressive garbage collection to keep write speeds high; enterprise SSDs prioritize steady-state performance and data integrity. Enterprise drives also include Power Loss Protection (PLP) capacitors that keep the controller alive long enough to flush pending TRIM queues during a sudden power outage. PLP is good for data integrity but bad for recovery: it processes pending TRIMs even when you pull the power cable. Consumer SSDs without PLP lose power abruptly, which can leave TRIMmed blocks intact on the NAND. NVMe enterprise recovery starts at $200.

Can a firmware crash save data from TRIM and garbage collection?

Yes, in narrow cases. If the controller suffers a firmware panic, power-loss event, or thermal latchup during a background garbage collection cycle, the FTL freezes and the +15V to +20V Fowler-Nordheim erase pulse never reaches the affected NAND blocks. The original charge states remain trapped in the floating gates even though the controller marked the blocks invalid and is enforcing DZAT for any host reads. PC-3000 SSD can enter vendor-specific diagnostic mode on supported controllers and read those pages directly. SATA firmware recovery runs $600–$900; NVMe runs $900–$1,200.

Why do forensic write-blockers fail to preserve TRIMmed SSD evidence?

Hardware write-blockers intercept host write commands at the SATA/NVMe interface layer. They cannot reach the SSD controller's internal firmware scheduler. When power is applied to a TRIMmed drive, the controller autonomously runs garbage collection on stale blocks regardless of whether the host sent a write command. The evidence is erased while the write-blocker reports zero host writes. The only preservation method is keeping the drive unpowered or entering vendor-specific diagnostic mode before the controller initializes GC.

Can a DRAM-less SSD lose its FTL before garbage collection erases TRIMmed data?

Yes. DRAM-less SSDs store the Flash Translation Layer in NAND or use Host Memory Buffer. A sudden power loss immediately after deletion can corrupt the FTL before GC runs. Because the FTL is damaged, the controller cannot map logical addresses to physical pages, but the raw NAND pages still hold the original data. PC-3000 SSD rebuilds the virtual translator from spare-area metadata on supported controllers.

Does formatting an SSD rotate the AES encryption key?

A Quick Format updates filesystem metadata & issues NVMe Deallocate across the free space, but the controller's hardware AES-256 Media Encryption Key stays intact. Data may survive if the drive is powered off before GC erases the NAND. An NVMe Format command with Secure Erase Setting = crypto-erase, or ATA Enhanced Security Erase on a self-encrypting drive, rotates the MEK. After crypto-erase, every NAND byte becomes ciphertext under a discarded key; no lab can decrypt it.

SSD lost data after deletion?

Free evaluation determines if TRIM erased your data or if it is still recoverable. SATA: $200–$1,500. NVMe: $200–$2,500. No data, no fee.

(512) 212-9111Mon-Fri 10am-6pm CT
No diagnostic fee
No data, no fee
4.9 stars, 1,837+ reviews