Header RSS Feed
If you only want to see the articles of a certain category, please click on the desired category below:
ALL Android Backup BSD Database Hacks Hardware Internet Linux Mail MySQL Monitoring Network Personal PHP Proxy Shell Solaris Unix Virtualization VMware Windows Wyse

How to test if a SDHC card is defect or is dying
Saturday - Oct 5th 2013 - by - (0 comments)

My wife told me today, that she has an issue with her camera, a Nikon D3100, and the memory card, a 16GB SDHC Class 6 card from Platinum.

Well as you can imagine, as a Linux Admin, I'm not the guy who fixes cars and laundry machines or know how to perfectly paint a wall. So as this problem goes more into my league, I can at least prove myself in knowing stuff about technology. Of course I received a raising eyebrow but she let me do my checks anyway.

The Nikon D3100 became very slow, already at the start. The SDHC is a class 6 card, as mentioned before, so that's not the slowest card available. After taking a few pictures, the camera froze and it took forever to save a few pictures on the card. Also the powering off of the camera took a long time. A switch of the memory card (we put in a much older SD card) confirmed that something must be wrong with the SDHC card - the camera was now much faster and working well again.

I plugged the SDHC card into my Debian Wheezy machine (through a USB-multi-slot-bridge). fdisk showed that the SDHC's file system is formatted in FAT32:

fdisk -l /dev/sdf

Disk /dev/sdf: 15.7 GB, 15727591424 bytes
255 heads, 63 sectors/track, 1912 cylinders, total 30717952 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Device Boot      Start         End      Blocks   Id  System
/dev/sdf1            8192    30717951    15354880    c  W95 FAT32 (LBA)

Let's check this bad guy with fsck:

fsck /dev/sdf1
fsck from util-linux 2.20.1
dosfsck 3.0.13, 30 Jun 2012, FAT32, LFN
There are differences between boot sector and its backup.
Differences: (offset:original/backup)
  72:49/4f, 73:4b/20, 74:4f/4e, 75:4e/41, 76:20/4d, 77:44/45, 78:33/20
  , 79:31/20, 80:30/20, 81:30/20
1) Copy original to backup
2) Copy backup to original
3) No action
? 1
Leaving file system unchanged.
/dev/sdf1: 902 files, 101166/479712 clusters

Hmm.. Indeed. Something doesn't look right. As you can see, I tried to fix the issue with the option 1 (copy original to backup), but that didn't work.
I decided to delete the partition and recreate it manually:

fdisk /dev/sdf1
Command (m for help): d
Selected partition 1

Command (m for help): w
The partition table has been altered!

fdisk /dev/sdf1
Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-30717951, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-30717951, default 30717951):
Using default value 30717951

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): c
Changed system type of partition 1 to c (W95 FAT32 (LBA))

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Then format the new partition with FAT32:

mkfs.vfat /dev/sdf1
mkfs.vfat 3.0.13 (30 Jun 2012)

Another file system check told me that everything was OK. However once back in the Nikon camera, the same freezes still appeared.

Maybe the card is really dying - but how can this be verified? For hard drives there is the SMART table to find some hints, but how on SDHC cards?
By chance I came across F3 (http://oss.digirati.com.br/f3/)  which is a program the find determine a fake SD cards by writing and reading the card until all space is used. I figured I could use the same tool to detect bad sectors as well. So let's give F3 a shot.

Download and compile is pretty easy on Linux:

wget https://github.com/AltraMayor/f3/archive/v2.2.zip
unzip v2.2.zip
cd f3-2.2/
make linux

This creates two binary files: f3read and f3write. To be able to use these commands, the card's file system must first be mounted:

mount /dev/sdf1 /mnt

First we launch f3write to write to the SDHC card.
Remember that the card is now completely empty! Do not do that when you still have pictures on the card!

./f3write /mnt/
Free space: 14.62 GB
Creating file 1.fff ... OK!
Creating file 2.fff ... OK!
Creating file 3.fff ... OK!
Creating file 4.fff ... OK!
Creating file 5.fff ... OK!
Creating file 6.fff ... OK!
Creating file 7.fff ... OK!
Creating file 8.fff ... OK!
Creating file 9.fff ... OK!
Creating file 10.fff ... OK!
Creating file 11.fff ... OK!
Creating file 12.fff ... OK!
Creating file 13.fff ... OK!
Creating file 14.fff ... OK!
Creating file 15.fff ... OK!
Free space: 0.00 Byte
Average writing speed: 10.77 MB/s

 Once the card was fully written (it may take a while, be patient), we can read the written files from the card:

./f3read /mnt/
                  SECTORS      ok/corrupted/changed/overwritten
Validating file 1.fff ... 2097152/        0/      0/      0
Validating file 2.fff ... 2097152/        0/      0/      0
Validating file 3.fff ... 2097152/        0/      0/      0
Validating file 4.fff ... 2097152/        0/      0/      0
Validating file 5.fff ... 2097152/        0/      0/      0
Validating file 6.fff ... 2097152/        0/      0/      0
Validating file 7.fff ... 2097152/        0/      0/      0
Validating file 8.fff ... 2097152/        0/      0/      0
Validating file 9.fff ... 2097152/        0/      0/      0
Validating file 10.fff ... 2097152/        0/      0/      0
Validating file 11.fff ... 2097152/        0/      0/      0
Validating file 12.fff ... 2097152/        0/      0/      0
Validating file 13.fff ... 2097152/        0/      0/      0
Validating file 14.fff ... 2097148/        4/      0/      0
Validating file 15.fff ... 1303728/        0/      0/      0

  Data OK: 14.62 GB (30663852 sectors)
Data LOST: 2.00 KB (4 sectors)
               Corrupted: 2.00 KB (4 sectors)
        Slightly changed: 0.00 Byte (0 sectors)
             Overwritten: 0.00 Byte (0 sectors)
Average reading speed: 16.59 MB/s

There was a data loss of 2KB (4 sectors), interesting. So something is definitely wrong with this SDHC card.


Add a comment

Show form to leave a comment

Comments (newest first):

No comments yet.

Go to Homepage home
Linux Howtos how to's
Monitoring Plugins monitoring plugins
Links links

Valid HTML 4.01 Transitional
Valid CSS!
[Valid RSS]

7601 Days
until Death of Computers