failing eMMC but working during uboot


I have a faulty BBB for which I am very motivated to recover some of its data.

Its eMMC is failing in some case, but not completely making me hoping I can do something.

Here are the hints :

  1. Booting from the emmC, the uboot is able to read uEnv.txt and dtbs on it but at a slower rate ( :warning: 3 time slower :warning: ) than a correct one:
**U-Boot SPL 2015.04 (Jun 07 2015 - 19:26:11)**
**U-Boot 2015.04 (Jun 07 2015 - 19:26:11)**
Using default environment
mmc1(part 0) is current device
mmc found on device 1
Checking for: /boot/uEnv.txt ...
gpio: pin 54 (gpio 54) value is 1
25 bytes read in 43 ms (0 Bytes/s)
Loaded environment from /boot/uEnv.txt
Checking if uenvcmd is set ...
gpio: pin 55 (gpio 55) value is 1
5583032 bytes read in 1112 ms (4.8 MiB/s)
loading /boot/dtbs/am335x-boneblack.dtb ...
54956 bytes read in 155 ms (345.7 KiB/s)
gpio: pin 56 (gpio 56) value is 1

Versus for a good one :

Checking for: /boot/uEnv.txt ...
gpio: pin 54 (gpio 54) value is 1
25 bytes read in 14 ms (1000 Bytes/s)
Loaded environment from /boot/uEnv.txt
Checking if uenvcmd is set ...
gpio: pin 55 (gpio 55) value is 1
5583032 bytes read in 319 ms (16.7 MiB/s)

  1. At the uboot stage, I can even see all my file tree system with “ls mmc 1:1 /” and navigate through them.

  1. Once the Linux Kernel is launched, it is unable to mount properly the eMMC:
mmc1: new high speed MMC card at address 0001
[ 4.802743] mmcblk1: mmc1:0001 M62704 3.56 GiB
[ 4.807618] mmcblk1boot0: mmc1:0001 M62704 partition 1 2.00 MiB
[ 4.813811] mmcblk1boot1: mmc1:0001 M62704 partition 2 2.00 MiB
[ 4.821869] mmcblk1: p1
[ 5.152731] EXT4-fs (mmcblk1p1): couldn't mount as ext3 due to feature incompatibilities
[ 5.161452] EXT4-fs (mmcblk1p1): couldn't mount as ext2 due to feature incompatibilities
[ 11.331262] mmcblk1: timed out sending r/w cmd command, card status 0xe40
[ 11.435066] mmc1: cache flush error -110
[ 14.493222] mmc1: tried to reset card, got error -110
[ 14.498297] blk_update_request: I/O error, dev mmcblk1, sector 2048
[ 14.504606] Buffer I/O error on dev mmcblk1p1, logical block 0, lost async page write
[ 14.567783] mmcblk1: error -110 sending status command, retrying
[ 14.574176] mmcblk1: error -110 sending status command, aborting

  1. Booting from the SDCARD with an Archlinux worked perfectly. But then, trying to mount the eMMC encounters similar problem. "fdisk -l” showed properly the partitions, etc. But no way to mount it properly or to repair with (though the reading through uboot let me believe the files are not corrupted)

  1. So far, what I’ve tried in this archlinux env :
    a) Accessing the eMMC with 4bits (rather than 8bits) as in uboot → No improvement. 1bit → No improvement.
    b) Reducing eMMC clock (max_frequency) → No improvement.
    c) Reducing BBB processor frequency → No improvement
    d) Tracking a failing component that would “compete” once mounted in Linux Kernel : → USB , ethernet seem functional.
    e) Comparing boot sequence of this failing BBB versus an OK one. Until the EXT4 mounting, the only difference is the timing…

Regarding the origin of the failing BBB, the only thing I know is that it has been working for a long time, and then stopped working while being manipulated.

I cannot give up as I know that uboot can read the data, but I am very lost at how to setup the board in similar way as in uboot to upload the files… Any help would be appreciated.

Best regards,

Any idea ? Please :pray:
I really believe that observing this *- exactly 3 time - slower access to MMC at uboot - but working is the key to understand what’s wrong.
But I am not enough expert on eMMC to guess what this consequence means.

Did you find anything? I think my eMMC is corrupt and I don’t know how to fix it :dotted_line_face:

Unfortunately, no. I’m kind of frustated as I felt like I collected many clues through my tests to narrow the cause and find a fix.
Hopefully, you’ll be luckier.