Recovering data from a broken SD card using Arduino
Your SD (Secure digital) card may be holding a lot of important information you may not want to lose. But what if, all over sudden, it fails to get detected or read by devices such as the computer, camera or even mobile phone? People refer to this situation as the memory card being broken. Most people cry foul and throw the card away later not knowing that they may try and recover the data using Arduino, which is a microcontroller. This method of Recovering Data from a broken SD card is also called Severin’s method.
Arduino Recovers Data Maimi by reading data from the SD card in a different way from which other devices read data. Most devices use the SDIO bus mode to read data because it is fast and helps to transfer large files easily. On the contrary, Arduino uses the SPI mode which is way slower than the SDIO mode but much simple. Not all data may end up being recovered by hey! It is better than losing everything.
All you may need is the Arduino kit and one is good to go. Just plug the card in the kit, preferably a Playduino one Arduino clone, then follow the following steps.
On the Arduino IDE interface, navigate to the SD card library. You will find am example called cardinfo, which one uses to obtain information such as the size of the SD card, the list of files in the SD card and the file system type e.g. FAT32 system.
Once that is done, you can now copy the files to your computer. This is how this works: the sd recovery files no runs over the file system a number of times and outputs the result to the serial port. The result is what you copy to your machine. The files copied are in hexadecimal format and therefore need to be converted to binary form.
To convert the files to binary form which can then allow the computer to open them, use the parse_raw.py script which is a set of python code preinstalled for this purpose.
The major shortcoming with this method of recovering data is that the SPI mode used to read the card is slow hence it would take ages to read large size files. What even makes it slower is that the files in the care are read in small blocks and output serially. A parallel output would have been faster.