Jetson Nano SD reader not working (SeeedStudio rev B01)

Hello community,

I have recently bought a Jetson Nano from SeedStudio (with pre-integrated OS). I have these references : nvidia jetpack version 4.6.4-b39, 4.9.299-tegra.32.7.3.

I have already read a lot of forums about this topic and I have seen which .dtb file I must modify and what adress, but it seems that nothing appens when one compile with dtc method. But also, it seems that the extlinux file retrieves a “hardcoded” .dtb file (There isn’t even an FDT line in the file). Can you confirm this 2 things ?

The aim is to add flash memory to my Jetson card, I want to avoid flashing my SD card with a new OS and taking the risk that the card won’t turn on anymore (besides I don’t know how to reset it…).

Help would be really appreciated I am really stuck since 2 months on this issue and I am pretty new with this product. (+ I have other problems with the product that I’m working on at the same time)

Best regards,
nono_o

Seeed Studio would provide the device tree file (the .dtb file). Seeed will either provide a complete software for flashing by using an Ubuntu 18.04 host PC, or else “patches” to apply. Without that some hardware won’t work.

The SD card on a dev kit is mounted directly to the module, but on third party carrier boards you will have eMMC memory, and the SD card will be on the carrier board. One implication is that the device tree must tell drivers where and how to use the SD card at the new location. The other implication is that a “default” flash will be for putting the operating system on the eMMC, and any published SD card install from NVIDIA will not work. There are ways to flash such that the o/s goes to the SD card, but that is a modified instruction which Seeed would provide. Using NVIDIA’s software for flash, without modifications, will leave parts of the system not working.

For reference, if you do need to use the NVIDIA software (to be patched), then you can find L4T releases (L4T is what gets flashed, and is Ubuntu plus NVIDIA drivers) herhttps://developer.nvidia.com/linux-tegrae:

JetPack/SDK Manager is just a front end to flashing software, and it has a version tied to a specific L4T release. You could find this from this URL:

Note that since this is an eMMC Nano, that you will only be able to use L4T R32.x or earlier.

Your SD card will not be used during boot. There is probably an initrd flash available by Seeed which can be used for booting from the SD card. You’d probably need to modify the SD card. Alternatively, most of the SD card (the parts you probably care about) could be used to create an o/s image that runs from eMMC (then SD card could be used for extra space). No matter what though, I recommend clonign the SD card, or the partition of the SD card. These are different from eMMC content, and if you have a clone to work with, then you don’t have to worry about losing original content and you are free to experiment without worry.

On the Linux side, do you have a lot of free disk space? Images, at minimum, take up the size of the SD card (or partition if you clone a partition). Usually “df -H -T” informs about filesystem availability.

Hello,
Thanks for your quick reply.
I’ll try to answer you in order.

My Jetson Nano has direct on-board flash memory (15 GB) and was delivered with the OS already installed on it. I bought an SD card to add extra space.

So I don’t quite understand your first and second paragraphs. When I add my SD card it is not detected. So I looked at my dtb file “tegra210-p3448-0002-p3449-0000-b00.dtb” and I tried to change the status of the address sdhci@700b0400 (as advised on other NVIDIA conversation topics) but nothing is changed when I look at the file in the directory “/proc/device-tree/sdhci@700b400”.

I don’t want to flash my OS onto the SD card, I just want it to be able to be used for extra storage space (although I know that putting my OS on it and using it as a boot would work too). So how do I do this?

Regarding your penultimate paragraph, I am confused. What do you mean by “You’d probably need to modify the SD card.” Besides, I don’t understand what you mean by “cloning” the SD card, it’s blank and I want to dedicate it to the Nano card.

Finally, I’ve attached a file with the characteristics of my filesystem
disks (449 Bytes)

Thank you in advance for your time and your reply.

Regards,
nono_o

Adding extra space is easy if you want to mount the SD card somewhere like “/usr/local” or “/home”. Actually booting from SD card is a different story. Most of the space from development tools is taken up on “/usr/local”. Are you ok with taking over that content with SD card? Or are you trying to replace the entire operating system onto the SD card?

Incidentally, when NVIDIA sells a Nano developer’s kit, it does not have the on-board flash memory (eMMC memory). In your case, there are a lot of partitions on that eMMC, and except for one, this is all the equivalent of what a PC would have as BIOS and boot content. This content cannot be put on SD card. Moreover, that content has the equivalent of a “pointer” to the final boot device, and normally this points to the rootfs (APP) partition on the eMMC.

The software you see for Jetson Nano developer kits expects that there is no eMMC. Instead, there is QSPI memory which contains what the eMMC “boot and BIOS style content” would be on your eMMC model. The SD card there only holds the rootfs/APP partition with the o/s on it. The eMMC rootfs/APP content is “almost” the same as the developer kit SD card partition. Boot content changes considerably between the two models, and so it is important to know that you cannot flash eMMC (on-board memory) models with NVIDIA’s software unless it has been adapted to this.

Device trees are a big part of adapting the different models. Modules, even when they are the same model, have a lot of options as to which pin can lead to which function on the module. Your module is also not the same as the developer’s kit module due to eMMC and due to the placement of the SD card slot. If the device tree is not correct, then the part of the hardware the device tree describes will not be found, or else perhaps it is found, but not functional.

On a developer’s kit the SD card slot is directly mounted to the module. On an eMMC model, the SD card slot is on the carrier board itself. The drivers and the firmware differ.

You should know that the device tree can be read either (A) from a partition, or (B) from a file in “/boot”. The “/boot” content normally takes priority, but if that content is not present, then it is ignored and boot moves on to the signed partition content. The same is true of the kernel, which has both a signed partition and a “/boot” file, whereby “/boot” content takes precedence over the partition. An exception is that if security fuses are burned, then only signed partitions are allowed.

A bigger complication is that if you wish to boot from the SD card, and not just add it as a mount point somewhere other than “/”, is that the driver and device tree must be correct during boot stages, and an eMMC model does not normally set that up unless you’ve taken steps to do so. In that case you have to use Seeed Studio’s software to make that available.

Most people are asking about Nano developer kits, and they run rootfs entirely on SD card. This is what confuses many users of eMMC models. There is no need to clone SD card since your o/s is on the eMMC (but you could clone that as a backup).

Are you trying to boot all operating system content from the SD card? Or are you trying to simply expand on a mount point? The former requires flashing with Seeed Studio’s software, the latter is fairly simple. This will never behave like an ordinary PC though since it does not have a BIOS and cannot simply pick which device to boot from without special setup. Incidentally, “/dev/mmcblk0p1” is the rootfs of an eMMC, but if an SD card is used, it is “/dev/mmcblk1p1” instead.

Answer :

Hello,
Thanks again for your answer.
I am defenitly not trying to boot from my SD card and I don’t want to put my OS on it.
I just want to use it as an extra storage space in addition to the eMMC memory I already have.
You say it’s fairly easy but I haven’t managed to do it. I bought an SD card and formatted it (first in FAT32 then finally in ext4).
But when I inserted it in my built-in Nano card reader, it wasn’t detected.
Having never done this before, I don’t know what I need to do to get my SD card detected.

That’s why I looked on the NVIDIA forums and the community was talking about changing the status of the port address in the appropriate .dtb file (see my previous post).
I looked at these links (especially the second) :

(no matter what I do, the kernel logs don’t show that the SD card is being read)

Thanks for your explanations, I understand certain things.
Concerning my .dtb file, no matter which file I modify in /boot, nothing different happens and none of them is called at startup.
Does this make sense with your explanation?
It is indeed confusing because I did not know that eMMC’s users and developper kit’s users would have such differences.

So, to use my SD card you’re saying I’d just have to mount it in a directory? I’ll try to do that and get back to you.

I’ve opened another topic with another problem, can you have a look?

After your explanations, I deduce that the problem would also come from the fact that I’m using a model with eMMC and not an NVIDIA model.
Can you confirm this? Can you point me in the right direction?

Thank you for your precious time, I really appreciate it.
Best regards,
nono_o

Hi,

Just to clarify it in another way:

  1. Is the sdcard slot on the carrier board or the module? If you are sure you are using emmc module, then the sdcard slot should be on the carrier board.

  2. If the sdcard slot is on the carrier board, then you should ask who is the board vendor. If you are the one made this board, then I need you to provide schematic so that I can tell you what to modify.
    If you are not the board vendor, then you should contact the vendor and they shall directly give you a existing modified BSP and you should use that to flash your board. It is not your responsibility to enable it by yourself.

Hi WayneWWW,

I have bought my Jetson board from this website :

Therefore I think that my SD card reader is on the carrier board.

Should I contact SeedStudio?
Beside, thinking about the post I’ve just written, I can’t mount my SD card because it’s not recognised by the hardware.
And according to linuxdev, the boot is done in my case thanks to a “QSPI memory” part which then mounts the rest.
How do I add the modified BSP in this case?

Best regards,
nono_o

The block device list shows mmcblk0p1 as “/”, so it seems to be eMMC. So QSPI probably does not matter, and since you don’t want to replace the o/s, it does simplify it.

As to detection, can you boot the Jetson normally, and start running “dmesg --follow”? Then, tell us what log lines show up as you insert the SD card.

Next, with the SD card plugged in, what do you see from:
lsblk -f

and from
blkid | grep -v mmcblk0

Hello linuxdev,
Thanks for your quick answer.

Regarding your first instruction, nothing happens when I plug my SD card while running “dmesg --follow”, I tried it twice. Here is the file (kernelmess).
kernelmess (57.2 KB)

About your second instruction, runned once the SD card plugged, here is the data (devices).
devices (1.9 KB)

Finally, I got no answer from the last instruction.

Best regards,
nono_o

We need to know which log lines occurred as a result of the SD card plugin. Having the entire kernelmess makes that difficult since I cannot watch the log lines as the SD card plugs in (this is why we use “--follow” to the command “dmesg”…it shows new log lines as they occur). I see some regulator log lines, and I don’t know if those occurred prior to the SD card plugin, or after.

The “devices” file helps though, it definitely does not show the SD card. This does not answer the “why” part though.

Incidentally, do you have a different SD card you can test? I’m quite interested in what new log lines show up in “dmesg --follow” due to SD card insert.

Hello,
I am sorry for the confusion. I sent you the full kernel log just as a proof nothing happened when I plugged my SD card. And I thought maybe you could see something else in here…
I kept it running while I plug and and unplugged my SD card few times. Nothing on the log. It is not seen by the kernel.
I don’t think the problem comes from the SD card itself, it works on two other devices, and it follows the features of nvidia tutorial itself :
Get Started With Jetson Nano Developer Kit | NVIDIA Developer.
to quote: microSD card (32GB UHS-1 minimum recommended)
That is what I have. I also tried various format (FAT32, etx2, ext3, ext4) and nothing changed.
In my opinion, the issue comes from the Jetson board. Drivers ? DTB file ? something like that.
I tried this tuto provided by SeeedStudio : J101 Enable SD Card | Seeed Studio Wiki"
But the step 3 does not work :
sudo /opt/nvidia/jetson-io/config-by-hardware.py -l
Command not found.

Thanks again for your help, I really appreciate it.
Best regards,
nono_o

Since this is an eMMC model, the device tree has to be altered for the driver to see or find the SD card slot. I think you are going to need to flash again with the flash software provided by Seeed. QSPI probably is not relevant in this case with eMMC. The NVIDIA docs and flash software won’t have this information since there is no way for NVIDIA to know what electrical layout Seeed chose. Much will be the same, but significant parts (like SD card firmware) will differ.

On the other hand, the URL you gave is about a device tree overlay. That happens to be the part which makes it possible for the drivers to see the SD card slot. An overlay, if supported in your release, can be added without flash. If you want to save the existing installation, can you try their procedure again? If that does not work, can you copy and paste any errors during the install? If there are no errors, but boot simply does not make the SD card visible, then you could state that as well.

Otherwise, you’re going to need to flash with Seeed’s software. That means using their software from the start, and not using the NVIDIA flash software unless Seeed states that this is ok. Mainly what we are doing is trying to set up Seeed’s device tree, either by flash or via overlay.

Hello,
SeeedStudio did not provide any software but SDK manager.
Regarding the wiki I just gave you in my previous post, everything works fine (step 1, 2) and during step 3, the last instruction does not work as mentionned previously. Here is the instruction and the Error returned :
sudo /opt/nvidia/jetson-io/config-by-hardware.py -l
Command not found.

And obviously my card is still not read.
So I am still looking for a solution.

Is it correct that the SD card reader is on the carrier board, and not on the module? This is quite important.

Hello,
As it is mentionned in the product’s description:
“we have included the microSD card slot on the carrier board of reComputer J1010.”
"Besides the Jetson module, reComputer J1010 also includes J101 carrier board with onboard microSD card slot "
thanks for your help.
nono_o

Hi,

Just make a summary. What you are referring to now is the key to make your sdcard work. Before you finish the steps provided by their website, your sdcard won’t work.

As for your current issue,

sudo /opt/nvidia/jetson-io/config-by-hardware.py -l

Does this file exist in your jetson or not? You don’t need to keep telling me the command is missing. Just tell if this file is there or not.

Hello WayneWWW,
thanks for your reply.
I can get to “/opt/nvidia” but I don’t have the directory “jetson-io”. Instead i have 3 directories: “l4t-bootloader-config” “l4t-usb-device-mode” “vpi1”
Also, I did not find the “config-by-hardware.py” file in my system.
Sincerely,
nono_o

Which version of jetpack release are you using?

According to “/etc/nv_tegra_release”, I got Jetpack 32 (release), revision: 7.3.

EDIT:
According to “sudo apt show nvidia-jetpack”, I got 4 records, but the first to appear is Jetpack version 4.6.4-b39.

Sorry for the late response, have you managed to get issue resolved or still need the support? Thanks