ACM devices work if you have the driver. What do you see from this? zcat /proc/config.gz | grep 'USB_ACM'
(I am assuming a USB device)
If it is “=y” or “=m”, then the driver is present. If not, then the driver can be added. It isn’t really the NX which does or does not support this, it is the Linux o/s…and especially on embedded systems you can’t expect all drivers to be present (e.g., if there is a driver for an AMD desktop graphics card it would serve no purpose to have the driver, it just takes up space).
Often a UART with drivers present will fail if the speed and other settings are not correct. For example, if the UART defaults to 9600 baud, then a default of 115200 baud will fail, but it won’t be a hardware or driver failure.
If any part of the UART works at least part of the time, then probably the UART driver is itself working. You mentioned RNDIS, which is a network protocol, and so I am thinking perhaps this is a networking setup issue and not a UART issue. For example, security can get in the way.
If you use the device with a working case, e.g., you mention the TX2, does a network device show up under ifconfig which is specific to the M300?
We were able to get the ACM0 device to appear when flashing the Xavier with Balena which narrows the problem down to Jetpack and removes the M300 is the culprit (at least in my estimation).
I don’t have the Xavier in front of me again, however it doesn’t seem to make sense that network is the issue if dmesg doesn’t even report the USB device as plugged in. UART works great and we get a USB0 device when we connect the drones UART via USB-A.
What speed is the serial UART running at? Above 115200 two stop bits need to be used. The clock is not able to be set at an exact rate of the higher speeds and the two stop bits improve the amount the clock can be off by and still work.