The printer controllers use TTL logic 0-0.8 V, USB has 0-5.0 V. The USB2TTL or USB2UART adapter is used for coordination. It can be built into the printer controller board or USB cable. This cable cannot be replaced with the оrdinary USB cable.
An example of such a cable from Samsung:
2. If the new xxxx: yyyy ID is listed and the dmesg message says that the kernel cannot select a working module for it, try selecting it manually from:
% find lib/modules/ -type f -name \*serial\*.ko
lib/modules/4.9.255-sun50iw9/kernel/drivers/usb/gadget/legacy/g_serial.ko
lib/modules/4.9.255-sun50iw9/kernel/drivers/usb/serial/symbolserial.ko
lib/modules/4.9.255-sun50iw9/kernel/drivers/usb/serial/usbserial.ko
^^^^^^^^^^^^^
lib/modules/4.9.255-sun50iw9/kernel/drivers/usb/serial/wishbone-serial.ko
lib/modules/4.9.255-sun50iw9/kernel/drivers/usb/serial/safe_serial.ko
lib/modules/4.9.255-sun50iw9/kernel/drivers/usb/serial/usb-serial-simple.ko
lib/modules/4.9.255-sun50iw9/kernel/drivers/usb/serial/qcserial.ko
% find lib/modules/ -type f -name \*acm\*.ko
lib/modules/4.9.255-sun50iw9/kernel/drivers/usb/gadget/legacy/g_acm_ms.ko
lib/modules/4.9.255-sun50iw9/kernel/drivers/usb/class/cdc-acm.ko
^^^^^^^^^^^
For example:
% sudo modprobe cdc-acm
If dmesg reports that the kernel has created an interface for your printer, such as /dev/ttyACM0, it will need to be write in the Octoprint configuration. https://docs.octoprint.org/en/master/configuration/config_yaml.html#serial
Add new udev rules to automatically load the module
/etc/udev/rules.d/50-My3DPrinter.rules
#
# Add USB VID/PID for Your 3D printer
#
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", ATTR{idProduct}=="yyyy", RUN+="/usr/bin/modprobe usb-acm", RUN+="/bin/sh -c 'echo $attr{idVendor} $attr{idProduct} > /sys/bus/usb-serial/drivers/generic/new_id'"
#
# Construct a symlink to the TTY generated for the printer.
#
SUBSYSTEM=="tty", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="yyyy", SYMLINK+="my_3d_printer"