Unable to Use SD Card on Jetson Nano eMMC Version – SD Not Detected

Hi everyone,

I’m trying to use an external SD card with my Jetson Nano eMMC version, but it doesn’t seem to detect the card at all. I followed standard instructions and attempted a method shared in this post:
Jetson Nano SD Card Can Use But Kernel Prompt Error

However, it still didn’t work in my case.

  1. lsblk Output – SD Card Not Visible

No external SD card device is shown:

lsblk.txt (1.2 KB)

  1. /dev/mmcblk* Devices – Only Internal eMMC Present
    Checked device nodes:
    all_blk.txt (400 Bytes)

  2. Kernel Logs Related to MMC – No SD Card Activity

Output of dmesg | grep mmc:

dmesg_grep_mmc.txt (2.2 KB)

Only the internal eMMC is initialized (mmc0). Nothing appears for mmc1 or any external card.

  1. Device Tree Source and Warnings When Converting DTB to DTS

I decompiled the DTB using:
kernel_tegra210-p3448-0002-p3449-0000-b00.zip (81.7 KB)

I got many warnings:
converting_dtb2dts_warnings.txt (29.9 KB)

What I Need Help With:

How to correctly enable or configure the external SD card interface on the eMMC version of Jetson Nano?

Am I missing a pinmux or GPIO configuration?

Any guidance or working examples from someone who has successfully enabled the SD slot on the eMMC version would be super helpful.

Thanks in advance!

Hi,

Are you the one who made your own carrier board or you bought it from some vendors?

Your questions are not able to get answered unless you clarify this first.

Hi,
I bought this carrier board, and at first, it had JetPack on it and worked fine. I accidentally removed the original JetPack, but I managed to reflash it. Now, the jetson doesn’t recognize the SD card, even though it worked fine before.

Please contact the board vendor or check the board vendor’s website to see if they provided any patch there or BSP for you to flash.

Just some quick explanation.

  1. The software that was pre-installed on your device was not a real pure Jetpack. It is a customized software provided by the vendor. Our default Jetapck does not support any sdcard slot on carrier board.

  2. I cannot answer you how to modify the software directly because it requires the hardware schematic info so that you could modify the software. Only the board vendor has such information.
    Generally, if a custom board vendor is selling you this thing, they should already provide a software that is ready for you to download. So actually it should not be you to do this work directly. We’ve seen lots of such cases before.

Incidentally, the manufacturer of that carrier board should provide the relevant device tree. Maybe directly, maybe as a patch to NVIDIA’s flash software, or maybe as rebranded flash software. Until you get that parts of the hardware won’t be found by the drivers.

Thanks for the explanation.

Yes, I saw that Waveshare provides a guide here:

I followed the instructions, but it didn’t help—still the same issue.

I also contacted Waveshare, but since they haven’t responded yet, I decided to ask here in case someone has experience with this.

Do you have any dmesg that is not grep by yourself? I think you just removed lots of useful logs.

Here’s the full dmesg log:

dmesg.log (79.0 KB)

Let me know if you need anything else.

Additionally, in the Waveshare wiki I mentioned earlier, there’s a section on booting from an SD card. The initial steps explain how to recognize the SD card by modifying the device tree. Here’s a summary of the key instructions:


  1. Install the Device Tree Compiler:

sudo apt-get install device-tree-compiler

  1. Decompile the device tree source:

If you’re using SDK Manager:

cd ~/nvidia/nvidia_sdk/JetPack_4.6_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/kernel/dtb
sudo dtc -I dtb -O dts -o tegra210-p3448-0002-p3449-0000-b00.dts tegra210-p3448-0002-p3449-0000-b00.dtb

If you’re using a resource pack:

cd sources_nano/Linux_for_Tegra/kernel/dtb
sudo dtc -I dtb -O dts -o tegra210-p3448-0002-p3449-0000-b00.dts tegra210-p3448-0002-p3449-0000-b00.dtb

  1. Modify the device tree:

sudo vim tegra210-p3448-0002-p3449-0000-b00.dts

Find the sdhci@700b0400 section and make the following changes:

Change: status = “disable” → status = “okay”

Add these lines:

cd-gpios = <0x5b 0xc2 0x0>;
sd-uhs-sdr104;
sd-uhs-sdr50;
sd-uhs-sdr25;
sd-uhs-sdr12;

no-mmc;
uhs-mask = <0xc>;

  1. Recompile the DTB file:

sudo dtc -I dts -O dtb -o tegra210-p3448-0002-p3449-0000-b00.dtb tegra210-p3448-0002-p3449-0000-b00.dts

  1. Flash the system:

If using SDK Manager:

cd ~/nvidia/nvidia_sdk/JetPack_4.6_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra
sudo ./flash.sh jetson-nano-emmc mmcblk0p1

If using a resource pack:

cd sources_nano/Linux_for_Tegra
sudo ./flash.sh jetson-nano-emmc mmcblk0p1

  1. Check if the SD (TF) card is detected:

sudo ls /dev/mmcblk*


Let me know if any of this needs clarification.

If you hotplug the sdcard when system already booted, will you see new log printed from the dmesg?

Your log looks like nothing is inserted.