Jetson tx2 racecar does not start teleport (ttyACM0 and ttyACM1 does not exist)

I have jetson tx2 racecar with environment:
L4T 32.2.1 [ JetPack 4.2.2 ]
Ubuntu 18.04.2 LTS
Kernel Version: 4.9.140-tegra
CUDA 10.0.326
CUDA Architecture: 6.2
OpenCV version: 3.4.0
OpenCV Cuda: YES
Vision Works:
Vulcan: 1.1.70

when I start teleport this error appears:

Device not found: IMU or VESC not found → /dev/ttyACM1 /dev/ttyACM0

as I understand , the problem in in ttyACM modules. they are missing and with I use

the output as shown in image:

I tried to install ttyACM modules as show in jetsonhacks:

Install ttyACM Module - NVIDIA Jetson TX Development Kits - JetsonHacks

unfortunately, installation did not complete because the module and kernel versions are different.

Is there any solution?

This would need other users to share experience. You may also refer to this topic:
Not able to get login prompt on ttyACM0 on jetson Tx2

The existence of the device special file (“/dev/ttyACM#” file name pattern) depends on the driver loading, and possibly modified with udev. This particular UART’s chipset uses the ttyACM# convention. Once this loads, it will show up as expected.

I don’t remember the specific kernel feature name for this, but if you compile the module yourself, and don’t use a precompiled binary for the wrong configuration and/or release version, then it should “just work”. The trick is to look up kernel compile, set the matching source code to the exact current kernel’s configuration (incuding the CONFIG_LOCALVERSION), and then build that module. Then this is just a file copy to the correct location (don’t install anything other than that module, and this is just a file copy, not a flash).

I would provide more information, but am currently not where I can research or look things up. You can always ask more about the kernel source or compiling. The default docs are for cross compiling, and it is simpler than it sounds, so don’t be discouraged.

Early versions of L4T did not have the cdc-acm module required to use the VESC and IMU.

You have a couple of alternatives. You can force the module that is in the repository to be inserted using modprobe, or compile the module from source with the correct version.

Did you try modprobe?

hi Mr. DaneLLL
I had tried this, the result was" cannot open /dev/ttyACM0: no such file or directory

Sounds good, Where can i find ttyACM0 file?

/dev/ttyACM0” is not a real file (it exists in RAM only). This is a device special file, and is the result of the driver being loaded and pretending to be a file. Add the tty-acm driver mentioned by @Kangalow, and the file will appear.

One method to get the driver is mentioned, that of building it from the kernel source. Official docs for your L4T release explain how to do this in the kernel customization section. It isn’t particularly difficult, but it sounds intimidating until you’ve done this once. The main thing is to configure the source to the existing configuration, which is by default the “tegra_defconfig” build target, combined with setting “CONFIG_LOCALVERSION” to “-tegra”. After that you’d build the “modules_prepare” target to propagate the config, and then it is a simple file copy from the built file to the module directory of the Jetson.

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