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.
“/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.