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

SSD Firmware Panics & ROM Mode Recovery (SATAFIRM S11, SM2258 BSY)

When an SSD controller can't load its firmware from the NAND service area, it falls back to ROM mode and reports a generic factory ID like SATAFIRM S11 or a 0GB capacity. We recover data from ROM-mode SSDs at our Austin, TX lab using PC-3000 SSD loader injection and FTL reconstruction. No MPTool wiping, no diagnostic fee, no charge if there's no data.

SSD ROM mode is the controller's fallback boot state when its on-NAND firmware is unreadable. The chip runs only its read-only bootloader and identifies itself with a factory string (SATAFIRM S11, SM2258AB) at a 0GB, 1GB, or 2MB diagnostic capacity. Recovery requires PC-3000 SSD to inject a volatile loader and rebuild the Flash Translation Layer.

What is SSD ROM mode?

Every SSD controller has two firmware layers. A tiny, hardcoded bootloader lives in read-only memory inside the controller die. The full firmware (FTL, garbage collector, wear leveler, SMART handler) lives in a reserved service area on the NAND. On a healthy power-up the ROM bootloader reads, validates, and hands off to the on-NAND firmware. When that handoff fails, the controller stays in the bootloader and presents itself to the host as a different device entirely.

ROM mode
The Phison term. Triggered when the PS3111-S11 cannot validate firmware modules on the NAND. The drive answers vendor commands but reports SATAFIRM S11 at 0 bytes. Entry into a usable diagnostic state requires a momentary short of the ROM_CS test pad during power-on.
BSY state (Keep BSY)
The Silicon Motion term. The SM2258 or SM2259XT completes the SATA handshake, begins FTL initialization, then hits an unhandled exception parsing corrupted system blocks. The controller holds the ATA BSY bit high indefinitely, so the host can't issue any further commands. Diagnostic access requires a permanent short of the ROM_CS or UART_TX test pad throughout power-on.
Severe CP corruption
A deeper Silicon Motion panic. The controller's Configuration Pages are corrupted across every redundant copy in the system blocks, usually from a power loss mid-update. The dedicated CP backup is unreadable, so PC-3000 SSD falls back to a full physical NAND scan to locate scattered FTL fragments and rebuild the translator from page-level spare-area metadata instead.
Safe Mode / Techno Mode
ACELab's name for the diagnostic state the controller enters once the test pads are shorted. The drive runs entirely from its internal ROM and accepts a volatile microcode loader (LDR) into volatile memory that gives PC-3000 raw NAND access without writing to flash.

The user data is still physically present on the NAND in all of these states. What failed is the translator that maps logical block addresses to physical NAND pages. Reconstructing that translator off-drive is the entire job. For the broader picture of how SSD firmware corruption develops over time, see our SSD firmware corruption recovery page.

What triggers a PS3111-S11 SATAFIRM S11 firmware panic?

The PS3111-S11 falls into ROM mode when it cannot validate its on-NAND firmware during the boot sequence. Three common events trigger this failure: sudden power loss during an FTL flush, physical degradation of the NAND blocks that hold the service area, or a bad block table overflow that leaves the controller with no spare blocks to remap failed pages.

Sudden Power Loss during FTL Flush
The PS3111-S11 has no external DRAM chip, but the controller package embeds 32MB of SDRAM for caching. The bulk of the Flash Translation Layer still lives on the NAND. Power loss during an FTL metadata write leaves the service-area page half-programmed. The controller detects the bad checksum at boot & aborts to ROM mode. It won't mount a corrupt translator.
NAND Degradation in Service Area
The service area occupies the same TLC or QLC NAND as user data. As cells degrade past their ECC correction threshold, the FTL modules stored there develop uncorrectable bit errors. The controller detects the mismatch during boot-time validation & drops to SATAFIRM S11 because it cannot trust corrupted mapping tables.
Bad Block Table Overflow
Every SSD reserves spare blocks to replace worn-out NAND. On budget drives with small over-provisioned areas, the bad block table can fill completely. When the controller tries to allocate a replacement block during garbage collection & finds none, the FTL state becomes inconsistent. The next boot fails validation & the chip reports SATAFIRM S11.

How does PC-3000 recover a Phison PS3111-S11 in SATAFIRM S11?

The Phison PS3111-S11 is a DRAM-less, single-core, two-channel SATA controller that stores its FTL on the same TLC or QLC NAND as user data. When NAND pages holding the service area degrade, or when power drops during garbage collection, the controller can't validate its firmware and falls into ROM mode. PC-3000 SSD's Phison active utility recovers data in four steps.

  1. 01

    ROM mode enumeration and momentary pin short

    The drive is connected to a PC-3000 SSD port (not a USB-SATA bridge, which masks vendor commands). The Phison utility issues an IDENTIFY DEVICE; if the drive responds as SATAFIRM S11, the controller is already in ROM mode. If the drive hangs instead, the technician locates the ROM_CS test pad on the PCB under a microscope and shorts it to ground with precision tweezers at the exact moment bench power is applied. The momentary short prevents the controller from attempting to load the corrupted firmware from NAND.

  2. 02

    Loader (LDR) microcode injection

    PC-3000 SSD selects a volatile microcode loader that matches the PS3111-S11 silicon revision, the NAND manufacturer (Toshiba/Kioxia, Micron, SK Hynix, Intel), and the native firmware version. The utility injects this loader directly into the controller's volatile memory through vendor-specific commands. The loader runs only from volatile memory and never writes to the NAND, which is exactly what separates this workflow from Phison MPTool. MPTool would erase the service area and destroy the data.

  3. 03

    Raw NAND dump and XOR descrambling

    The PS3111-S11 does not implement AES encryption; it applies a deterministic XOR scramble to NAND writes to avoid repeating bit patterns that accelerate cell wear. The loader gives PC-3000 SSD raw read access to every physical NAND page. The utility mathematically reverses the XOR polynomial in workstation RAM, producing the unscrambled NAND contents and the metadata headers needed for the next step.

  4. 04

    FTL / L2P translator reconstruction and SMART bypass

    PC-3000 SSD scans the spare-area metadata of every NAND page (block sequence numbers, page headers, wear-level counters) and reconstructs the logical-to-physical translator in workstation RAM. A common failure point on the PS3111 is the SMART log: corrupted SMART tables drive the controller into an infinite reboot loop during translator rebuild because it tries to update health metrics it can't write. The Phison utility clears or bypasses the corrupted SMART entries in volatile memory so the rebuild can complete. The drive then presents its real capacity and the data is imaged sector by sector to a destination drive.

For the deeper architectural breakdown of Phison silicon, see our Phison controller architecture page.

What triggers a Silicon Motion SM2258 or SM2259 BSY state?

The SM2258 and SM2259 enter a BSY stall when FTL initialization encounters corrupted system blocks the controller cannot reconcile. Three distinct triggers cause this: inconsistent system blocks from a partial firmware update, catastrophic context loss where every redundant Configuration Page copy fails checksum, and HMB corruption on DRAM-less NVMe variants where the host RAM cache never flushes back to NAND.

Inconsistent System Blocks (Keep BSY)
Silicon Motion controllers store redundant copies of firmware modules in dedicated system blocks. When a power loss interrupts a module update, one copy holds the old version & another holds the new. The SM2258 detects the mismatch during FTL init, cannot determine which copy is authoritative, & holds the ATA BSY bit high indefinitely while DRDY stays low. The host sees a dead drive.
Catastrophic Context Loss (BAD_CTX)
BAD_CTX occurs when every redundant Configuration Page copy fails checksum validation, usually from a power loss mid-update or severe NAND degradation in the system area. With no valid CP to boot from, the SM2258 or SM2259XT stalls before it can load any FTL state. PC-3000 SSD recovers from this by skipping the CP backup entirely & scanning every physical NAND page for spare-area metadata.
HMB Corruption on NVMe Variants
The SM2263XT and similar DRAM-less NVMe controllers cache the FTL in host RAM through the Host Memory Buffer protocol. A system crash kills power before the Host Memory Buffer contents flush to NAND. On the next boot, the controller finds an incomplete FTL & panics. Recovery requires a full NAND scan: PC-3000 SSD rebuilds the translator from page-level spare-area chronology because the HMB shadow is worthless.

How is a Silicon Motion BSY state diagnosed and recovered?

SM2258 and SM2259 controllers stall at FTL initialization when their system blocks are inconsistent, holding the ATA BSY bit high so the host can't issue any commands. Recovery requires a permanent short of the ROM_CS or UART_TX test pad through power-on, then loader injection that matches both the silicon revision and the exact NAND configuration page.

  1. Permanent Safe Mode pin short. Unlike Phison, the SM2258 needs the ROM pin held to ground throughout initialization, not just at power-on. The technician bridges the ROM_CS or UART_TX test pad with tweezers under a microscope and keeps the bridge in place while applying bench power. The controller never attempts to read the corrupted NAND firmware and stays in its primary ROM bootloader.
  2. NAND configuration detection. The PC-3000 SSD Silicon Motion active utility reads the raw NAND Flash ID directly off the dies to identify the NAND manufacturer and geometry. The technician selects a loader that matches both the SM2258 / SM2259 / SM2259XT silicon and the exact NAND geometry. An incompatible loader produces massive ECC failure rates and unreadable configuration pages.
  3. Configuration Page (CP) module extraction. Once the LDR is in SRAM, background processes (TRIM, garbage collection) are forcibly disabled. The utility uses vendor-specific commands to extract the surviving CP modules from the NAND service area. SM2259XT stores FTL backups directly in standard NAND pages rather than in a dedicated cache, so the utility scans those pages and parses the physical metadata.
  4. Translator rebuild and imaging. The virtual translator is reconstructed in workstation RAM, the drive presents its real capacity through the PC-3000 SSD interface, and the data is imaged sector by sector. For severe panics where every CP copy fails checksum, the utility falls back to a full NAND scan to locate scattered FTL fragments. Full-scan recoveries take longer than standard BSY recoveries and remain in the $600–$900 firmware tier for SATA drives.

The interface matters. USB-SATA bridge adapters strip or garble the vendor-specific commands in the 0xC0-0xFF range that the Silicon Motion utility relies on, so a drive that appears absent through a USB enclosure may still respond over a direct SATA connection to PC-3000 SSD. See the full architecture details on our Silicon Motion controller architecture page.

How does PC-3000 SSD recover a Marvell BSY-state Crucial M4?

The Marvell 88SS9174 on the Crucial M4 and C400 fails into a persistent SATA BSY hang where the controller holds the ATA BSY status bit high indefinitely. The host BIOS either freezes at POST or enumerates the drive with a 0 GB capacity string and a garbled or missing model identifier. This presentation is distinct from a Phison ROM-mode failure (which produces a clean SATAFIRM S11 model string) and from a Silicon Motion BSY (which usually drops off the bus after a brief IDENTIFY before the controller stalls). The recovery path on the Crucial M4 runs through the PC-3000 SSD Marvell VanGogh active utility, with UART terminal entry on heavily corrupted units and a documented wait protocol on borderline cases. The later Crucial M500 (88SS9187), M550, MX100, and MX200 (88SS9189) are listed by ACELab as partial coverage, with BSY-state drives explicitly excluded from PC-3000 SSD support; recovery on those families is only possible when the drive returns ID and stays in READY state.

The first job at the bench is telling these three failure families apart on presentation alone. A Phison PS3111-S11 in ROM mode enumerates cleanly with the SATAFIRM S11 identifier string & a phantom 2 MB capacity; the bus stays alive & the controller answers IDENTIFY. A Silicon Motion SM2258 / SM2259 BSY usually answers IDENTIFY with the real model string for a fraction of a second & then stalls. A Marvell BSY on a Crucial M4 is the opposite: the BIOS hangs at the storage enumeration step of POST with no model string at all, or the drive reports 0 GB & an erroneous LBA count. Distinguishing the family at this point decides which loader matrix the active utility loads first.

The Crucial M4 has a documented firmware defect independent of user wear. Firmware revisions 0001, 0002, & 0009 carry a logic error in the SMART power-on hours counter that triggers an integer overflow at 5184 hours of cumulative power-on time. When the counter trips, the controller execution thread hangs & the drive drops off the SATA bus. A hard power cycle clears the hang for roughly one hour before it recurs. Crucial fixed the defect in firmware 0309 (later refreshed as 070H), but unflashed M4 units in service for more than 216 days of power-on time still trip it. The user NAND data is intact through the entire failure cycle. The bug is firmware logic only, not media degradation.

The Crucial M500 & M550 share a different defect on the 88SS9187 / 88SS9189 silicon. Firmware MU01 on the M500 mishandled queued TRIM commands issued through NCQ, corrupting the FTL & producing I/O errors that escalated into an unresponsive controller. The Linux kernel maintainers added a hardware blacklist in libata-core.c, tagging the Micron_M500_*, Crucial_CT*M500*, & Crucial_CT*M550* model strings with ATA_HORKAGE_NO_NCQ_TRIM & ATA_HORKAGE_ZERO_AFTER_TRIM to force the kernel to issue non-queued TRIM commands & to zero the affected LBAs after the TRIM completes. Crucial corrected the underlying defect on the M550 in firmware MU02. A drive caught in the NCQ-TRIM failure mode usually returns as a BSY hang at the next power cycle, and ACELab's PC-3000 SSD support matrix lists the M500, M550, MX100, & MX200 as partial coverage excluding BSY-state drives, so PC-3000 SSD recovery on those families requires the drive to first reach READY and return an identification string.

The recovery workflow at the bench starts at the PC-3000 SSD card's native SATA port, never through a USB-SATA bridge. USB bridges strip the vendor-specific command opcodes the Marvell VanGogh utility uses for Tech-mode entry, so a drive that appears completely dead through an enclosure can still respond on direct SATA. For an M4 caught in the 5184-hour hang, the documented Marvell silicon behavior is that the controller may auto-transition out of BSY back to READY after one to two hours of background initialization attempts. The first step on a borderline unit is therefore patient observation on bench power before any invasive entry: the technician powers the drive, leaves it on the PC-3000 SSD port, & watches the status registers for the auto-recovery transition.

For units that do not auto-transition, the entry method is a UART terminal attached to the diagnostic test points on the PCB. This is architecturally different from the Phison & SMI entry methods. Phison ROM mode is entered through a momentary ROM_CS short held only at power-on. Silicon Motion BSY entry requires a permanent ROM_CS or UART_TX short held to ground through the entire initialization. Marvell uses neither short; the entry path is a serial UART terminal on the diagnostic pads, with vendor commands issued through the terminal to force the controller into Extended Tech-mode. Older Marvell silicons including the 88SS9189 use 3.3V logic on the terminal pads; connecting a 1.8V terminal to a 3.3V part, or vice versa, damages the controller die.

Once Extended Tech-mode is live, the PC-3000 SSD Marvell VanGogh active utility injects a volatile LDR microcode payload into the controller's SRAM through Vendor-Specific Commands. The loader lives only in SRAM & never touches NAND. With the LDR running, the utility issues vendor commands to back up the surviving System Area resources & module copies through the terminal. The virtual translator is then reconstructed in workstation RAM from NAND page header data, block sequence counters, & spare-area metadata. The drive presents its real capacity through the PC-3000 SSD interface & the data is imaged sector by sector to a destination drive. SATA Marvell BSY firmware recovery on the Crucial M4 is priced in the $600–$900 tier.

The takeaway: Marvell entry on a BSY-state Crucial M4 is structurally different from Phison & SMI entry. Phison uses a momentary ROM_CS short. SMI uses a permanent ROM_CS or UART_TX short held through power-on. Marvell uses a UART terminal & vendor-command Tech-mode entry. On the Crucial M4 the post-loader workflow converges to the same procedure used after Phison and SMI loader entry: bypass the corrupted on-NAND firmware, inject a volatile LDR into SRAM, rebuild the virtual translator in workstation RAM from raw NAND spare-area metadata, & image to a destination drive while the source NAND stays strictly read-only.

How is a Marvell 88SS1074 BSY state diagnosed and recovered?

The Marvell 88SS1074 hangs the SATA bus when its OEM-specific microcode cannot validate its translator, holding the ATA BSY bit high so the BIOS either freezes mid-POST or skips the drive entirely. Recovery requires a 1.8V Terminal 3 UART connection and an OEM-matched LDR microcode injection through the PC-3000 SSD Marvell active utility. PC-3000 has mature support for WD Blue G1, SanDisk Ultra II, and SanDisk SSD Plus profiles. Heavily customized OEM variants may fall outside the supported firmware profile matrix.

Marvell does not sell turnkey firmware the way Phison does. Marvell ships the silicon and a baseline firmware template; the OEM writes its own translator microcode, defect-map handling, and Technological Mode command set on top. Two physically identical 88SS1074 controllers on different OEM PCBs (WD Blue versus Kingston UV400, SanDisk Ultra II versus a Lite-On variant) behave as effectively different controllers from the recovery side. The active utility loader matrix is built per OEM family, not per silicon revision.

The most common Marvell failure mode is a permanent BSY stall. The controller boots, attempts to load its corrupted translator from the NAND service area, fails, and never releases the SATA bus. The host sees ATA BSY held high indefinitely. The drive will usually not enumerate with any diagnostic capacity string; the bus is hung before IDENTIFY DEVICE can complete. Some boards briefly identify with the vendor string and then lock up; either pattern is the same underlying failure.

Standard SATA command delivery cannot reach a controller in this state, so the active utility connects through a direct UART terminal instead. Older Marvell silicon such as the 88SS9189 used 3.3V logic on Terminal 1 or Terminal 2. The 88SS1074 integrates 1.8V SRAM and requires the dedicated 1.8V Terminal 3 adapter. Connecting a 3.3V terminal to an 88SS1074 will damage the controller die. The terminal issues vendor commands that force the controller into Technological Mode (factory diagnostic state), bypassing the failed FTL boot.

Once Technological Mode is live, the PC-3000 SSD Marvell VanGogh active utility loads an OEM-matched LDR microcode into the controller's SRAM. The loader runs from volatile memory only and never writes to the NAND. The active utility then reads the service area, parses the OEM-specific defect map and translator modules, and hands off to the virtual translator reconstruction pass described in the next section. The full PC-3000 SSD supported Marvell families include SATA 88SS9174, 88SS9187, 88SS9189, 88SS9190, and 88SS1074; and NVMe 88SS1093.

Mature PC-3000 Marvell support
Crucial M4 (88SS9174), Crucial C300 / C400 (88SS9174), SanDisk Ultra II (88SS1074), SanDisk SSD Plus (88SS1074), WD Blue G1 (88SS1074), Micron C300 / C400 (88SS9174), Plextor M9Pe NVMe (88SS1093), and the Lenovo AM6671 / AM6672 NVMe modules (88SS1093). For SATA Marvell firmware recovery, pricing is $600–$900; NVMe Marvell firmware recovery is $900–$1,200.
Partial or out-of-matrix support
Modified Lite-On drives built on the 88SS9174 carry heavily customized OEM micro-programs that fall outside the active utility's supported firmware profile matrix. Crucial M500, M550, MX100, and MX200 are listed as partial: PC-3000 SSD supports them except for BSY-state drives. Free evaluation establishes whether a specific board is supported before any paid work begins.

The architectural context for these failures is covered in the SSD data recovery overview and the Silicon Motion controller architecture page for the contrasting SMI workflow.

How does PC-3000 SSD build a Virtual Translator from a raw NAND scan?

The Virtual Translator is the logical-to-physical mapping table PC-3000 SSD reconstructs in workstation RAM after the injected loader has muted the controller's garbage collection, TRIM, and wear-leveling routines. It replaces the corrupted on-NAND FTL without writing to the source drive. The scan parses OOB spare-area metadata on every physical page, resolves the freshest valid copy per Logical Page Number by block sequence number, and hands the assembled map to the Data Extractor for sector-by-sector imaging.

Every physical NAND page carries a primary data region (4 KB or 8 KB of user data) and a reserved Out-of-Band spare area of 128 to 448 bytes. The controller writes FTL metadata into that spare area on every program operation. The fields that matter to the reconstruction are the logical page number (which logical block this physical page represents), the block sequence number (a chronological counter that increments each time the block is programmed), the page program counter (detects partial-program failures from power loss mid-write), and the validity bitmap (which sectors the controller already marked invalid before the firmware died).

SSDs enforce out-of-place writes because NAND must be erased at the block level before any byte can be rewritten. Updating a single logical sector writes the new data to a different physical page and marks the old page invalid in the on-NAND FTL. The raw NAND therefore contains multiple stale copies of the same LPN. The Virtual Translator's job is to pick the right one. For every LPN collision in the scan index, the utility applies a freshest-LPN rule: the physical page with the highest valid block sequence number wins, the older copies are discarded as stale, and any page with an incomplete program counter is treated as a torn write and skipped in favor of the previous intact copy.

Power-loss damage at the journal tail is handled the same way. Interrupted SLC-to-QLC cache folding (common on Silicon Motion and Phison NVMe) leaves partially written QLC blocks while the SLC partition still holds the previous-generation data. The validity bitmap and block sequence numbers let the scan reconcile both partitions: where the QLC fold completed cleanly, the QLC copy wins; where it did not, the SLC copy is the authoritative one. The translator is assembled from whichever partition holds the newest intact version of each LPN.

Once the LBA-to-PBA map is complete in workstation RAM, the PC-3000 Data Extractor mounts the Virtual Translator and presents a standard file system view (NTFS, APFS, ext4) to the technician. Imaging runs sector by sector from the virtual map to a destination drive. The source NAND remains strictly read-only throughout. Nothing about the workflow modifies the failed SSD; if a destination drive runs out of space or the technician aborts the imaging pass, the source NAND is exactly where it started and a second pass can begin against the same translator.

This is the same correctness model regardless of controller family. Phison PS3111-S11 SATAFIRM S11, Silicon Motion SM2258 / SM2259 BSY, severe Configuration Page corruption, and Marvell 88SS1074 Technological Mode all converge on the same virtual translator build once the loader is live and the spare-area scan can complete. What changes between controllers is how the loader gets injected, not how the translator is assembled from the resulting raw NAND read.

How is ROM mode forced on a SATAFIRM S11 or SM2258XT SSD using donor-board pin shorting?

The Phison PS3111-S11 needs a momentary tweezer short on the R29 / ROM_CS pad at the COMRESET handshake, then the short is released the instant the controller stabilizes. The Silicon Motion SM2258XT also uses a momentary short on the BOOT_SEL strap during power-on, released as soon as the drive identifies in ROM mode and before the LDR upload begins. The PC-3000 Portable III supplies bench power, captures the raw BSY state or SATAFIRM S11 enumeration over its native SATA port, and issues the vendor-specific LDR upload command. Failure to establish the initial short cleanly leaves the SMI controller in a BSY state; prolonged shorting on Phison stalls the loader handoff.

On the PS3111-S11 the target is the R/B (Ready/Busy) test point pulled to ground, and on many PS3111 reference board layouts that test point sits at the pads silk-screened R29. The drive is isolated from any host system, mounted to the Portable III over a standard SATA cable, & precision tweezers bridge R29 to the ground plane. Power is applied through the Portable III power-control interface while the bridge is held. Grounding R/B at the COMRESET window acts as an open-drain operation that stops the controller from parsing the corrupted firmware payload out of the NAND. The moment the Portable III registers the drive in SATAFIRM S11 with its 0-byte, 2 MB, or 20 MB diagnostic capacity string, the tweezers come off. The short has to be momentary; holding it through the LDR initialization phase prevents the SRAM payload from completing its handshake with the active utility & the drive stalls before Technological Mode commands can be issued.

On the SM2258XT the controller holds the ATA BSY bit high indefinitely on a corrupt boot and no enumeration string ever reaches the host. Forcing it out of that state means pulling the BOOT_SEL (sometimes labeled ROM_CS) strap to ground with precision tweezers as power is applied through the Portable III, then releasing the short the instant the drive identifies in ROM mode. The strap label depends on which OEM built the board: documented aliases include ROM, ROM_CS, BOOT, JP3, SW1, and UART_TX. The pad pair has to be identified under microscope before power is applied. Successful entry shows up on the Portable III as a raw silicon alias rather than the commercial model name: SM2258AB, SM2258AB-80-10000000, or SM2258AA, paired with a 0 MB, 1 GB, or 1023 MB diagnostic capacity. With ROM mode latched, the LDR upload proceeds over the same vendor-command interface used for the desktop PC-3000 SSD card.

With the controller stabilized in ROM mode, the active utility queries the raw NAND Flash ID off the controller's low-level debug interface & resolves the physical NAND architecture (TLC vs QLC, layer count, manufacturer & geometry). The operator, or the utility's auto-detect routine, selects an LDR file matched against three parameters at once: controller silicon revision, NAND vendor & geometry, & native firmware version. On Phison the loader follows a deterministic naming convention; a drive labeled with firmware SBFK71E0 takes the SBFM 71.2 loader, which is part of the PS3111_LDR_*.bin family. A vendor-specific upload command then streams the matched .bin into the controller's SRAM. For the SMI flow the BOOT_SEL short is already released by the time the loader is uploaded; the utility verifies the loader is resident in SRAM, then issues the execution command that transfers control from the Mask ROM to the uploaded loader. Successful handoff is confirmed when the controller responds to Technological Mode vendor commands, the drive passport updates to the loader-defined parameters, & Configuration Page or spare-area reads start returning real data instead of ECC noise.

The safe-stop signals along this path are specific and worth naming. Failure to establish the initial short cleanly leaves the SMI controller in a BSY state and the entry sequence has to restart. Holding the Phison short past the COMRESET window stalls LDR initialization and the active utility never sees a clean Technological Mode response. A loader mismatch on either family shows up as an ECC storm during the NAND info read pass: the controller treats raw data as noise because the loader's XOR descrambler and LDPC tables do not match the physical NAND. On PS3111 a severely corrupted SMART table can also drive the controller into an infinite reboot loop during translator rebuild, which the Phison utility works around by patching the corrupted SMART entries in volatile memory only. On the SMI side the hardest safe-stop is a Configuration Page parsing failure: when every redundant CP copy fails checksum, standard CP extraction is aborted and the operator falls back to a full physical NAND scan of every block to locate and parse scattered FTL fragments before the virtual translator build can resume.

What does the PC-3000 Portable III contribute to ROM-mode SSD recovery?

The PC-3000 Portable III is ACELab's portable chassis for the same firmware-level utilities that run on the desktop PC-3000 SSD card. License permitting, the Phison, Silicon Motion, and Marvell active utilities run on Portable III too. In this lab its job is triage and loader hand-off; final FTL reconstruction and full imaging runs move to the desktop PC-3000 SSD workstation that has the RAM headroom for full-volume L2P maps.

Initial intake characterization happens on Portable III. The SATA bus probe detects the SATAFIRM S11 identity string or the generic SM-Family ROM ID before the drive ever touches the main PC-3000 SSD desktop slot. That keeps a non-recoverable case (chip-off only, dead controller without board-repair candidacy, encrypted NVMe outside the supported list) from occupying the desktop card while another drive is waiting for an active imaging run.

Microcode loader staging is shared between the two units. ACELab maintains a repository of LDR microcode (Phison PS3111-S11 by silicon revision and NAND vendor, SM2258 and SM2259 by NAND geometry, Marvell families) and the Portable III pulls from the same database the desktop unit uses. Updating one updates the loader set available on the other; a drive triaged on Portable III sees the exact same microcode candidates it will see when moved to the desktop card.

For Phison ROM-mode drives, Portable III coordinates the firmware hand-off while the technician manually shorts the ROM_CS test pad, then injects the matching LDR into the controller's volatile memory through the same vendor-command sequence the desktop unit uses. For SM2258 and SM2259 BSY drives that need a sustained Safe Mode short throughout initialization, the Portable III holds the ROM_CS or UART_TX pad to ground and performs the same Safe Mode entry the desktop runs. The procedure does not change between the two units; what changes is which workstation owns the long-running NAND scan after the loader is live.

Portable III has direct PCIe NVMe access through a dedicated M.2 PCIe NVMe adapter on Port 0. NVMe ROM-mode drives connect natively. No USB bridge means no stripped vendor commands; the full 0xC0-0xFF command range reaches the controller. Phison & Silicon Motion NVMe utilities run the same loader-injection sequence on Portable III that they run on the desktop card.

Standalone Mode runs without a host computer. Portable III images to a destination drive over its own SATA port, calculates hashes, & runs SMART diagnostics while the active utility runs internally. That preserves a stable read-only dump before the drive moves to the desktop workstation for full FTL reconstruction.

The handoff protocol between Portable III & the desktop is straightforward. The drive is characterized on Portable III first: controller family, NAND Flash ID, & loader compatibility are confirmed. The matching LDR is injected & a preview read validates that the NAND responds correctly. The drive is then moved to the desktop PC-3000 SSD workstation, which loads the same project file & continues with the full NAND scan or imaging pass using the already-verified loader.

Portable III ROM-mode triage sequence

  1. Connect the drive to the Portable III native SATA port, or to the Port 0 M.2 PCIe NVMe adapter for NVMe drives. Never use a USB-SATA bridge: the bridge masks the 0xC0-0xFF vendor command range the active utility needs. Run the bus and identity-string probe to classify the failure family.
  2. Classify by what the probe returns. A clean "SATAFIRM S11" enumeration at 0-byte or 2 MB capacity points to a Phison PS3111-S11 in ROM mode. ATA BSY held high with no model string, or a brief ID followed by a stall, points to a Marvell 88SS1074 or 88SS9174 BSY hang, or an SMI Keep BSY. A raw SMI alias such as SM2258AB or SM2258XT reporting 1 GB or 1023 MB after a forced short points to Silicon Motion.
  3. Read the raw NAND Flash ID off the controller's low-level debug interface to resolve NAND vendor, geometry (TLC or QLC, page plus OOB size), and the LDPC strength the loader has to match.
  4. Stage the matching LDR loader from the shared ACELab repository, matched on three parameters at once: controller silicon revision, NAND vendor and geometry, and native firmware version.
  5. Coordinate the controller-specific diagnostic-mode entry. Phison takes a momentary ROM_CS short. Silicon Motion takes a sustained ROM_CS or UART_TX short held through init. Marvell 88SS1074 takes 1.8V UART Terminal 3 Tech-mode entry. Then inject the volatile LDR into controller SRAM and run a preview read to confirm the XOR descrambler renders plaintext. An ECC storm here means the loader or NAND geometry is mismatched, so restage the loader.
  6. Hand the verified project off to the desktop PC-3000 SSD workstation. It reloads the same project file, runs the full Virtual Translator build from NAND spare-area metadata, and runs the sector-by-sector imaging pass that needs the desktop's RAM headroom.
Controller familyBus behavior at intakeDiagnostic identity stringDiagnostic capacityDiagnostic-mode entry
Phison PS3111-S11Enumerates, rejects readsSATAFIRM S110 byte / 2 MB (sometimes shows full size, no sector access)Momentary ROM_CS short
Silicon Motion SM2258 / SM2259(XT)Keep BSY stall, blocks host commandsSM2258AB / SM2258XT raw alias1 GB / 1023 MB / 0 GBSustained ROM_CS or UART_TX short
Marvell 88SS1074ATA BSY held high, often no ID at allDrops model string / partial IDIncomplete / 0 GB1.8V UART Terminal 3 Tech-mode
Marvell 88SS9174ATA BSY held high, often no ID at allDrops model string / partial IDIncomplete / 0 GB3.3V UART Terminal 1 / Terminal 2 Tech-mode

Limits are about runtime resources, not capability. Portable III is appropriate for the loader hand-off and a read-only NAND dump preview. Final L2P reconstruction from spare-area metadata over multi-hundred-gigabyte NAND, the severe-CP-corruption full-scan path, and sector-by-sector imaging to a destination drive happen on the desktop PC-3000 SSD workstation where there is enough physical RAM to hold the full translator in memory. Imaging time, not feature parity, is what splits the two tools.

How is the SSD virtual translator rebuilt from NAND spare-area metadata?

Every NAND page carries a spare area (also called the out-of-band or OOB region) alongside its user data. The spare area stores ECC parity, the logical page number this physical page represents, a block sequence number, a page program counter, a wear-level counter, and a validity bitmap. PC-3000 SSD reads every physical page into workstation RAM, indexes those spare-area entries, and assembles the freshest valid mapping per logical address. That assembled mapping is the virtual translator. The NAND itself is never written.

Each spare-area field carries a specific job in the reconstruction. The logical page number (LPN) identifies which logical block this physical page represents; an LPN of 0x000A1F00 on a given page is the controller's own record of where that data belongs in the host address space. The block sequence number resolves versioning: when two physical pages claim the same LPN (because the host overwrote a logical block and the controller wrote the new copy to a fresh page), the higher block sequence number is the newer copy and wins. The page program counter detects partial-program failures from power loss mid-write; a page with an LPN claim but an incomplete program counter is discarded so a stale-but-valid earlier copy is used instead. The wear-level counter and validity bitmap let the utility skip pages the controller already marked invalid before the firmware died.

The scan itself is exhaustive and one-directional. PC-3000 SSD walks every physical NAND page through the injected loader, parses each spare area, and builds an in-memory index of (LPN, block sequence number, physical address) tuples. Once the index is complete, the utility resolves the freshest valid physical page for every LPN the host sees, producing a logical-to-physical map that matches what the original FTL would have served before the firmware corrupted. The NAND is read only; the translator lives in workstation RAM and is used to drive sector-by-sector imaging to a destination drive.

The severe-CP-corruption path uses the same model. Silicon Motion controllers normally cache their FTL state in dedicated Configuration Pages inside the system blocks. When every redundant CP copy fails checksum, the dedicated backup is unrecoverable. The utility skips it entirely and constructs the translator from page-level spare-area metadata across the full NAND. The scan is longer, but the correctness model is identical: pick the freshest valid LPN copy by block sequence number, discard pages with partial program counters, ignore validity-bitmap-killed pages.

This is also the technical reason Phison MPTool destroys recoverability. MPTool is a manufacturing tool; it ignores spare-area chronology entirely and lays down a fresh translator pointing at empty blocks as part of its factory-init routine. After MPTool runs, the block sequence numbers no longer reflect the original program order, the LPN-to-physical history is overwritten with new manufacturing-default values, and the chronological reconstruction described above is no longer possible. The spare-area evidence the workflow depends on is gone.

Why does software recovery fail on ROM-mode SSDs?

Consumer data recovery software talks to the file system, not to the controller. The file system layer needs the drive to expose a valid block device with a real capacity through the OS storage driver. A ROM-mode SSD reports 0GB, so there are no logical blocks to scan and nothing for the software to read.

The OS doesn't talk to NAND. It talks to the controller over SATA, SAS, or NVMe/PCIe using standard storage protocols. Every read or write goes to a logical block address. The controller looks that LBA up in its Flash Translation Layer and translates it into a physical address on a specific NAND die, block, and page. When the FTL is gone, the controller can't translate anything, so it protects itself by dropping its capacity to 0GB, 1GB, or 2MB.

Disk Drill, R-Studio, Recuva, EaseUS, TestDisk, and PhotoRec all sit above the OS storage driver. They issue READ commands to logical addresses. With no LBA mapping available, those reads return zeros or fail outright. The software isn't broken; it's being asked to read a device that doesn't exist from the OS perspective. No application running through an OS storage driver can bypass the hardware controller to read raw NAND.

PC-3000 SSD doesn't go through the OS storage driver at all. The PCIe card operates its own SATA / NVMe controller and issues vendor-specific commands directly to the SSD controller, injecting microcode into SRAM and acting as a surrogate controller operating below the OS abstraction layer. That's the entire reason the workflow exists.

Why does chip-off NAND extraction fail on modern AES-256 SSDs?

Modern NVMe SSDs implement always-on AES-256 XTS hardware encryption. The Media Encryption Key is generated by the controller's hardware RNG, wrapped by a hardware-unique root key fused into one-time-programmable silicon, and never leaves the controller die. Desoldering the NAND and reading it in a chip-off jig produces ciphertext that cannot be decrypted without the original controller. Board-level repair to revive the controller is the only viable path.

Chip-off was the traditional last resort for dead SSDs: desolder the TSOP48 or BGA NAND packages from the destroyed PCB, read them in a bare NAND programmer, and reassemble the data with software algorithms. That still works for older USB flash drives and for legacy SATA controllers like the Phison PS3111-S11 that use simple XOR scrambling. It does not work for the encrypted controller families that ship in every modern NVMe SSD.

The cryptographic engine inside the controller encrypts data before it ever reaches the NAND. The MEK is bound to one-time-programmable fuses inside the controller die and is never written to flash in plaintext. Even transplanting the NAND onto a donor controller of the exact same model fails: the donor has its own unique Key Encryption Key (KEK) burned into its fuses and cannot unwrap the MEK that was bound to the original silicon. The chip-off output is high-entropy noise with no recognizable partition tables, file signatures, or directory headers.

M.2 2230 NVMe drives and Apple's storage implementations make this even more physical. The controller die and NAND dies share a single laminated BGA package; there is no standalone NAND chip to desolder without destroying the underlying routing. Apple T2 and Apple Silicon SSDs additionally bind the AES key to the Secure Enclave on the logic board. We do not claim to bypass, crack, or defeat manufacturer encryption.

Important controller support caveat. Modern Samsung in-house NVMe controllers (Elpis on the 980 Pro, Pascal on the 990 Pro, Polaris and Phoenix on other generations), Realtek NVMe controllers, Innogrit controllers, and Maxio MAP1602/MAP1602A are not on ACELab's PC-3000 SSD supported list and are not recoverable through the firmware-level workflow described on this page. Their always-on AES-256 architecture also blocks chip-off recovery. Rossmann does not currently offer in-lab recovery for Realtek, Innogrit, Maxio MAP1602/MAP1602A, or modern Samsung in-house NVMe controllers (Elpis, Pascal, Polaris, Phoenix).

The remaining viable path on encrypted SSDs is board-level microsoldering to revive the original controller: FLIR thermal imaging to locate shorted PMICs and voltage regulators, then Hakko FM-2032 component replacement and Zhuo Mao BGA rework to reflow the controller. Once the original silicon boots, the encryption keys are intact and PC-3000 SSD can access the NAND. See the deeper write-up on our chip-off NAND recovery and hardware encryption pages.

Which SSD models commonly enter ROM mode?

The Phison PS3111-S11 is the highest-volume offender. Phison sells the controller as a turnkey package to dozens of manufacturers, so the same SATAFIRM S11 failure appears across drives that look completely unrelated. Silicon Motion SM2258 and SM2259 BSY cases concentrate in mid-tier ADATA, HP, and Kingston OEM swaps.

Phison PS3111-S11 (SATAFIRM S11)

  • Kingston A400 (120GB and 240GB revisions; the 480GB and 960GB SKUs frequently swap to SM2258XT or Maxio MAS0902 silicon under the same external packaging)
  • Patriot Burst and Burst Elite
  • PNY CS900 (up to 1TB)
  • Inland Professional SATA (Micro Center house brand)
  • Seagate BarraCuda Q1 (PS3111 + QLC NAND)
  • Apacer AS340, AS350
  • Gigabyte GSTFS31 series
  • GOODRAM CX300, S400U
  • Lite-On MU3
  • Silicon Power Slim S55, S60
  • Smartbuy Revival 2

Silicon Motion SM2258 / SM2259 / SM2259XT (BSY)

  • ADATA SU800, SU650 (higher-capacity revisions)
  • HP S700 family
  • Team Group T-Force Vulcan, GX2
  • Kingston A400 (480GB and 960GB SM2258XT revisions)
  • Crucial BX500 (some SM2259XT revisions)

A drive that displays SATAFIRM S11 guarantees a Phison PS3111 inside, regardless of the brand label. See our Kingston A400 recovery page for the specific A400 workflow, including how we identify which controller is in a given unit before opening it.

SandForce SF-2281 (legacy)

Rossmann does not currently offer in-lab recovery for Sandforce controllers. SandForce SF-2281 (common in 2011-2014 era SSDs) is not on the ACELab PC-3000 SSD supported list and combines always-on AES, DuraWrite inline compression, and RAISE parity striping in a way that requires proprietary workflows outside the standard PC-3000 utility. Drives that typically contain a SandForce SF-2281 or SF-2241 inside include the Intel 520 and 530, OCZ Vertex 3, Kingston HyperX, and Corsair Force 3 / Force GT. A SandForce panic reports the identity string SandForce{200026BB} at a 32 KB or 33 KB bootloader-shadow capacity. If your dead drive matches that identity, it carries a SandForce controller and falls outside our supported list.

What equipment does the Austin, TX lab use for ROM-mode SSD recovery?

All ROM-mode SSD work is performed in-house at 2410 San Antonio Street, Austin, TX. Single location. No franchises. No outsourcing. The same technicians who receive the drive run the PC-3000 utility and, when needed, do the board repair.

PC-3000 SSD (ACE Lab)
Phison, Silicon Motion, and Marvell active utilities for firmware-level vendor command access, loader injection into controller SRAM, and FTL reconstruction in workstation RAM. The industry standard for ROM-mode recovery; not a tool a general computer-repair shop owns.
PC-3000 Portable III
Field diagnostic and pre-imaging unit used to characterize a drive before it enters the main PC-3000 SSD workflow.
FLIR thermal cameras
Fault localization on dead PCBs. A shorted PMIC, voltage regulator, or coupling capacitor shows up as a hot spot within seconds of applying bench power.
Hakko FM-2032 on FX-951 base stations
Precision microsoldering for component-level replacement of PMICs, regulators, passives, and ROM_CS-area test pads after diagnostic shorting.
Atten 862 hot air rework
Controlled hot-air for QFN and small-BGA package removal and replacement.
Zhuo Mao precision BGA rework
Top and bottom heating with thermal profiling for controller IC reflow and replacement on dead NVMe boards.

For the full scope of SSD failure modes Rossmann handles in-house, ROM-mode firmware panics, NAND chip-off limitations, AES-locked controllers, and physical board damage, see the SSD data recovery.

How much does ROM-mode SSD data recovery cost?

SATA ROM-mode firmware recovery is $600–$900. NVMe ROM-mode firmware recovery is $900–$1,200. Free evaluation, firm quote before paid work begins, no data means no charge, no diagnostic fees.

SATA Firmware Recovery: $600–$900
Phison PS3111-S11 SATAFIRM S11, Silicon Motion SM2258/SM2259 BSY, ROM mode, and severe Configuration Page corruption cases. Includes loader injection, FTL reconstruction, and sector-by-sector imaging. ETA 3-6 weeks.
NVMe Firmware Recovery: $900–$1,200
Phison and Silicon Motion NVMe ROM-mode and panic-state recovery. Higher tier reflects the more complex NVMe utility workflow and the wider variety of controller silicon. ETA 3-6 weeks.
Circuit Board Repair (when the controller is electrically dead): $450–$600 SATA, $600–$900 NVMe
Required when a dead PMIC, voltage regulator, or coupling capacitor is preventing the controller from booting at all. Revives the original silicon so its encryption keys remain valid for PC-3000 SSD access. 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.
Rush service
+$100 rush fee to move to the front of the queue.

Many labs hide their number behind a "call for quote" wall that only reveals the price after they have your drive. We publish pricing so you know what you're paying before you ship anything. Call (512) 212-9111 or use our free evaluation form.

Frequently asked questions

What is SSD ROM mode?
ROM mode is a fallback diagnostic state the SSD controller enters when it cannot load valid firmware from the service area on the NAND. The controller boots only the read-only ROM bootloader, ignores the corrupted on-NAND firmware, and identifies itself with a generic factory string such as "SATAFIRM S11," "SM2258AB," or "SandForce{200026BB}" while reporting a 0GB, 1GB, or 2MB diagnostic capacity.
What does SATAFIRM S11 mean?
SATAFIRM S11 is the hardcoded ROM identity string of the Phison PS3111-S11 SATA controller. When the PS3111 fails to validate its on-NAND firmware, it boots into ROM mode and reports itself to the host as "SATAFIRM S11" with 0 bytes capacity. The error is a controller-level firmware panic, not a file system problem. The user data is still physically on the NAND; the translator that maps logical addresses to those NAND pages is what failed. SATABURN S11 is a related thermal-protection variant string that appears when the controller detects an over-temperature event and shuts down to protect the NAND.
Will an MPTool, firmware flasher, or factory reset fix SATAFIRM S11?
Phison MPTool will make the drive usable again, but it does so by wiping the NAND service area and rebuilding the Flash Translation Layer from scratch. That permanently erases every byte of user data. MPTool is a manufacturing tool, not a recovery tool. If you ran MPTool on a SATAFIRM S11 drive before sending it to a lab, recovery is no longer possible.
Can Disk Drill, Recuva, R-Studio, or EaseUS recover data from a ROM-mode SSD?
No. Recovery software operates above the OS storage driver and requires the controller to present a valid block device with a real capacity. A drive in ROM mode reports 0GB, so there is no logical volume for the software to scan. Software cannot bypass the controller to read raw NAND. PC-3000 SSD bypasses the controller by injecting a working microcode loader into its volatile SRAM, then reconstructs the FTL in workstation RAM.
What is the PC-3000 SSD workflow for a Phison PS3111-S11 in ROM mode?
Four steps. First, detect the ROM mode handshake over the SATA bus. Second, inject a volatile microcode loader (LDR) that matches the silicon revision and NAND type into the controller's volatile memory. Third, dump the raw NAND pages through vendor commands and reverse the deterministic XOR scrambling. Fourth, reconstruct the FTL from surviving page metadata and image the data sector by sector. Pricing for this work is $600–$900 for SATA drives.
How is Silicon Motion BSY state different from Phison ROM mode?
Phison enters ROM mode with a momentary pin short during power-up; the controller answers VSCs from its bootloader and accepts a loader into volatile memory. Silicon Motion SM2258 and SM2259 controllers require a permanent short of the ROM_CS or UART_TX test pad throughout initialization to enter Safe Mode (Techno Mode). Without the permanent short, the SM2258 stalls at the FTL initialization stage and holds the SATA BSY bit high forever, so the host cannot issue any commands.
Why does chip-off NAND extraction fail on modern NVMe SSDs?
Every major NVMe controller from roughly 2015 onward implements always-on AES-256 XTS hardware encryption. The Media Encryption Key (MEK) is generated by the controller's hardware RNG and wrapped by a hardware-unique key that is fused into one-time-programmable fuses inside the controller die, so the MEK itself is bound to that controller and never leaves it. The key never touches the NAND. Desoldering the NAND and reading it in a chip-off jig yields ciphertext that cannot be decrypted without the original controller silicon. Board-level repair to revive the original controller is the only viable path for encrypted SSDs.
Which drive models commonly show SATAFIRM S11?
Kingston A400 (120GB and 240GB revisions), Patriot Burst and Burst Elite, PNY CS900, Inland Professional SATA, Seagate BarraCuda Q1 (QLC variant), Apacer AS340 and AS350, Gigabyte GSTFS31, GOODRAM CX300 and S400U, Silicon Power Slim S55 and S60, and Smartbuy Revival 2. Any of these failing with SATAFIRM S11 confirms a Phison PS3111-S11 controller is inside.
How much does ROM-mode SSD data recovery cost?
SATA ROM-mode firmware recovery is $600–$900. NVMe firmware recovery is $900–$1,200. Pricing is published, not "call for quote." Every case starts with a free evaluation and a firm quote before any paid work begins. If we recover nothing, you pay nothing. No diagnostic fees, no attempt fees. Rush service is +$100 rush fee to move to the front of the queue.
What equipment does Rossmann use for ROM-mode SSD recovery?
PC-3000 SSD with the Phison, Silicon Motion, and Marvell active utilities, and PC-3000 Portable III for field-style diagnostic work. Board-level repair uses FLIR thermal cameras to locate shorted PMICs and voltage regulators, Hakko FM-2032 microsoldering irons on FX-951 base stations for component replacement, Atten 862 hot air rework, and Zhuo Mao precision BGA rework stations for controller reflow. All work is performed in-house at our Austin, TX lab.
What does the PC-3000 Portable III actually do for a Phison SATAFIRM S11 drive?
On a SATAFIRM S11 drive, Portable III runs the same Phison active utility as the desktop PC-3000 SSD card. It detects the SATAFIRM S11 identity string over the SATA bus, coordinates the diagnostic mode entry following a manual ROM_CS pin-short at power-on, and injects the matching LDR microcode into the controller's volatile memory through vendor-specific commands. From there the drive is handed off to the desktop PC-3000 SSD workstation for full L2P translator reconstruction from spare-area metadata and sector-by-sector imaging to a destination drive. Portable III does not do anything beyond SSD vendor-command access and operates exclusively at the solid-state firmware level.
How is the FTL rebuilt when every Configuration Page copy on the SM2259XT fails checksum?
PC-3000 SSD skips the dedicated CP backup entirely and scans every physical NAND page. For each page, it parses the spare area: logical page number, block sequence number, page program counter, validity bitmap. The utility indexes those tuples in workstation RAM, then resolves the freshest valid copy per LPN by picking the highest block sequence number with a complete program counter. The result is a virtual translator assembled from page-level chronology rather than from the corrupted Configuration Pages. The NAND is read-only throughout; the rebuilt translator lives in workstation RAM only and drives the imaging pass to a destination drive.
What is the difference between SATAFIRM S11 and SATABURN S11?
SATAFIRM S11 is the ROM-mode identity string the PS3111 reports when firmware validation fails during boot. SATABURN S11 is a thermal-protection variant that appears when the controller detects die temperature exceeding its safe threshold and aborts to ROM mode to prevent NAND damage. Both strings mean the drive is in a firmware panic state and requires PC-3000 SSD loader injection, but SATABURN S11 may also indicate a cooling or PMIC issue that needs board-level diagnosis before recovery can proceed.
What is BAD_CTX on Silicon Motion controllers?
BAD_CTX is a severe Silicon Motion firmware panic where every redundant Configuration Page copy fails checksum validation. The SM2258 or SM2259 cannot load any FTL state because all CP backups are corrupted, usually from power loss during a system block update or NAND degradation in the service area. PC-3000 SSD recovers from BAD_CTX by skipping the dedicated CP backup entirely and performing a full physical NAND scan. The utility reads every page's spare-area metadata, indexes logical page numbers and block sequence numbers in workstation RAM, and assembles a virtual translator from page-level chronology rather than from the destroyed Configuration Pages.
Can PC-3000 Portable III handle NVMe ROM mode recovery?
Yes. Portable III has a direct M.2 PCIe NVMe adapter on Port 0 that connects NVMe drives natively, bypassing USB bridges that mask vendor commands. The Phison and Silicon Motion NVMe active utilities run on Portable III and perform the same loader injection into controller volatile memory that the desktop PC-3000 SSD card performs. Standalone Mode can image and run diagnostics without a host computer. Final FTL reconstruction and large-volume imaging still move to the desktop workstation for RAM headroom, but the triage and loader handoff happen on Portable III.
How do I know if my SSD has a Marvell BSY problem instead of SATAFIRM S11?
Controller family decides the symptom. A Phison PS3111-S11 in ROM mode enumerates over SATA and reports the hardcoded identity string SATAFIRM S11 at a 0-byte or 2 MB diagnostic capacity, which most BIOSes still display before Windows boots. A Marvell controller (the 88SS1074 in SanDisk Ultra II, SanDisk SSD Plus, and WD Blue G1, or the older 88SS9174 in the Crucial M4 and C400) typically does the opposite: the controller hangs the SATA bus by holding the ATA BSY bit high indefinitely, so the BIOS either freezes mid-POST or lists no model string at all. If the host sees no identity but the drive draws power, suspect Marvell. If the host sees SATAFIRM S11, it is Phison. SATA Marvell firmware recovery is $600–$900; NVMe Marvell (88SS1093 in Plextor M9Pe, Lenovo AM6671/AM6672) is $900–$1,200.
What is a PC-3000 Virtual Translator and why is it needed?
A Virtual Translator is the logical-to-physical mapping table PC-3000 SSD reconstructs in workstation RAM after a microcode loader has muted the controller's garbage collection, TRIM, and wear-leveling routines. SSDs write out-of-place: updating a logical block writes new data to a fresh physical page and marks the old page invalid, so the raw NAND contains multiple overlapping copies of every Logical Page Number. PC-3000 SSD reads every physical page through the injected loader, parses the OOB spare area (logical page number, block sequence number, page program counter, validity bitmap) and resolves the freshest valid copy per LPN by picking the highest block sequence number. The NAND is read-only throughout. The translator lives in workstation RAM only and drives sector-by-sector imaging to a destination drive.

Ship your SATAFIRM S11 or BSY drive to the Austin lab

Free evaluation, firm quote before any paid work, no charge if there's no data. Single location. No franchises. No outsourcing.

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