unfortunately, gremlins struck my Intel X25M G2 80GB SSD. It is no longer detected by the BIOS (tried AHCI and legacy mode) and having it connected at startup makes the system hang for a long time on POST. Using it inside an external eSATA/USB enclosure does not work either.
However, I discovered that the OS is able to detect the partitions when hotplugging the device (Windows and Linux).
When accessing the drives or trying any other commands (extract drive info, read SMART parameters etc.), the SSD freezes again (HDD LED is on for maybe 30 seconds - and the drive does not react to any ATA commands - not even resets). So using Intel's SSD toolbox or updating the firmware is not possible (currently 02HA).
Regrettably, there's some important data on that device that I'd REALLY like to get out. A reasonably priced company specialized on restoring flash drives told me they (using the PC 3000) currently cannot cope with X25M G2, because the controller encrypts (?) (some?) data.
So I tried myself...
To get the partitions, the OS needs to read sector 0. It took me quite a while to figure out where and how the Linux kernel does this. Making various changes to the kernel it was possible to read other sectors as well at this place (having an Open Source OS is really cool in situations like these...)
Experimenting further, I made some progress with this issue and thought I might share my findings.
Currently, I have a linux kernel with greatly reduced SATA timeouts (for convenience) that does nothing when detecting the SSD except of providing it as /dev/sdb as quickly as possible.
Using a tuned "dd" (waits for the input device to be available and immediately starts dumping data) I can get 30-50 MB out of the SSD before it freezes. To get another 30-50MB out, I need do detach the SSD from the system and reattach it again (I use a drive bay for this).
Unfortunately, this seems to work only with 95%-98% of the sectors. Accessing some areas on the drive causes immediate freezing. Coming closer to these areas, the regions "dd" can extract become smaller (sometimes only a handful of sectors).
Currently, I have extracted 2GB from the drive and the data seems correct. However, it takes quite a long time... especially because of these "broken" (?) regions.
I haven't come up with an idea yet, how to possibly automate this. I read that integrating a switch into the SATA power supply cable would not be a good idea... Maybe someone else has a good idea?
I also modified "hdparm" this way, making it possible to do various things with the drive before it freezes:
- With a low-level sector read, it is possible to extract a few more sectors around the "broken" regions.
- Turning of look-ahead did not bring any improvements.
- It's possible to trim individual sectors. However, trimming already fails with sectors 3 and 4 (resulting in immediate freeze again).
- SMART values and drive info look reasonable
Apart from that, I discovered one "broken" region where the drive does not freeze, but issues an I/O error instead.
At this stage, I'm starting to run out of ideas what else I could try.
I'm thinking about the following questions:
- Why does the SSD freeze? Could the firmware get stuck inside an infinite loop? Is there a way to prevent this (making firmware do something else... maybe a proprietary SATA command, trimming certain sectors, patching firmware)?
- I got advice that trimming/wiping an Intel SSD can make it operational again. Do I need to do this with the whole drive or could trimming half the drive already help? What about the sectors that cannot be trimmed with hdparm - as it seems?
- Are these "broken" regions really broken or could there be another way to access them? Considering my luck, I guess this is the file system info...
Suppose I had a raw dump of the SSD's flash chip contents, as well as 95%-98% of the data I extracted before. Would there be chances to somehow restore the missing 2-5% of that data?
- How could I automate detaching and reaattaching the drive to my SATA controller? Or could it be possible to do this via Software? (My mainboard is an Intel DH55TC (H55)).
Any ideas would be very much appreciated - especially clues from people who know what's going on inside these SSDs .
(I don't care about RMA that much btw.)
I'll gladly provide more info if required - as well as the source code modifications if someone has similar issues and wants to try this.
Thanks & Best regards,