M2 drive not showing

Hi, I have two Jetson AGX - one is running Ubuntu 18.04 installed with SDK manager. The other is running a custom distribution built with Yocto. Both have a Kingston M2 drive plugged in.

On the Ubuntu Jetson, lspci gives me the following output:

PCI bridge: NVIDIA Corporation Device 1ad0
memory controller: Kingston Technology Company
PCI bridge: NVIDIA corporation Device 1ad0
SATA controller: Marvell Technology Group Ltd"

and ls /dev | grep nvme gives me:

nvme0
nvme0n1

On the Yocto built Jetson, lspci gives me:

PCI bridge: NVIDIA Corporation Device 1ad2
Ethernet controller: Intel Corporation I210 Gigabit Network Connection

and ls /dev | grep nvme gives me nothing.

Does this suggest I’m missing something on the Yocto built Jetson before I can use the M2 drive? Or do I need to mount it manually somehow?

Any help appriciated!

You may check kernel support of NVME and compare:

zcat /proc/config.gz | grep NVME | grep -v NVMEM

Both devices give the following:

CONFIG_NVME_CORE=y
CONFIG_BLK_DEV_NVME=y
# CONFIG_BLK_DEV_NVME_SCSI is not set
# CONFIG_NVME_RDMA is not set
# CONFIG_NVME_TARGET is not set

It could be that Yocto has different device tree setting which leads to kernel /pcie driver not able to detect that drive.

Also, when you run Yocto, is it stiill on AGX devkit or it is custom board?

Totally forgot to mention that. It’s tucked away inside a box, so I keep forgetting, it’s actually a Connectech carrier board.

And regarding the device tree, this is what I’m afraid of. I’ve no idea how to fiddle with those settings so I’m a bit stuck here. Was hoping I just didn’t mount the M2 drive properly, but it seems this would take a little bit more work to fix.

Hi,

Are we talking about both cases are on the ConnectTech board or only the Yocto case is on ConnectTech board?

Only the Yocto one has a ConnectTech board.

Then what get flashed to the board? A custom board always needs a customized BSP/device tree. The board vendor should provide it.

SDKM cannot flash such board. Even if it can flash, we don’t guarantee the functionalities.

Not sure what get flashed to the board, I assumed everything is included in the Yocto build which another company build. I’m pretty sure it’s a customized device tree. I could possibly dig out the information - problem is I’m not really sure what to look for since I’m pretty new to this.

Just wanted to make sure it wasn’t an easy fix I overlooked - like mounting the device somehow. But I guess output of the commands I posted suggests that the board is NOT setup to detect an M2 drive.

Hi,

I really don’t think this could be done by a end user. The debug of why a PCIe device may require kernel knowledge and also we may need to check the schematic of this carrier board.

As you are not the board vendor, it is unlikely you would have the schematic…

It is not related to any “mounting device”. The detection of a device is step by step. First, the lowest hardware interface needs to detect it. In your case, it means lspci shall see this device first. Afterwards it is device driver, for example, for nvme, the nvme driver needs to be enabled. That was what Honey_Patouceul tries to ask.

As your lspci does not have it, there is no need to check if nvme driver is missing.

A basic check here.

Please dump the dmesg of your devkit and the ConnectTech board.

Getting off topic I guess, but shouldn’t there be a file or directory named “dmesg” inside /var/log?

I’m not able to find that on either system. In short, how do I share dmesg in this thread?

dmesg is a command. Open a terminal on your jetson and run this command. Attach those two files here.

https://man7.org/linux/man-pages/man1/dmesg.1.html

Ubuntu dmesg log:

log1.txt (73.6 KB)

Please also attach the log from devkit.

Oh sorry. I just realized this is devkit log.

Why is this devkit log not using pure jetpack? The DTB has been modified.

On your devkit, pcie 14180000.pcie is enabled to detect the nvme drive.

But on ConnectTech board, this controller is not enabled.

Without the schematic, I cannot tell if they are also using this controller for their nvme slot. Or it is from something else.

It should just be flashed using SDK manager - JetPack 4.6.1 if I remember correctly. Don’t remember altering it in any way. I did however install this:

in order to use the cameras.

The top line from dmes | grep pcie “Adding device 14180000.pcie to group 0” is missing from the Yocto built jetson - is this how you can tell it is not enabled?

I might be able to get some info on this if I get some help at my work place. I will get back to you with that…

Assuming it’s “just” a question of enabling it - is this something that’s easily doable?

The top line from dmes | grep pcie “Adding device 14180000.pcie to group 0” is missing from the Yocto built jetson - is this how you can tell it is not enabled?

No, I checked the keyword “nvme” and then go back and trace which pcie controller is enabling this device. Turns out it is 14180000.

Actually I think you can report ConnectTech their board cannot detect NVMe drive. They should tell you how to do.