- DISCLAIMER: this guide is provided here only "just for fun" for experimental, research and educational purposes without any guarantees (or warranties, responsibilities, obligations, liabilities etc.; even no repeatability guaranteed, as this guide has been based solely on just one particular specimen device, sorry), so use it at your own risk (even more, the so-called "reverse engineering" can possibly be illegal in some areas);
- ATTENTION (DANGER): it can result in an irreversible destruction of ALL or ANY data stored on the target device (including the loss of important metadata like device usage statistics, but it's not wise to hope it will heal / recover / restore any worn-out memory blocks / chips or make the device good as new in performance) and, in theory, on some other storage devices -- please back up ALL the valuable data FIRST;
- CAUTION: it may even brick your device;
- WARNING: moreover, it may void the warranty, if any.
- Feel safe & free to enjoy! ;-)
What's interesting with it: what I've got here is really not a generic, but a Lenovo OEM-branded version, and it has a cut-down set of SMART features: only one SMART attribute ("Power cycle count") is available [4.1, 4.2], though still there's some useful info (power-on hours, total number of logical sectors read / written, uncorrectable errors etc.) in the SMART device statistics & SMART error log; fortunately, SMART self-tests are also available. Unfortunately, updating the firmware from the initial "040H" (probably updated by previous owners, see above) to the latest "070H" Lenovo OEM version [1.4] didn't improve the SMART functionality.
More notes:
- This SSD supports SATA revisions from 1.0 to 3.0 (1.5, 3 and 6 Gb/s respectively), but as for UDMA, it's max. UDMA/100.
- Most C400 configurations (including the described one, and generic ones too) have no thermal sensor, so SMART usually reports a zero (Celsius) temperature (look for the "C400 SSD SMART Attributes (pdf)" document, "tnfd20_c400_ssd_smart_attributes.pdf" file name [2.2]).
- Further debugging and internal SSD operation insights can be hypothetically provided by serial console interface (though currently I have no data on the actual pinout & schematics for the current SSD).
- Firmware (FW):
- binary microcode image is slightly smaller than the generic one;
- reduced SMART functionality.
- Hardware (HW):
- unknown.
c400_rev_070H_bootable_media_instructions.pdf
" document from the Micron FW update package version "070H" [1.1]):
- "0" (reserved);
- minor revision;
- type of SSD application:
- major revision.
Regarding the FW updater bootable images, they have the following structure:
- bootable (ISOLINUX / MEMDISK) CD ISO image ("
*.iso
"):- bootable (FreeDOS) FDD (2.88 MiB) image ("
boot/isolinux/boot2880.img
"):fwa.img
(FW image);dosmcli.exe
(FW updater utility);hdpmi32.exe
(DPMI extender driver needed by FW update utility to operate);autoexec.bat
(containing the commands executed at the start of the DOS environment, as usual);- ... misc. other non-interesting files (e. g., FreeDOS system files);
- ... misc. other non-interesting files (e. g., ISOLINUX boot files).
- bootable (FreeDOS) FDD (2.88 MiB) image ("
What to do (somewhat simplified) for decustomizatiom / unbranding FW upgrade (if you're still interested):
- Please prepare a safe environment for the dangerous activity:
- please make backups first;
- please shut down the system and turn off the power;
- check the earthing;
- check the UPS;
- please disconnect any other SSDs (especially produced by Micron Technology) from the x86 PC used for experiments before playing with the target device (to prevent collateral damage);
- please connect the target device to one of the working SATA ports of your system (please avoid the use of complicated interconnections like hubs, switches, concentrators and adapters, e. g., USB ones);
- etc.
- (Downgrade the SSD FW to the suitable old generic version, if needed).
- Upgrade the SSD FW to the freshest generic version.
- Reset (reboot) the system.
- PROFIT!
- You can use free tools (for example, your favorite GNU / Linux distribution) to extract anything from CD / FDD image, or even modify them for your personal needs.
- No need to waste writable CDs: you can use the bootable FDD image(s) to create a bootable USB flash drive for SSD FW flashing.
- The latest known most generic FW version for C400 SSDs is "070H" from Micron (look for "C400 Rev. 070H Bootable Media Firmware Update (zip)" [1.1]; the archive name should be "
c400_rev070H_bootable_media_instructions.zip
"), which dates back to year 2013. - A one known suitable old somewhat generic FW update version is the one for Crucial SSD [1.2] m4 series, revision "0002" (search for the following archive name: "
m4_0001to0002.zip
"). - A firmware upload (upgrade, downgrade) can be carried out forcibly if needed; please refer to the "--force" option in the help of the FW update utility (please note not every utility version supports that).
- Sometimes the SSD somehow doesn't resume back to normal functioning after the FW flashing operations (and simply resetting the device together with the computer after each such operation doesn't help). Maybe it's better to power it off completely (with disconnecting it from all the cables)... or maybe sometimes it needs a high / low format / full erase etc.??? (Haven't tested thoroughly, as I've got only one such unit). And don't forget about the SMART.
- Maybe you can just upload a new FW right away (no downgrades) with the old utility (from "0002" / Crucial)? (Haven't checked though, feel free to test).
- Who knows, maybe there's some fresh FW updater with uncut "force update" feature freely accessible too.
- Firmware downloads:
- Micron - SSD Firmware (official shortcut link): Software - Solid State Drives - Document Search - Micron Technology [needs registration to download]
- Crucial SSD Firmware Updates
- Micron Solid State Drive (SSD) Firmware Update - HP Support Center
- Firmware update for 2.5" Micron C400 series Solid State Drives to fix Bluescreens and system hangs - Lenovo
- Datasheets & documentation:
- Thanks for suggesting a suitable firmware update package version:
- Thanks for asking questions:
- Thanks for some more analysis:
APPENDIX: some sample text output (from different versions of FW updaters in a DOS session) follows here.
- "0002" / Crucial:
A:\>type autoexec.bat @echo off SET dosdir=A:\ HDPMI32.EXE -R MODE CO80,50 CLS dosmcli.exe --bus ALL -f fwa.img --ssd-only --segmented 10 ECHO Finished. A:\>dosmcli --firmware fwa.img (c) 2009,2010 Micron Technology, Inc. All Rights Reserved. This copyright notice may not be removed, altered or obscured in any way. ************************************************************* ** READ ANY SUPPORTING DOCUMENTS ACCOMPANYING THIS PROGRAM ** ************************************************************* $Rev: 5450 $ May 2 2011 17:30:25 A:\>dosmcli --version (c) 2009,2010 Micron Technology, Inc. All Rights Reserved. This copyright notice may not be removed, altered or obscured in any way. ************************************************************* ** READ ANY SUPPORTING DOCUMENTS ACCOMPANYING THIS PROGRAM ** ************************************************************* SSD MicronCLI Version: 1.3 Build: 303 SSD Micron IO Library Version: 00.01.02 Build: 302 A:\>dosmcli --help (c) 2009,2010 Micron Technology, Inc. All Rights Reserved. This copyright notice may not be removed, altered or obscured in any way. ************************************************************* ** READ ANY SUPPORTING DOCUMENTS ACCOMPANYING THIS PROGRAM ** ************************************************************* Usage: -v --version display the version of Firmware Updater. -h --help display this help text. -s <x> --statistics <x> display the specified drive SMART statistics. -d --driveinfo display all detected drives' information. -f <path/to/file> --firmware <path/to/file> display firmware version. -n <x> --nand <x> display the nand configuration of selected Micron ssd. -u <x> --update <x> update firmware. To be used with [-f|--firmware]. Example: dosmcli.exe -u 0 -f "C:\64G_SLC_1069.bin" This updates firmware to 64G_SLC_1069.bin on SSD 0. -F --force disables the DM_Verify_Check function so firmware will accept any update that would otherwise be rejected. This command has no effect on firmware prior to revision 3796. -S --suppress minimal output to stdout. --svnrev <x> display the minor version of the drive's firmware. -r <x> --reboot <x> reboot the drive. -l <x> --low-format <x> perform a low-level format of the specified drive. -L <x> --high-format <x> perform a high-format of all data on the drive. --secure-erase <x> perform an ATA Secure Erase on the drive. --erase-mode <normal | enhanced> chooses the kind of ATA Secure Erase to perform. --compare-user <password> gives the USER password for the drive. Mutually exclusive with [--compare-master]. --compare-master <password> gives the MASTER password for the drive. Mutually exclusive with [--compare-user]. -a <x> --erase-all-flash <x> erases the entire contents of the flash, including the current firmware. -w <x> --writeamp <x> calculate write amplification for the drive. -W <x> --writeamphistory <x> calculate the historical write amplification for the drive. -R <x> --smartread <x> display all returned SMART statistics, including those that are vendor unique. --segmented <#> the size of a segment (for 92h mode 3 downloads), in number of blocks, defined as a hex number. Example: --segmented 7f The default is 1. --notSegmented used to specify ATA command 92h mode 7 download. -V --verbose output more information to stdout. If both --verbose and --suppress are specified on the command line, --suppress wins. -b [ATA | SCSI | ALL] --bus [ATA | SCSI | ALL] specifies which bus to look for devices on. Defaults to ATA. --ssd-only to be used with either [-d] or with [-u and -f]. In case of [-d], it causes the option to only show SSDs. In the case of [-u and -f], it causes the option to update firmware to all compatible SSDs in the system. --yes answers 'yes' to all confirmation questions. --no reciprical of 'yes'. Doesn't do anything. Confirmation questions will be displayed to the user. -p <string> --product <string> indicate the expected product family of Micron drive to use for firmware update. --update-tcg-tables <x> To be used in conjuction with [-f]. Argument is the drive to update. --bl To be used in conjunction with [--ssd-only] when updating drives with both bootloader and firmware code. --get-log-directory Will print the number of entries in each log, if the GPL exists. --get-log <x> Indicates the device to retrieve a log from. Use with [--log-number]. --log-number <hexLogNumber> Specifies the GPL/SL log number to retrieve. This value is given in hexidecimal. Use with [--get-log <x>]. --set-password <x> Indicates which device to set a password on. Use with [--password <password>].
- "070H" / Micron:
A:\>type autoexec.bat @echo off SET dosdir=A:\ HDPMI32.EXE -R MODE CO80,50 CLS dosmcli.exe --bus ALL -U fwa.img --segmented 10 -p C400:00:070H ECHO Finished. A:\>dosmcli --firmware fwa.img (c) 2009,2010 Micron Technology, Inc. All Rights Reserved. This copyright notice may not be removed, altered or obscured in any way. ************************************************************* ** READ ANY SUPPORTING DOCUMENTS ACCOMPANYING THIS PROGRAM ** ************************************************************* $Rev: 10541 $ Feb 26 2013 14:50:24 A:\>dosmcli --version (c) 2009,2010 Micron Technology, Inc. All Rights Reserved. This copyright notice may not be removed, altered or obscured in any way. ************************************************************* ** READ ANY SUPPORTING DOCUMENTS ACCOMPANYING THIS PROGRAM ** ************************************************************* SSD MicronCLI Version: 1.4.20130321.155301 SSD Micron IO Library Version: 1.5.20130321.155226 A:\>dosmcli --help (c) 2009,2010 Micron Technology, Inc. All Rights Reserved. This copyright notice may not be removed, altered or obscured in any way. ************************************************************* ** READ ANY SUPPORTING DOCUMENTS ACCOMPANYING THIS PROGRAM ** ************************************************************* Usage: -v --version Display the version of Firmware Updater. -h --help Display this help text. -d --driveinfo Display all detected drives information. -D <x> --deviceId <x> Specify device id for commands that need it. -f <directory/fileName> --firmware <directory/fileName> Specifies the firmware file. When used with the [-u], [--ssd-only] or [--serial-number], the firmware will be sent to the drive. When used without one of those options, displays information about the firmware version of the file. Use with [-p] to specify a product family. Use with [--bridge] when specifying a SATL bridge firmware file. -u <x> Update firmware. To be used with [-f|--firmware]. --update <x> Example: dosmcli.exe -u 0 -f "C:\64G_SLC_1069.bin" Updates firmware to 64G_SLC_1069.bin on SSD 0. When updating to a different block size, NAND type or customer ID, the --force (-F) or --forceCustomer (-C) flags must be used. -U <directory/fileName> --update-by-product-customer <directory/fileName> Update firmware for product and customer specified in -p switch. -p <product:customerId:FirmwareRevision> --product <product:customerId:FirmwareRevision> (ie. C400:00:8435) Specify a product family, customerId and the firmware revision that will result from the update. Devices that have firmware at the specified revision will be skipped. Specify NO for customerId or NONE for firmware revision to bypass those checks. -S --suppress Minimal output to stdout. --secure-erase Perform an ATA Secure Erase on the drive. Requires use of the --erase-mode flag and either the --compare-user or the --compare-master flags. Must use [-D] to specify the device index or [--serial-number] to specify the device serial number. --erase-mode <normal | enhanced> Chooses the kind of ATA Secure Erase to perform. Used in conjunction with the --secure-erase flag. --compare-user <password> Gives the USER password for the drive. Mutually exclusive with [--compare-master]. Used in conjunction with the --secure-erase flag. If the user password hasn't been set, password can be any arbitrary string. --compare-master <password> Gives the MASTER password for the drive. Mutually exclusive with [--compare-user]. Used in conjunction with the --secure-erase flag. If the master password hasn't been set, password can be any arbitrary string. -R <x> --smartread <x> Display all returned SMART statistics, including those that are vendor unique. --segmented <#> The size of a segment (for ATA download command 92h, mode 3 when updating device firmware or SCSI Write Buffer command 3Bh, mode 7 when updating SATL bridge firmware), in number of blocks, defined as a hex number. Example: --segmented 7f The default is 1. --notSegmented Used to specify ATA download command 92h, mode 7 when updating device firmware or SCSI Write Buffer command 3Bh, mode 3 when updating SATL bridge firmware. -V --verbose Output more information to stdout. If both --verbose and --suppress are specified on the command line, --suppress wins. -b [ATA | SCSI | ALL] --bus [ATA | SCSI | ALL] Specifies which bus to look for devices on. Defaults to ALL on Windows and DOS and SCSI on Linux. --ssd-only To be used with either [-d] or with [-f]. [-d] will only show compatible SSDs and [-f] will update the firmware to all compatible SSDs in the system. Should not be used with [-u]. --yes Answers 'yes' to all confirmation questions. --no Reciprical of 'yes'. Doesn't do anything. Confirmation questions will be displayed to the user. -t <directory/fileName> --tcg-table-update <directory/fileName | None> The file specified is the TCG table data to download to the drive. If "None" is given for the file name this is a TCG drive firmware update but the TCG tables are not being updated with the firmware. To be used in conjuction with [-D] to specify deviceId unless using the -U option where no specific deviceId is needed. -O <directory/fileName> --output-to-file <directory/fileName> For some commands, the output will redirected to file. Currently supported for the following commands: --version --smartread --delayed Activates a DOWNLOAD AND ACTIVATE LATER mode for 92h. This is not part of the ATA specification. A given product must support this capability, as indicated by IDENTIFY W159[0] being set to one. --bridge Sends the firmware data to the SATL bridge. Only SAS devices (e.g. P410) containing a SATL bridge chip will support this option. If this flag and the [--drive] flag are omitted, the firmware data will be sent to the bridge if the firmware file ends with the .dlf extension. --drive Updates firmware on the drive as opposed to the SAS bridge (see the [--bridge] option). If this flag and the [--bridge] flag are omitted, the firmware data will be sent to the drive unless the firmware file ends with the .dlf extension, in which case it will be sent to the bridge. --identify Will output a hex dump of the drives IDENTIFY data. Must use [-D] to specify the device index. Ex. --identify --serial-number <deviceSerialNumber> Used when updating firmware or performing a secure erase to identify the drive to update. When updating, can only be used with the [-f] option. Will be ignored if used with either the [-u] or [-D] options. --bl <bootloader firmware file> Used to update bootloader firmware. Must be used with either the [-u] or [--serial-number] options to specify a particular drive or with the [--ssd-only] or [-p] options to update multiple drives.
- "070H" / Crucial:
A:\>type autoexec.bat @echo off SET dosdir=A:\ HDPMI32.EXE -R MODE CO80,50 CLS dosmcli.exe --bus ALL -U fwa.img --segmented 10 -p c400:00:070H ECHO Finished. A:\>dosmcli --version (c) 2009,2010 Micron Technology, Inc. All Rights Reserved. This copyright notice may not be removed, altered or obscured in any way. ************************************************************* ** READ ANY SUPPORTING DOCUMENTS ACCOMPANYING THIS PROGRAM ** ************************************************************* SSD MicronCLI Version: 1.3 Build: 664 SSD Micron IO Library Version: 00.01.04 Build: 671 A:\>dosmcli --help (c) 2009,2010 Micron Technology, Inc. All Rights Reserved. This copyright notice may not be removed, altered or obscured in any way. ************************************************************* ** READ ANY SUPPORTING DOCUMENTS ACCOMPANYING THIS PROGRAM ** ************************************************************* Usage: -v --version Display the version of Firmware Updater. -h --help Display this help text. -d --driveinfo Display all detected drives information. -f <directory/fileName> --firmware <directory/fileName> Display firmware version. -u <x> Update firmware. To be used with [-f|--firmware]. --update <x> Example: dosmcli.exe -u 0 -f "C:\64G_SLC_1069.bin" Updates firmware to 64G_SLC_1069.bin on SSD 0. -U <directory/fileName> --update-by-product-customer <directory/fileName> Update firmware for product and customer specified in -p switch. -p <product:customerId:FirmwareRevision> --product <product:customerId:FirmwareRevision> (ie. C400:00:8435) Specify a product family, customerId and firmware revision. Specify "NO" for NONE, when customerId or firmware revision is not used. -S --suppress Minimal output to stdout. --secure-erase <x> Perform an ATA Secure Erase on the drive. --erase-mode <normal | enhanced> Chooses the kind of ATA Secure Erase to perform. --compare-user <password> Gives the USER password for the drive. Mutually exclusive with [--compare-master]. --compare-master <password> Gives the MASTER password for the drive. Mutually exclusive with [--compare-user]. -R <x> --smartread <x> Display all returned SMART statistics, including those that are vendor unique. --segmented <#> The size of a segment (for 92h mode 3 downloads), in number of blocks, defined as a hex number. Example: --segmented 7f The default is 1. --notSegmented Used to specify ATA command 92h mode 7 download. -V --verbose Output more information to stdout. If both --verbose and --suppress are specified on the command line, --suppress wins. -b [ATA | SCSI | ALL] --bus [ATA | SCSI | ALL] Specifies which bus to look for devices on. Defaults to ATA. --ssd-only To be used with either [-d] or with [-u and -f]. [-d] will only show SSDs and [-u and -f] will update the firmware to all compatible SSDs in the system. --yes Answers 'yes' to all confirmation questions. --no Reciprical of 'yes'. Doesn't do anything. Confirmation questions will be displayed to the user. -t <directory/fileName> --tcg-table-update <directory/fileName | None> The file specified is the TCG table data to download to the drive. If "None" is given for the file name this is a TCG drive firmware update but the TCG tables are not being updated with the firmware. To be used in conjuction with [-D] to specify deviceId unless using the -U option where no specific deviceId is needed. --bl To be used in conjunction with [--ssd-only] when updating drives with both bootloader and firmware code. -O <directory/fileName> --output-to-file <directory/fileName> For some commands, the output will redirected to file. --delayed Activates a DOWNLOAD AND ACTIVATE LATER mode for 92h. This is not part of the ATA specification. A given product must support this capability, as indicated by IDENTIFY W159[0] being set to one.
- "070H" / Lenovo:
A:\>type autoexec.bat @echo off SET dosdir=A:\ HDPMI32.EXE -R MODE CO80,50 CLS dosmcli.exe --bus ALL -U fwa.img --segmented 10 -p c400:03:070H ECHO Finished. A:\>dosmcli --firmware fwa.img (c) 2009,2010 Micron Technology, Inc. All Rights Reserved. This copyright notice may not be removed, altered or obscured in any way. ************************************************************* ** READ ANY SUPPORTING DOCUMENTS ACCOMPANYING THIS PROGRAM ** ************************************************************* $Rev: 10541 $ Feb 26 2013 14:42:03
---
Last updated: 2017-02-09
Last updated: 2017-02-09
Is there any way to backup the firmware of an OEM branded Micron SSD?
ReplyDeleteUntil there's some public info on a specific SSD schematics (or maybe some more advanced service utilities), the best way is to try downloading the appropriate firmware (update) version from the OEM vendor's website.
DeleteWhat about 0G09 firmware (Fujitsu)?
ReplyDeleteAll I can tell for sure, is that "0G09" looks older than "070H"; nothing else is guaranteed.
DeleteBut you can try to check the generic "070H" update from Micron, if you like.
Absolutely fascinating guide on upgrading the Micron C400 SSD firmware! It's clear you've put a lot of effort into detailing the process, especially for those of us keen on maintaining our hardware. Your insights on the technical differences and the step-by-step process are incredibly helpful. By the way, looking to incorporate a Micron 7450 Max MTFDKCC3T2TFS-1BC1ZABYYR into my setup soon, hoping it's as reliable as the C400 series has been!
ReplyDelete