CDC ACM USB Serial Device doesn't show up on ls /dev/tty*, can't access it

What do you see on your running system from “zcat /proc/config.gz | grep ACM” (these are various ACM features the kernel was or was not configured for)?

Actual procedure for building a 4.9 kernel shouldn’t be much different than building for a 4.4 kernel. The problem is that the article you saw has custom scripts for the older kernel. Learning to build a kernel module without a script seems complicated at first, but in reality is not as bad as it looks, and is worth knowing. The official documentation for your particular L4T release gives that information, but you can also ask here since some of the details may not always be clear.

Official documents explain cross compile of a kernel from a host PC (and kernel modules), but you can do a native compile from the Jetson and not worry about cross compilers.

This is also for an older kernel (to compile natively on a Jetson), but details shouldn’t be much different:
https://forums.developer.nvidia.com/t/tx2i-wifi-support/63839/2
…however, the tag used for “source_sync.sh” will need to be adjusted for your release. If your release is R32.3.1 (the latest release, verify with “head -n 1 /etc/nv_tegra_release”), then downloading full kernel source using source_sync.sh would use tag “tegra-l4t-r32.3.1”.

You only need a module, but I always advise that you try building a full kernel once just for sanity checking (the configuration matters, and you are more likely to find out about bad configurations from a full kernel build…but only install the module with a file copy, don’t bother installing the full kernel).

Note: When the module is inserted, and if the hardware is detected, then this will create the file in “/dev/”. Sometimes the expected file name is changed by udev, so if the device special file is missing, you might want to insmod while monitoring “dmesg --follow” to see if a rename has occurred.