Skip to content

eMMC / SD Card Troubleshooting


lsblk does not show the expected device

Identify eMMC vs SD card

lsblk -o NAME,SIZE,TYPE,TRAN,MODEL
Device TRAN MODEL
eMMC mmc (empty)
SD card mmc (vendor string, e.g. SD32G)
USB stick usb (vendor string)

Device numbers vary between boards

On some carrier boards eMMC is mmcblk0, on others mmcblk2. Always verify with lsblk before flashing — never assume.

SD card not detected at all

  • Re-seat the card.
  • Try a different card — some cards are not compatible with all readers.
  • Check that the card is formatted (any filesystem) to confirm the reader sees it.

Flash completes but board still won't boot

Work through this checklist in order.

1. Wrote to disk, not partition

You must write to the raw disk device:

# Correct
sudo dd if=image.wic of=/dev/mmcblk2 ...

# Wrong — writing to a partition destroys the partition table
sudo dd if=image.wic of=/dev/mmcblk2p1 ...

2. Write buffers were flushed

sync

Run this immediately after dd and wait for the prompt to return before removing the media.

3. Boot mode jumpers are set correctly

After flashing eMMC, the board must be in eMMC boot mode. See your board's Hardware Reference Manual.

4. Verify image integrity

Check the image before flashing:

zstd -t <image>.wic.zst        # test archive integrity

Or compare checksums:

zstdcat -cd <image>.wic.zst | md5sum

Flash fails or is interrupted mid-way

Power supply instability

An unstable supply during a long dd or UUU session can cause write errors. Use a dedicated power supply — do not power the board through a USB hub.

Retry safely

Both dd and UUU can be retried from scratch. The eMMC will be overwritten cleanly from sector 0.

Check for write errors in dd output

Use status=progress to see transfer rate and detect stalls:

zstdcat -cd <image>.wic.zst | sudo dd of=/dev/mmcblk2 bs=10M status=progress && sync

A transfer rate that drops to 0 and hangs indicates a hardware or cable problem.


eMMC not detected at all (not shown in lsblk)
  • The eMMC device should always appear, even if blank. If it does not:
    • The BSP may be using a different kernel device path — check dmesg | grep mmc.
    • The eMMC may be damaged or the board may have a hardware fault.
    • Try booting a known-good SD card image to confirm the eMMC controller initialises.
dmesg | grep -i mmc

A healthy eMMC will show lines like:

mmc2: new HS400 MMC card at address 0001
mmcblk2: mmc2:0001 ...