"No such file or directory ttyACM0" on Jetson AGX Orin Developer Kit

Hello,
I have a Jetson AGX Orin Developer Kit and I am trying to establish a communication between said Orin and a DJI Matrice 300 drone.
In every guide I came across everyone was mentioning the ttyAMC0 port, both from NVIDIA and DJI.
As previously stated in the title, the problem is that, said port is not found on my machine.
After numerous tries in which I exchanged cables and devices, the problem still persists.
In particular, when I run the command:
ls -l /dev/tty
the output is:
tty tty12 tty17 tty21 tty26 tty30 tty35 tty4 tty44 tty49 tty53 tty58 tty62 ttyAMA0 ttyp3 ttyp8 ttypd ttyS2 ttyTHS3
tty0 tty13 tty18 tty22 tty27 tty31 tty36 tty40 tty45 tty5 tty54 tty59 tty63 ttyGS0 ttyp4 ttyp9 ttype ttyS3
tty1 tty14 tty19 tty23 tty28 tty32 tty37 tty41 tty46 tty50 tty55 tty6 tty7 ttyp0 ttyp5 ttypa ttypf ttyTCU0
tty10 tty15 tty2 tty24 tty29 tty33 tty38 tty42 tty47 tty51 tty56 tty60 tty8 ttyp1 ttyp6 ttypb ttyS0 ttyTHS0
tty11 tty16 tty20 tty25 tty3 tty34 tty39 tty43 tty48 tty52 tty57 tty61 tty9 ttyp2 ttyp7 ttypc ttyS1 ttyTHS1
If I run the command “dmesg --follow”, nothing happens when I connect a devide on the micro-usb port (DEBUG UART).
N.B. My system has:
Jetpack 5.1 (L4T 35.2.1)
Ubuntu 20.04.5 LTS

Hi filippo.papa,

Please help updating to R35.3.1 and apply the following overlay package for AGX Orin devkit.
Jetson Linux 35.3.1 | NVIDIA Developer

How do you connect the AGX Orin devkit with your drone?

microUSB port on the devkit is used for debug, it should connect to your host PC to output the serial console log.
NVIDIA Jetson Orin - Serial Console - RidgeRun Developer Connection

For the communication with the drone, it seems you would need USB-A on the devkit connecting.

1 Like

Hi, thanks for the fast reply.

I can update to R35.3.1, but I am also using the docker “l4t-pytorch:r35.2.1-pth2.0-py3” found at: NVIDIA L4T PyTorch | NVIDIA NGC , so before updating, I would like to confirm with you that nothing will break on that part.

For the connection, I followed this guide: https://developer.dji.com/onboard-sdk/documentation/quickstart/device-connection.html .
I bought an OSDK Expansion Module, found here: Matrice 300 RTK OSDK Expansion Module - DJI Mobile Online Store (United States) . From there, I connected the GND, RX and TX pins on the Orin with the respective ones on this module as well as a micro-usb cable that I thought was the one I should be using for this. I also tried with a USB-A port, with better results (at least ttyUSB0 was visible) but still no avail.

I also found this guide to running DJI code samples here: Run The Sample - DJI Onboard SDK Documentation and they specifically ask in the UserConfig file for acm_port I cannot see on my Orin.

Hi @filippo.papa, I can’t comment on your questions about the serial port, but l4t-pytorch:r35.2.1-pth2.0-py3 container should work fine on JetPack 5.1.1 (L4T R35.3.1). We’re in the process of publishing the updated L4T ML containers for R35.3.1, but I haven’t had an issue running the R35.2.1 containers on it. The updated Dockerfiles and build scripts are also available at https://github.com/dusty-nv/jetson-containers should you want to rebuild them for R35.3.1 yourself.

Thank you for the reply @dusty_nv.

Good to know, I will probably update my Orin then. In the meanwhile I’ll also wait to see if someone could help me regarding the serial port.

What do you mean about “avail”?

From the guide of DJI, it seems you want to use Jetson device to watch the serial console output from your drone. Is that correct?
You need a USB to TTL cable, connecting TXD/RXD/GND on the drone and USB-A on the Orin.
Please check which node appear under /dev after you plug in USB-A to the Orin or and log in dmesg.

With no success.

Yes, there are two methods, one of them is the one described by you. I just tried again and under /dev the only changes are the addition of /serial and /ttyUSB0 (as I noticed the last time).

This is the main problem, I can’t see this port with this kind of connection and I need it to run their samples.

I think it should be this port. Have you tried to open this serial?

There seems no this kind of configuration in Orin. Have you tried to use it on the Ubuntu host PC and it worked?

Yes, this one works, but it’s not the one I have problems with. I need the ttyACM*.

Yes, I have tried and it does work. Also the port I need is quoted in the guide you posted too: NVIDIA Jetson Orin - Serial Console .

What’s the difference between /dev/ttyUSB and /deb/ttyACM* for you?

Do you mean that both /dev/ttyUSB0 and /dev/ttyACM* showed on your host PC if you connect the serial TTL cable from host PC to your drone?

The /dev/ttyACM* in that guide is used for watching the serial console log of Orin from the host PC.
In your case, it seems you want the Orin could be the role of host PC to watch the serial console log of your drone. Is that correct?

To run DJI Samples, I need the ttyACM* port. It is a required field in their UserConfig file. After your first message I have tried to put the ttyUSB0 instead, but it does not work. It gives me an error message about the Missing ACM Link. So I can’t use other ports.

I also tried to link the drone with another Ubuntu machine and there was no problem there: the ttyACM* port were visible, as they should on the Orin (since the guide that you posted also talks about these ports).

No, maybe I misunderstood what you meant with Host PC. I meant that on another Ubuntu machine I was able to see the ACM port.

I do not know why, but DJI needs this port to run their samples and I am not able to see this port on my Orin, whatever I try to connect to it.

How do you connect another Ubuntu machine to your drone with /dev/ACM0 appearing on that Ubuntu machine?

Do you have any photo of your connection setup?

Hello @KevinFFF,

After I followed your suggestion about updating the Orin to R35.3.1, the port ttyACM0 is now finally visible. Same for the ttyUSB0.

Thanks.

1 Like

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