Can JETSON TX2 connect a storage device(such as an NVMe SSD) through PCIe interface?

  1. For TX2 or TX1, if I connect a storage device(such as an NVMe SSD) through PCIe interface, can I see the device under /dev/ directory?
  2. If the first answer is yes : can I choose the PCIe storage device as our OS disk?
1 Like

You might need to enable a kernel config for NVMe, but otherwise it should work. I do know of one person having issues though, so it might depend on the model of NVMe.

As for using PCIe for storage, I don’t think the boot loader can recognize this…but I may be wrong about that (I don’t have one to test). So long as the “/boot” is on eMMC you could do this, so even if U-Boot does not boot to a PCIe drive switching from eMMC (“/boot”) after kernel load (root partition or “/”) would probably work ok.

1 Like

Thanks for your reply.

Two more question:

  1. What devices have you connect to PCIe interface and works OK?
  2. If a graphics card can work through PCIe interface?

These may help me confirm my original question.


I have tested NVMe SSD through PCIe interface on TX1. As linuxdev suggested, we need to select NVMe driver in config file (by default its not selected).


1 Like

I’ve only connected a PCIe x1 (PCIe v2) network card using a Realtek chipset (it works).

In theory a graphics card should work if you have a driver for it on the arm64/aarch64/ARMv8 architecture. The integrated graphics connects directly to the memory controller, and thus the driver for built-in GPU does not work over PCIe. NVIDIA publishes drivers only for desktop PC architectures, so an add-on NVIDIA video card won’t be an option unless it works with the Nouveau software-only driver (and I don’t know if it will). I don’t actually know of any video cards with published hardware acceleration on arm64/aarch64 other than the integrated video of the Jetson (though someone might know of one).

1 Like

Samsung PM961 NVMe M.2 2280 drive seems to be working fine with Jetson TX2 dev board (kernel 4.4.38) via $5 PCIe (4 lanes) to M2 adapter card.


With the same adapter board as @albertr’s one, I have connected a Corsair MP500 NVME SSD.

The only thing is that it needs:


in kernel boot args, otherwise there are a lot of AER error messages when it enables gen2 speed:

Jul 27 12:43:15 tegra-ubuntu kernel: [    8.991863] tegra-pcie 10003000.pcie-controller: speed change : Gen-1 -> Gen-2
Jul 27 12:43:15 tegra-ubuntu kernel: [    8.992025] pcieport 0000:00:01.0: AER: Corrected error received: id=0020
Jul 27 12:43:15 tegra-ubuntu kernel: [    8.992037] pcieport 0000:00:01.0: PCIe Bus Error: severity=Corrected, type=Data Link Layer, id=0008(Transmitter ID)


Works fine now:

sudo hdparm -t /dev/nvme0n1

 Timing buffered disk reads: 1948 MB in  3.00 seconds = 649.31 MB/sec

It works fine as root device (had to make kernel with builtin CONFIG_PCI_TEGRA instead of module, CONFIG_BLK_DEV_NVME being already builtin).

1 Like