Orin Nano PCIe Endpoint mode: Can't create symbolic links

Hi everyone,

I’m currently trying to make one of my two Jetson Orin Nano Devkits act as a PCIe endpoint. I was following the instructions on this page:
https://docs.nvidia.com/jetson/archives/r36.3/DeveloperGuide/SD/Communications/PcieEndpointMode.html#flashing-pcie-as-endpoint-on-a-jetson-orin-nx-nano-series-system
I am using an SD card and somehow I wasn’t able to do the flashing as it was described on this page, which is why I used the jetson-disk-image-creator tool and made an SD card image to be flashed with Etcher instead (I was following this guide here: Flashing Support — Jetson Linux<br/>Developer Guide 34.1 documentation ).

Booting and everything else seemed to work fine. Now to my problem: I can’t create the symbolic link required to setup pcie_ep (this command:

ln -s functions/tegra_pcie_dma_epf/func1 controllers/141a0000.pcie-ep/

). The error I get when running this command is: “ln: failed to create symbolic link ‘controllers/141a0000.pcie-ep/’: No such file or directory” Also, the controllers directory under

/sys/kernel/config/pcie_ep/controllers

is empty. I ran the modprobe command with the -v option (verbose output) and the --first-time option to see if the module was inserted successfully. I think that It was indeed correctly inserted, because when running the modprobe command for the second time, it says: “modprobe: ERROR: could not insert ‘pci_epf_dma_test’: Module already in kernel”.
Furthermore, I was reading through the logs of the jetson-disk-image-creator and I found the ODMDATA config parameters being used in the script, so I assume the flashing config should have worked?

Has anyone had the same problem and knows a solution for it? I’d appreciate any help. Thanks!

There are some confusing points that need to clarify first before trying anything. Otherwise it is just in vain.

  1. I’m currently trying to make one of my two Jetson Orin Nano Devkits act as a PCIe endpoint

If you are talking about Orin Nano devkit board from NVIDIA, then I really have no idea what you are doing because there is no PCIe slot on it to do what you want to try.

  1. PCIe Endpoint Mode — NVIDIA Jetson Linux Developer Guide 1 documentation

Unfortunately, the steps to run that “ln -s functions/tegra_pcie_dma_epf/func1 controllers/141a0000.pcie-ep/” is for Orin AGX but not Orin NX/Nano. I will update the document that can adopt two cases altogether.

However the point is still same for (1). You are not able to do this on Orin Nano devkit…

Thank you for your reply.
So the idea was to use an m.2 connector shield and a OCuLink Connection to connect both of the devkits together (using this: Delock Produkte 64106 Delock M.2 Key M zu 1 x OCuLink SFF-8612 Konverter ). And, judging by this page (PCIe Endpoint Mode — NVIDIA Jetson Linux Developer Guide 1 documentation ), I assumed that the Orin Nano must have any way to run as PCIe endpoint.
Is there still no way to get this working? Even if there might a work-around for the missing PCIe slot?

It is the hardware side that has limitation.

The software side has no limitation.
The document only has one different point between Orin AGX and Orin NX.

141a0000 is for PCIe C5 controller.
14160000 is for PCIe C4 controller.

C5 does not exist on Orin NX/Nano. That port and controller that can run as EP on Orin NX/Nano is C4.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.