Столкнулся с необходимостью "закрепить" порт за микроконтроллером типа Arduino Nano/Uno и ESP32, особенно если кроме этих плат у вас есть другие usb устройства с виртуальным COM-портом, например такими как usb-ttl платы и др.
Создаем в каталоге /etc/udev/rules.d файл 99-usb-mk.rules со следующим содержимым:
# Fix Arduino (CH340) and ESP (CH9102)
ACTION!="add", SUBSYSTEMS!="usb", GOTO="END"
KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="55d4", SYMLINK+="ttyESP", MODE:="0660", GROUP="dialout"
KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="ttyARD", MODE:="0660", GROUP="dialout"
LABEL="END"
Теперь можно перезагрузить компьютер или ввести команду в консоли:
udevadm control --reload
Готово. Теперь к Arduino и ESP можем обращаться через /dev/ttyARD и /dev/ttyESP соответственно.
Ну и проверьте входит ли ваш пользователь в группу dialout.
ПС. К сожалению те же платы usb-ttl могут встречаться на аналогичных микросхемах что приведет к ложной фиксации порта.
ПСС. Добавление группы пользователю:
sudo usermod -a -G dialout $USER