Comment 0 for bug 247819

Revision history for this message
Cpp (xcpp) wrote : SDHC Card reader I/O errors on Hardy

Greetings.

I've recently bought a 4GB SDHC memory card from Adata (class 6) to try it out on my Acer Aspire 5920G laptop, running Ubuntu Hardy and Windows XP. It has one of those 5-in-1 card readers (SD™, MMC, MS, MS PRO, xD) that you get to see in a number of Acer laptops today. Unfortunately I wasn't able to make use of the card because a the system threw a briefcase full of errors back at me. I found out that just by inserting the card into the card slot already generates a bunch of errors as seen by dmesg:

[ 495.406662] mmc0: new high speed SDHC card at address 0002
[ 495.437069] mmcblk0: mmc0:0002 SD 3948544KiB
[ 495.437129] mmcblk0: p1
[ 495.486638] mmcblk0: error -110 transferring data
[ 495.486653] end_request: I/O error, dev mmcblk0, sector 32
[ 495.486661] Buffer I/O error on device mmcblk0, logical block 4
[ 495.486672] end_request: I/O error, dev mmcblk0, sector 40
[ 495.486677] Buffer I/O error on device mmcblk0, logical block 5
[ 495.486685] end_request: I/O error, dev mmcblk0, sector 48
[ 495.486690] Buffer I/O error on device mmcblk0, logical block 6
[ 495.486697] end_request: I/O error, dev mmcblk0, sector 56
[ 495.486702] Buffer I/O error on device mmcblk0, logical block 7
[ 495.486709] end_request: I/O error, dev mmcblk0, sector 64
[ 495.486714] Buffer I/O error on device mmcblk0, logical block 8
[ 495.486721] end_request: I/O error, dev mmcblk0, sector 72
[ 495.486726] Buffer I/O error on device mmcblk0, logical block 9
[ 495.486734] end_request: I/O error, dev mmcblk0, sector 80
[ 495.486739] Buffer I/O error on device mmcblk0, logical block 10
[ 495.486746] end_request: I/O error, dev mmcblk0, sector 88
[ 495.486751] Buffer I/O error on device mmcblk0, logical block 11
[ 495.500565] mmcblk0: error -110 transferring data
[ 495.500577] end_request: I/O error, dev mmcblk0, sector 7897024
[ 495.500585] Buffer I/O error on device mmcblk0, logical block 987128
[ 495.520101] mmcblk0: error -110 transferring data
[ 495.520115] end_request: I/O error, dev mmcblk0, sector 7897024
[ 495.520123] Buffer I/O error on device mmcblk0, logical block 987128
[ 495.534780] mmcblk0: error -110 transferring data
[ 495.534794] end_request: I/O error, dev mmcblk0, sector 32
[ 495.550827] mmcblk0: error -110 transferring data
[ 495.550840] end_request: I/O error, dev mmcblk0, sector 96
etc...

Actually the first time I noticed the problem was when I attempted to copy roughly 800 MB of files over to the card in nautilus. This was the first time I ever used a SDHC card or the card reader. The progress came to about 200 MB and then stopped with an error: Error writing to file: Input/output error
Looking at syslog/dmesg, I could see hundreds more of those i/o errors, including a few of these entries:

...
[ 670.808329] end_request: I/O error, dev mmcblk0, sector 350
[ 670.810394] mmc0: Got data interrupt 0x00600000 even though no data operation
 was in progress.
[ 670.810400] sdhci: ============== REGISTER DUMP ==============
[ 670.810407] sdhci: Sys addr: 0x32491200 | Version: 0x00000400
[ 670.810412] mmcblk0: error -110 sending read/write command
[ 670.810417] end_request: I/O error, dev mmcblk0, sector 351
[ 670.810429] sdhci: Blk size: 0x00007200 | Blk cnt: 0x00000001
[ 670.810438] sdhci: Argument: 0x0000015f | Trn mode: 0x00000013
[ 670.810447] sdhci: Present: 0x01ef0000 | Host ctl: 0x00000006
[ 670.810453] sdhci: Power: 0x0000000f | Blk gap: 0x00000000
[ 670.810462] sdhci: Wake-up: 0x00000000 | Clock: 0x00000007
[ 670.810468] sdhci: Timeout: 0x00000009 | Int stat: 0x00000000
[ 670.810477] sdhci: Int enab: 0x00ff00fb | Sig enab: 0x00ff00fb
[ 670.810483] sdhci: AC12 err: 0x00000000 | Slot int: 0x00000000
[ 670.810491] sdhci: Caps: 0x01f021a1 | Max curr: 0x00000040
[ 670.810495] sdhci: ===========================================
[ 670.810505] FAT: FAT read failed (blocknr 288)
[ 670.812519] mmcblk0: error -110 sending read/write command
[ 670.814585] end_request: I/O error, dev mmcblk0, sector 1021687
...

At first I believed it was a faulty SDHC card, but a colleague of mine tested the card on his Vista laptop without any problems. I've tried formatting the card several times in GParted with a number of file systems including fat-16, fat-32 and ext3 of which all failed to work properly. Ironically, sometimes even GParted failed to recognize its newely created ext3 partition and instead listed it as unknown. Doing fsck on the card is another book with 5000 pages.

Of course I tried to use the card on my other operating system, Windows XP, which surprisingly didn't even recogize the card. This gave me a reason to believe that my card reader was faulty. I later ruled that option out after installing a patch from microsoft (WindowsXP-KB934428-v3-x86-ENU.exe), allowing Windows XP to recognize 4GB SDHC cards and above. Now my card reader was able to work on WinXP (same card reader) without any problems. So I do believe I have traced the problem back to Ubuntu linux.

Since the problem happens in Hardy with the latest updates applied, I am therefore reporting this as a bug. I am not sure how to fix this myself, but please let me know when a fix is available.
Thanks.

lspci | grep Ricoh
0a:09.0 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 IEEE 1394 Controller (rev 05)
0a:09.1 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 22)
0a:09.2 System peripheral: Ricoh Co Ltd R5C843 MMC Host Controller (rev 12)
0a:09.3 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 12)
0a:09.4 System peripheral: Ricoh Co Ltd xD-Picture Card Controller (rev ff)

lsb_release -rd
Description: Ubuntu 8.04.1
Release: 8.04

uname -r
2.6.24-19-generic