What Does TRIM Do to Your SSD Data?
TRIM is a command your operating system sends to the SSD after you delete a file. It tells the controller which data blocks are no longer needed. The controller then schedules those blocks for erasure during garbage collection. This two-step process is why recovery software shows zeroes on your SSD within seconds of deletion, even though the physical memory chips may still hold data.
On a hard drive, deleting a file only removes a pointer. The magnetic data on the platter sits there until something new overwrites it. SSDs work differently. The controller actively erases old data in the background to keep fresh blocks available for future writes. That background process is garbage collection, and it runs on its own schedule.
TRIM is enabled by default on Windows 7+ and macOS 10.6.8+. If you deleted files from an SSD connected to a modern operating system, TRIM almost certainly ran. The question isn't whether TRIM ran; it's whether garbage collection has finished erasing the NAND cells. That's what our free SSD evaluation determines.
What Is DZAT, and Why Does Recovery Software See Zeroes?
DZAT stands for Deterministic Read Zero After TRIM. It's a firmware behavior where the SSD controller intercepts read requests for deleted blocks and returns all zeroes. This happens instantly after TRIM processing, before the physical NAND cells are erased. Recovery software like Disk Drill, EaseUS, or R-Studio reads through the controller's standard interface, receives zeroes, and concludes the data is gone.
- DZAT (SATA SSDs)
- Defined by SATA specification Word 69 bit 5 in the device IDENTIFY data. The controller returns all zeroes for any read to a TRIMmed logical block address. Implemented on most SATA SSDs manufactured after 2015.
- DRAT (Older SATA SSDs)
- Defined by SATA Word 69 bit 14. Returns a consistent but not necessarily zero value for TRIMmed addresses. Common on drives before 2018. Slightly more favorable for software-based recovery since the returned pattern differs from genuine zeroes.
- DLFEAT=001b (NVMe SSDs)
- The NVMe equivalent of DZAT. Set in the namespace metadata, it forces reads to deallocated blocks to return all zeroes. Every major NVMe controller (Samsung Elpis, Phison PS5018-E18, Silicon Motion SM2262EN) enforces this behavior.
The result for you: any recovery tool you run from Windows, macOS, or Linux will see zeroes where your data used to be. The data may still physically exist on the NAND memory chips, but the controller blocks access through the normal read path. Getting past DZAT requires bypassing the controller entirely, which is what PC-3000 SSD does in our lab.
When Can a Lab Still Recover Your SSD Data After TRIM?
Recovery is possible when the NAND cells still hold their original electrical charge. DZAT hides the data from software, but the physical memory chips don't know the difference. Between the moment TRIM runs and the moment garbage collection applies the erase voltage, a narrow recovery window exists. How long that window lasts depends on the controller.
| Scenario | NAND State | Recoverable? |
|---|---|---|
| SSD lost power before GC ran | Cells hold original charge | Yes |
| Controller firmware crashed | GC never executed; cells intact | Yes |
| USB bridge chip blocked TRIM | Controller never received TRIM | Yes |
| TRIM disabled in OS settings | No TRIM sent; data persists | Yes |
| GC interrupted mid-erase by power loss | Some pages partially drained | Partial |
| GC completed; blocks fully erased | Cells at 0xFF (erased state) | No |
Power off the SSD immediately after accidental deletion. Don't run recovery software; it triggers controller activity that can start GC. Ship the drive powered off to our Austin, TX lab. We'll check the raw NAND state for free. If GC has already erased the target blocks, we tell you and return the drive at no cost. For the full diagnostic path across queued-TRIM failures, OP-block survival, and firmware-crash scenarios, see our SSD data recovery service. SATA recovery starts at $200; NVMe starts at $200.
When Does Recovery Software Work on an SSD?
Recovery software works when the SSD is physically healthy and the problem is logical: an accidentally deleted partition, a corrupted file system, or formatted volume where TRIM hasn't executed on the target blocks. Tools like Disk Drill, EaseUS, PhotoRec, and R-Studio scan the drive through the controller's standard interface and reconstruct file structures from whatever the controller returns.
That stops working the moment DZAT activates. Once the controller processes TRIM, software sees zeroes. If the controller is dead (the drive doesn't appear in BIOS), software can't communicate with the drive at all. And if the firmware is corrupted (the drive reports 0MB capacity or the wrong model name), software has no valid file system to scan.
Lab recovery picks up where software fails. PC-3000 SSD communicates with the controller at the vendor command level, below the SATA or NVMe protocol. For dead controllers, we diagnose the failure using FLIR thermal imaging and repair the original PCB with Hakko FM-2032 microsoldering. The distinction matters because many SSDs encrypt data using hardware AES-256, with the encryption key bound to the controller. A dead controller on an encrypted drive means chip-off yields only ciphertext. Board-level repair to revive the original controller is the only path to readable data on encrypted SSDs.
Once DZAT-induced zero returns rule out every software-only path, the workflow has nowhere to go but down to the NAND. That is what the rest of the lab process described on our SSD data recovery service page handles, from PC-3000 SSD Safe Mode entry through chip-off on unencrypted controllers.
How Much Does SSD Data Recovery Cost?
SATA SSD recovery ranges from $200–$1,500. NVMe SSD recovery ranges from $200–$2,500. Price depends on the failure type. If we determine that garbage collection has already erased your data, the evaluation costs nothing. +$100 rush fee to move to the front of the queue. No diagnostic fees. 4.9 stars across 1837+ Google reviews.
Circuit board repair (SATA: $450–$600, NVMe: $600–$900) involves component-level microsoldering to revive the original controller. This tier preserves the AES-256 encryption key, which is why it's the primary recovery path for modern encrypted SSDs. NAND swap (SATA: $1,200–$1,500, NVMe: $1,200–$2,500) requires a 50% deposit and is reserved for cases where the original PCB is too damaged for repair. A donor drive is a matching SSD used for its circuit board. Typical donor cost: $40–$100 for common models, $150–$300 for discontinued or rare controllers.
Simple Copy
Low complexityYour drive works, you just need the data moved off it
$200
3-5 business days
Functional drive; data transfer to new media
Rush available: +$100
File System Recovery
Low complexityYour drive isn't showing up, but it's not physically damaged
From $250
2-4 weeks
File system corruption. Visible to recovery software but not to OS
Starting price; final depends on complexity
Circuit Board Repair
Medium complexityYour drive won't power on or has shorted components
$450–$600
3-6 weeks
PCB issues: failed voltage regulators, dead PMICs, shorted capacitors
May require a donor drive (additional cost)
Firmware Recovery
Medium complexityMost CommonYour drive is detected but shows the wrong name, wrong size, or no data
$600–$900
3-6 weeks
Firmware corruption: ROM, modules, or system files corrupted
Price depends on extent of bad areas in NAND
PCB / NAND Swap
High complexityYour drive's circuit board is severely damaged and requires NAND chip transplant to a donor PCB
$1,200–$1,500
4-8 weeks
NAND swap onto donor PCB. Precision microsoldering and BGA rework required
50% deposit required; donor drive cost additional
50% deposit required
Hardware Repair vs. Software Locks
Our "no data, no fee" policy applies to hardware recovery. We do not bill for unsuccessful physical repairs. If we replace a hard drive read/write head assembly or repair a liquid-damaged logic board to a bootable state, the hardware repair is complete and standard rates apply. If data remains inaccessible due to user-configured software locks, a forgotten passcode, or a remote wipe command, the physical repair is still billable. We cannot bypass user encryption or activation locks.
No data, no fee. Free evaluation and firm quote before any paid work. Full guarantee details. NAND swap requires a 50% deposit because donor parts are consumed in the attempt.
Rush fee: +$100 rush fee to move to the front of the queue.
Donor drives: A donor drive is a matching SSD used for its circuit board. Typical donor cost: $40–$100 for common models, $150–$300 for discontinued or rare controllers.
Target drive: The destination drive we copy recovered data onto. You can supply your own or we provide one at cost plus a small markup. All prices are plus applicable tax.
How Do NAND Cells Store Data at the Transistor Level?
Older planar NAND used floating gate transistors: a conductive polysilicon gate isolated between oxide layers stores electrons that set the cell's threshold voltage. Most modern 3D NAND (Samsung V-NAND, Kioxia BiCS) uses Charge Trap Flash (CTF), where electrons are trapped in a non-conductive silicon nitride layer instead. Micron took a different path, retaining floating gate architecture through its 32-layer, 64-layer, and 96-layer 3D NAND generations before transitioning to a replacement-gate CTF design at 128 layers and above. The underlying principle is the same across both architectures: trapped charge determines threshold voltage, and the controller reads that voltage as a binary value. The difference matters for endurance and data retention, but both architectures follow the same erase and programming physics described below.
Programming: Fowler-Nordheim Tunneling
Writing data to a NAND cell pushes electrons through the tunnel oxide into the charge storage layer (floating gate or nitride trap) using Fowler-Nordheim (F-N) tunneling. A high voltage (+15V to +20V) applied to the control gate creates an electric field strong enough for electrons to quantum-tunnel through the oxide barrier. The accumulated charge raises the cell's threshold voltage. SLC cells store one bit across two voltage states; TLC cells store 3 bits across 8 voltage levels; QLC stores 4 bits across 16 levels.
Each program/erase (P/E) cycle degrades the tunnel oxide. The oxide traps electrons that don't fully clear during erase, gradually narrowing the voltage windows between states. Consumer TLC NAND is rated for roughly 1,000-3,000 P/E cycles; QLC for 500-1,000. This physical degradation is why SSDs have a write endurance limit and why older, heavily-used drives develop read errors that PC-3000 SSD must work around during recovery.
Erasure: Block-Level Constraint
NAND can write individual pages (4KB-16KB) but can only erase entire blocks (typically 256KB-4MB containing 64-256 pages). This is a physical limitation, not a firmware choice. Transistors in a NAND string share a common P-well substrate. The erase voltage is applied to the P-well, which drains the charge storage layer in every cell in the block simultaneously through reverse F-N tunneling. There is no way to erase a single page within a block without erasing every page in that block.
This page-write/block-erase asymmetry is the reason garbage collection exists. When you delete 3 files spread across a block that also contains 5 active files, the controller can't just erase the deleted pages. It reads the 5 valid pages, copies them to a clean block, then applies the erase voltage to the entire old block. The valid pages survive in their new location. The deleted data is electrically destroyed.
DZAT, DRAT, and DLFEAT Behavior by Controller Family
Every modern SSD controller family we recover implements deterministic post-TRIM behavior, but the aggressiveness of garbage collection varies by controller firmware. Samsung controllers erase TRIMmed blocks within seconds of idle. Silicon Motion controllers defer GC until free block counts drop below a firmware-defined threshold. This timing difference determines how large the recovery window is for any given drive.
| Controller | Interface | Post-TRIM Behavior | GC Aggressiveness | PC-3000 Entry Mode |
|---|---|---|---|---|
| Samsung Elpis (980 Pro) | NVMe | DLFEAT=001b | Seconds after idle | Not supported (board repair) |
| Samsung Pascal (990 Pro) | NVMe | DLFEAT=001b | Seconds after idle | Not supported (board repair) |
| Samsung Piccolo (990 EVO) | NVMe | DLFEAT=001b | Seconds after idle | Not supported (board repair) |
| Phison PS3111-S11 | SATA | DZAT (Word 69 bit 5) | Batched during idle | Safe Mode |
| Phison PS5012-E12 | NVMe | DLFEAT=001b | Batched during idle | Safe Mode |
| Phison PS5018-E18 | NVMe | DLFEAT=001b | Batched during idle | Safe Mode (repair only) |
| SM2258XT / SM2259XT | SATA | DZAT (Word 69 bit 5) | Deferred (lazy GC) | Safe Mode |
| SM2262EN / SM2263XT | NVMe | DLFEAT=001b | Deferred (lazy GC) | Safe Mode |
| Marvell 88SS1074 | SATA | DZAT (Word 69 bit 5) | Firmware-dependent | Safe Mode |
| WD/SanDisk in-house | NVMe / SATA | DZAT / DLFEAT=001b | Moderate | Not supported (board repair) |
Silicon Motion controllers (SM2258XT, SM2259XT, SM2262EN, SM2263XT) offer the largest recovery window for post-TRIM data. Their “lazy GC” strategy preserves TRIMmed pages on lightly-used drives until the free block pool drops below a firmware-defined threshold. Samsung Elpis and Pascal controllers offer the smallest window; their GC begins within seconds of the drive going idle. We see this pattern consistently on our PC-3000 SSD diagnostic bench.
PS3110, SM2258XT, and Samsung MEX/MGX: DZAT Firmware Behavior in Detail
Three controller families dominate the SATA SSD installed base and define what recovery looks like in practice. The Phison PS3110-S10 is an 8-channel quad-core SATA controller with onboard DRAM, shipped on PNY CS1311, Patriot Ignite, and Mushkin Striker drives, plus extensive Toshiba and Lite-On rebranding. The PS3110 advertises Word 69 bit 5 set and processes TRIM through the DATA SET MANAGEMENT opcode 0x06 path. GC runs in batched bursts during idle: the firmware selects candidate blocks by invalid-page ratio, copies surviving valid pages forward, then applies the +15-20V erase pulse. PC-3000 forces the PS3110 into Safe Mode by shorting designated ROM/Safe Mode test points on the PCB while cycling power, halting GC mid-batch and exposing the pre-erase NAND state.
Silicon Motion SM2258XT is the DRAM-less budget controller behind the Crucial BX500, ADATA SU650, Kingston A400, WD Green, and a long tail of OEM-rebranded drives. Because the SM2258XT has no onboard DRAM, the entire FTL lives in NAND flash, so every metadata flush costs a NAND program cycle and firmware batches both flushes and erases against an internal idle watermark. The same architectural choice makes SM2258XT firmware more prone to service-area corruption after sudden power loss because the L2P delta sitting in SRAM is lost on power-down. PC-3000 enters Safe Mode by shorting the designated ROM pins on the PCB during power-on, bypassing the corrupted on-NAND firmware, and uploads an SRAM-only loader that reads physical pages without triggering the deferred GC.
Samsung MEX (840 EVO), MGX (850 EVO), and MJX (860 EVO) are the consumer SATA controllers behind Samsung's 8xx EVO line. All three advertise DZAT through Word 69 bit 5. GC on MEX and MGX is among the most aggressive of any SATA controller family we work with: idle-detect kicks in shortly after the last host command, and recovery windows on a powered-on Samsung 840/850/860 EVO drive are tight enough that running consumer recovery software can close the window before a scan completes. PC-3000 Samsung forces the controller into Techno Mode by shorting ROM pins on the PCB, then issues vendor commands to read raw NAND past the FTL. Separately, the Linux libata kernel still blacklists queued TRIM on the Samsung 8xx EVO family today; that blacklist is host-side mitigation for a firmware bug, not a recovery workflow, but it is a useful reminder that this controller family's TRIM pipeline has a documented failure history. The downstream consequence of this controller-by-controller GC timing variance is detailed in our analysis of the garbage collection data loss mechanism.
How Does the DZAT ATA Command Protocol Physically Unmap NAND Blocks?
TRIM is not a single command. On SATA drives it is the DATA SET MANAGEMENT command (opcode 0x06) with the TRIM bit set in the feature register. On NVMe it is the Dataset Management command (opcode 0x09) with the Deallocate (AD) attribute. Both carry a payload of LBA ranges that the controller marks as invalid in the Flash Translation Layer. DZAT is the behavior enforced after those ranges are processed: any subsequent read to a deallocated LBA returns a deterministic zero payload sourced from the controller, not from NAND.
The sequence from host delete to physical NAND erase unfolds in four discrete steps, and the data is recoverable at every step except the last:
- Host TRIM/DSM Deallocate issued. The OS sends DATA SET MANAGEMENT (SATA opcode 0x06) or Dataset Management with AD=1 (NVMe opcode 0x09) carrying the LBA range list. The NAND cells still hold the original programmed threshold voltages at this instant.
- FTL marks the LBA range invalid. The controller writes a journal entry, updates the in-DRAM L2P table, and flushes the invalidated mapping to the NAND metadata region. DZAT/DLFEAT enforcement activates immediately; any subsequent host read to that LBA returns a zero payload fabricated by the controller, not fetched from NAND.
- Block enters the GC candidate pool. The physical block backing those LBAs is queued for garbage collection, but no erase voltage has been applied. On Silicon Motion lazy-GC firmware the block can sit in the candidate pool for hours on a lightly used drive; on Samsung Elpis and Pascal firmware the candidate pool is drained within seconds of the drive going idle.
- GC applies the +15-20V erase pulse. Reverse Fowler-Nordheim tunneling drains the charge storage layer across every cell in the block simultaneously. After this step the data is physically destroyed and no lab procedure recovers it. PC-3000 SSD's Safe Mode raw-NAND read path bypasses the DZAT mask at step 2 or 3; once step 4 completes, the cells read 0xFF at the physical level and the window is closed.
SATA: DATA SET MANAGEMENT (0x06) with TRIM
The host sends a DATA SET MANAGEMENT command with the TRIM feature bit (bit 0 of the feature field) set. The data transferred is a 512-byte LBA Range Entry block: up to 64 entries per block, each 8 bytes, encoding a 48-bit starting LBA and a 16-bit sector count. The SATA 3.1 specification added Queued TRIM, which uses the SEND FPDMA QUEUED command (opcode 0x64) with a DSM subcommand rather than the non-queued DATA SET MANAGEMENT opcode 0x06, allowing TRIM to execute concurrently with other queued I/O. Word 69 bit 5 of the IDENTIFY DEVICE response advertises DZAT support; bit 14 advertises DRAT. If both bits are zero, the drive predates deterministic post-TRIM behavior, and stale data may be returned on reads to deallocated LBAs.
NVMe: Dataset Management (0x09) with Deallocate
The NVMe equivalent is the Dataset Management command (opcode 0x09). The host sets the AD (Attribute - Deallocate) bit in CDW11 and transfers a range list encoded as 16-byte entries (starting LBA, length, context attributes). Post-deallocate read behavior is controlled by the DLFEAT byte (byte offset 33 of the Identify Namespace data structure). Bits 2:0 of DLFEAT define the behavior: 000b means no guarantee on returned values; 001b returns all zeroes (DZAT-equivalent); 010b returns all ones. Every mainstream consumer and enterprise NVMe SSD manufactured after 2019 reports DLFEAT=001b.
Flag Table Zero Return Versus NAND Erase Block Cycle Timing
The DZAT zero return is not produced by reading a NAND page that has been wiped. It is produced by the controller checking a per-LBA invalid bit in the FTL flag table and, on a hit, synthesizing an all-zero buffer in DRAM and returning it to the host. That flag-table lookup completes in microseconds. The host receives a zero payload before the SATA or NVMe completion frame would have had time to round-trip a real NAND page read, which is why software-only recovery tools cannot distinguish a freshly TRIMmed block from a block whose cells have been fully drained: the bytes coming back over the wire look identical because both are fabricated by the controller, not fetched from silicon.
The actual NAND erase block cycle is on a different time scale entirely. The block must be selected by the GC scheduler, the surviving valid pages must be relocated, the charge pump must ramp the +15-20V erase pulse onto the P-well, the pulse must hold long enough for reverse Fowler-Nordheim tunneling to drain the charge storage layer, and an erase-verify pass must confirm every cell read at the 0xFF threshold before the block is returned to the free pool. Foreground GC under host pressure pushes that sequence through quickly; background GC on a lightly loaded drive can defer it. Between the flag-table lookup that fakes the zero return and the verified erase that actually drains the cells, the NAND still carries its original programmed threshold voltages. PC-3000 SSD's Safe Mode reads land inside that gap, which is the entire reason a lab-level solid state drive data recovery workflow can return data that consumer software has already declared gone.
Queued TRIM Bugs and the Survival Window
Queued TRIM implementations have shipped with firmware bugs that extend the recovery window. The Linux kernel's libata subsystem maintains an explicit blacklist (ATA_HORKAGE_NO_NCQ_TRIM) for Samsung 840 Pro, 850 Pro, and 860 Pro drives on older firmware, as well as certain Micron M500/M510/M550 models, because queued TRIM on those drives can corrupt the FTL. On a blacklisted drive, queued TRIMs may be dropped silently or processed out of order, leaving mapped LBAs whose NAND pages still hold the original charge state. PC-3000 SSD's Safe Mode read of physical NAND exposes this residue even though the standard read path still returns DZAT zeroes.
Power-Off Before the Erase Voltage
DZAT masking is a controller-side response, not a NAND-side change. At the moment TRIM is processed, the FTL entry is invalidated and the block is enqueued for garbage collection, but the NAND cells still carry the original programmed threshold voltages. The physical erase happens later, when GC applies +15-20V through the P-well and reverse Fowler-Nordheim tunneling drains the charge layer. If the drive loses power between TRIM invalidation and GC erase, the data survives. Continued power cycles without executing background tasks also accumulate wear that eventually becomes relevant to the NAND degradation failure mode, where retention loss itself becomes the obstacle rather than TRIM.
Over-Provisioned and Retired Blocks
The ATA DATA SET MANAGEMENT protocol operates only on LBAs the host can address. Over-provisioned blocks, spare blocks used for bad-block replacement, and retired blocks fenced by the controller are invisible to TRIM. Stale page copies relocated during wear leveling frequently survive in these controller-managed regions. When board-level repair or in-system PC-3000 access is not feasible, the final path for reading these regions is chip-off NAND recovery, where the NAND packages are desoldered and read on a dedicated hardware programmer. Chip-off yields useful plaintext only on unencrypted controllers; on AES-256 encrypted SSDs the harvested data is ciphertext without the controller-bound key.
For the full diagnostic and pricing path across SATA and NVMe failure modes, see the flagship SSD data recovery service.
Why Does TRIM Leave a Recoverable Window That SANITIZE Does Not?
TRIM is advisory. The ATA/ATAPI Command Set spec (ACS-4, INCITS 529-2018) defines DATA SET MANAGEMENT with the TRIM bit as a hint that lets the controller schedule garbage collection at its own discretion. It makes no promise about when the NAND cells are physically erased, only that subsequent reads to deallocated LBAs will return the deterministic payload specified by RZAT or DRAT. The entire recovery window examined on this page is a direct consequence of that scheduling freedom.
Word 169 bit 0 vs Word 69 bits 5 and 14
ACS-4 splits TRIM-related IDENTIFY DEVICE reporting across two words. Word 169 bit 0 advertises that the device supports DATA SET MANAGEMENT with the TRIM feature set at all. Word 69 bits 5 and 14 describe the post-deallocation read guarantee: RZAT (bit 5) when the controller must return zeroes, DRAT (bit 14) when it must return a deterministic but non-zero pattern. A drive that reports Word 169 bit 0 set but Word 69 bits 5 and 14 cleared still accepts TRIM commands; it simply does not guarantee what a subsequent read will see, which on a few pre-2015 SATA SSDs left stale NAND contents addressable through the standard read path until GC completed.
SANITIZE BLOCK ERASE Guarantees Physical Erasure
The SANITIZE feature set (ACS-3 and later) uses a single opcode, SANITIZE DEVICE (B4h), with the subcommand selected through the ATA Feature register: BLOCK ERASE EXT (feature 12h), CRYPTO SCRAMBLE EXT (feature 11h), and OVERWRITE EXT (feature 14h). Unlike TRIM, SANITIZE BLOCK ERASE EXT is contractually required to apply the NAND erase voltage to every user-addressable and over-provisioned block before reporting completion. The command runs as a long operation, not a queued one, and the device must report progress through SANITIZE STATUS EXT (00h) until erasure finishes. If SANITIZE was issued and completed, physical recovery is gone across the entire NAND array, including OP blocks the host cannot reach. TRIM, by contrast, operates only on host-visible LBAs and never promises physical erase. This is why a customer who ran TRIM may still have recoverable data while a customer who ran SANITIZE BLOCK ERASE does not. CRYPTO SCRAMBLE EXT on a hardware-encrypted drive simply rotates the Media Encryption Key, which renders the existing NAND contents ciphertext-without-key in microseconds.
NVMe Range-Count and Range-Size Ceilings (DMRL and DMRSL)
The NVMe Base Specification (rev 2.0) places explicit ceilings on Dataset Management payloads through two fields in the I/O Command Set Specific Identify Controller data structure for the NVM Command Set (CNS 05h). DMRL (Dataset Management Ranges Limit) is the maximum number of 16-byte range entries a single DSM command may carry; DMRSL (Dataset Management Range Size Limit) is the maximum logical block count a single range may describe. When the host needs to deallocate a region larger than DMRSL or wider than DMRL, the operating system splits the operation into multiple DSM commands. Each split increases the number of moments at which a power loss or controller crash can land between range commits, which is why large delete operations on NVMe produce more partial-unmap residue than small ones.
Over-Provisioning Free-Block-Pool GC Trigger Thresholds
The duration of the survival window in the over-provisioned area is governed by the controller's free-block-pool management. A consumer SSD with 7% factory OP maintains a pool of clean erased blocks that the controller refills by compacting and erasing stale blocks during idle time. Firmware defines a low-water mark (the free-block count at which foreground GC begins blocking writes) and a high-water mark (the free-block count at which background GC stops). A TRIMmed block enters the candidate pool immediately, but whether it is erased next depends on its wear count, how many valid pages it still holds, and where the free pool currently sits relative to those thresholds. On a lightly used drive sitting near the high-water mark, a TRIMmed block with a low wear count and few valid pages may remain intact for hours on Silicon Motion SM2258XT or SM2262EN firmware. On a near-full drive approaching the low-water mark, that same block is erased within seconds because foreground GC is actively hunting candidates to keep host writes flowing.
Enterprise SSDs with 28% OP (e.g., 800GB usable from 1024GB raw) extend this window further because the pool of candidate blocks is deeper. Consumer drives with minimal OP (2-7%) have the shortest window because any deallocation is likely to be needed to keep the free pool above the low-water mark. This is why identical deletes on two drives of the same model but different fill levels produce different outcomes when the drive arrives in our lab.
Mid-Unmap FTL Journal Orphaning
A TRIM or DSM Deallocate is not atomic at the NAND level. The controller first writes a journal entry to a reserved metadata region recording the intent to invalidate a set of L2P mappings, then updates the in-DRAM L2P table, then flushes the updated L2P page to NAND, then eventually erases the backing blocks. Power loss or a firmware exception between any two of those steps leaves a specific residue signature. A crash after journal write but before L2P flush leaves the old L2P mapping valid on the next boot; the original NAND pages are still pointed at by valid logical addresses. A crash after L2P flush but before erase leaves the L2P marked invalid but the NAND still programmed. PC-3000 SSD's Safe Mode scans both the current FTL and the journal region, then reads the physical pages those orphaned mappings reference. Queued-TRIM firmware bugs on the blacklisted Samsung and Micron models referenced above are a specific sub-case of this orphaning: the journal records one LBA range, the FTL commits a different range, and the disagreement strands deallocated pages that the host still sees as valid. This is why power loss or a crash mid-unmap is a favorable arrival condition and why running recovery software on a suspect drive can resolve those orphans by triggering a clean journal replay.
Chip-off via a dedicated NAND programmer remains the final option when the controller is dead and no Safe Mode entry is available. Chip-off yields plaintext only on unencrypted controllers; on AES-256 encrypted SSDs the harvested dump is ciphertext without the controller-bound key. SATA chip-off recovery runs $1,200–$1,500; NVMe chip-off runs $1,200–$2,500. A donor drive is a matching SSD used for its circuit board. Typical donor cost: $40–$100 for common models, $150–$300 for discontinued or rare controllers.
PC-3000 SSD: Safe Mode Entry and Techno Mode Workflow
PC-3000 SSD reads past DZAT and DLFEAT by forcing the controller into a diagnostic state where all standard processing halts. The entry method varies by controller family: shorting diagnostic test points on the PCB, issuing vendor-specific command sequences, or triggering a controlled firmware exception. Once in diagnostic mode, the controller stops processing TRIM, garbage collection, wear leveling, and standard read/write operations.
Safe Mode (Phison, Silicon Motion, Marvell)
For Phison and Silicon Motion controllers, PC-3000 SSD enters Safe Mode by shorting specific test points on the SSD's PCB during power-on. This forces the controller to boot with minimal firmware, halting all background processes. The PC-3000 Phison utility or SM utility then uploads a custom microcode loader to the controller's SRAM. This loader reads Physical Block Addresses (PBAs) directly from the NAND array, bypassing the FTL's logical-to-physical translation and the DZAT zero-return mask.
Techno Mode (Samsung)
Older Samsung SATA controllers (e.g., MGX and MHX on the 840/850 EVO and Pro lines, MJX on the 860 EVO and Pro) enter Techno Mode through vendor-specific command sequences rather than test point shorting. PC-3000 SSD's Samsung utility issues these commands to halt GC, wear leveling, and DZAT enforcement. In Techno Mode, the utility reads the FTL mapping tables from the controller's DRAM or NAND-backed metadata area, maps logical addresses to physical NAND coordinates, and reads raw pages at those locations. If the cells still hold charge, the data is recoverable regardless of what the standard SATA interface reports.
Modern Samsung NVMe controllers (Elpis in the 980 Pro, Pascal in the 990 Pro, Piccolo in the 990 EVO) have no PC-3000 Techno Mode or firmware-level loader support. ACELAB does not publish microcode loaders or L2P reconstruction workflows for these architectures, so there is no software path to bypass DLFEAT on these drives. Recovery is strictly board-level: reviving a failed PMIC or voltage regulator using FLIR thermal fault localization and Hakko FM-2032 component replacement, then reading the drive through the revived original controller with its hardware-bound AES-256 key intact.
FTL Reconstruction
When the FTL mapping table itself is corrupted (common after sudden power loss or firmware crashes), PC-3000 SSD rebuilds the logical-to-physical map from NAND metadata pages. The utility scans every physical block, reads the page headers and ECC data, and reconstructs which logical address each page belongs to. This is the firmware recovery tier (SATA: $600–$900, NVMe: $900–$1,200) and represents a software-level lab procedure that consumer tools can't perform because they have no access to the controller's vendor command interface.
Why Board Repair Is Data Recovery for Encrypted SSDs
Many modern SSDs encrypt data automatically using AES-256 hardware encryption, though budget and mid-range drives (WD SN770, Crucial P3, older Phison PS3111-S11 designs) omit this feature. On encrypted drives, the Media Encryption Key is bound to the controller hardware. If the controller dies, the NAND chips contain only ciphertext. Desoldering the NAND and reading it on another controller (chip-off) yields encrypted data with no key. Board-level repair to revive the original controller is the only recovery path for encrypted SSDs.
NVMe SSDs implementing TCG Opal or IEEE 1667 bind the AES-256 key material to the controller's hardware fuses. A dead Phison PS5012-E12 on a Sabrent Rocket means the NAND contents are unreadable without the original controller's key. A dead Samsung Elpis on a 980 Pro means the same thing. Chip-off on an encrypted NVMe drive is not a recovery option; it's an expensive way to get a dump of ciphertext.
Most data recovery labs outsource board-level failures or declare them unrecoverable. We locate the failed component using FLIR thermal imaging, replace the shorted PMIC or voltage regulator with a Hakko FM-2032 on an FM-203 base station, and bring the original controller back to life. When the controller boots, the encryption keys are intact and the data is accessible. Board repair isn't a separate service from data recovery; for encrypted SSDs, it is the recovery. Circuit board repair runs $450–$600 for SATA SSDs, $600–$900 for NVMe.
How Does Wear Leveling Affect Data Persistence?
Wear leveling distributes writes across all NAND blocks to prevent any single block from wearing out prematurely. The controller tracks P/E cycle counts per block and periodically relocates data from low-wear blocks to high-wear blocks. This relocation creates stale copies of data in the old block locations, which persist until garbage collection erases them.
These stale copies are a secondary recovery target. When the primary copy of a file has been TRIMmed and GC-erased, an older version may still exist in a block that wear leveling has not yet reclaimed. PC-3000 SSD's Techno Mode reads every physical block on the drive, including blocks not mapped in the current FTL. Finding these remnant copies requires scanning the entire NAND array (a 1TB SSD contains roughly 8,192 to 16,384 erase blocks) and correlating page metadata with file system structures.
Over-provisioned space works similarly. A 1TB SSD with 7% over-provisioning reserves roughly 70GB of NAND for controller-managed operations. This space isn't visible to the OS and isn't targeted by TRIM. Stale data pages relocated during GC and wear leveling may persist in OP blocks. Retired bad blocks also contain unmapped remnant data accessible only through PC-3000 SSD's physical-level read functions, or through chip-off NAND recovery on unencrypted controllers.
Data Remanence on Erased NAND: Academic vs. Commercial Reality
Academic research has measured approximately 0.5V threshold voltage variance between NAND cells that were erased after storing data and cells that were never programmed. This variance is a measurable physical artifact of the programming and erasure process. It is not commercially recoverable. No data recovery lab, including ours, can extract usable data from this residual voltage difference using SSD controllers or PC-3000 SSD.
The 0.5V variance is detectable with semiconductor characterization equipment (probe stations, source-measure units) operated at the die level. This equipment costs six figures, operates on decapped NAND dies, and produces raw analog measurements that require statistical analysis to interpret. The distinction between “erased after storing a 1” and “erased after storing a 0” is a probability distribution, not a clean binary signal.
For TLC and QLC NAND with 8 or 16 voltage levels respectively, the margins between legitimate states are already tight (as narrow as 200mV for QLC). A 0.5V residual variance doesn't provide enough signal-to-noise ratio to reconstruct multi-bit cell states with any confidence. If a company claims they can recover data from physically erased NAND cells, they are either describing a different failure scenario (GC interrupted before completing) or describing a capability that doesn't exist commercially.
Does a Write Blocker Prevent SSD Garbage Collection?
No. A forensic write blocker prevents the host computer from sending write commands to the SSD, but garbage collection is an internal controller process. The controller runs GC, wear leveling, and read refresh operations autonomously whenever the drive is powered on, regardless of whether any host commands are issued. Powering on an SSD behind a write blocker still allows the controller to erase TRIMmed blocks.
This is a common misunderstanding in digital forensics. Write blockers were designed for magnetic hard drives where the storage medium (the platter) is passive. On an HDD, if you block writes, the data stays static. On an SSD, the storage controller is an active processor that modifies the NAND independently. The only way to freeze all controller operations is to force the controller into a diagnostic state using PC-3000 SSD, where TRIM processing, GC, and wear leveling all halt.
The safest approach: don't power the SSD at all after data loss. Keep it unpowered and ship it to a lab. We apply power for the first time inside PC-3000 SSD's controlled environment, entering Safe Mode or Techno Mode before the controller can resume background operations. This preserves the NAND state as of the moment you powered off the drive.
DZAT and NAND Physics FAQ
Can data be recovered from an SSD after TRIM?
What does DZAT mean for SSD data recovery?
What is the difference between DZAT and DRAT?
Does a write blocker prevent SSD garbage collection?
How does PC-3000 SSD read past DZAT?
How long after deletion does garbage collection erase data?
Does data remanence exist on erased NAND cells?
Can over-provisioned space contain recoverable data?
Need Recovery for Other Devices?
Overview of the TRIM-to-GC pipeline, controller-specific timing, and when the recovery window is still open.
The recovery window between TRIM and garbage collection. How to disable TRIM, and when professional recovery is still possible.
SATAFIRM S11, 0GB capacity, BSY state. When the controller firmware crashes, GC stops and TRIMmed data may survive on the NAND.
Full SSD data recovery service. SATA from From $200, NVMe from From $200. Free evaluation, no data = no fee.
SSD Data Deleted? TRIM Doesn't Always Mean Gone.
DZAT hides data from software, but the NAND cells may still hold your files. Power off the drive and ship it to our Austin lab. We check the raw NAND state for free using PC-3000 SSD. SATA recovery starts at $200; NVMe starts at $200. No data, no charge.
