Я пытаюсь получить доступ к микроконтроллеру ESP32, подключенному через USB к / dev / ttyUSB0 на моем компьютере Kubuntu 18.04, но получаю ошибку с отказом в разрешении:
SerialException: [Errno 13] could not open port /dev/ttyUSB0: [Errno 13] Permission denied: '/dev/ttyUSB0'
Мое имя пользователя находится в группе дозвон как в / etc / group, так и в / etc / gshadow, и я перезагрузился после добавления членства в группе дозвон.
$ sudo grep dialout /etc/group /etc/gshadow
/etc/group:dialout:x:20:steve
/etc/gshadow:dialout:*::steve
$ id -Gn steve
steve adm dialout cdrom sudo dip plugdev lpadmin sambashare vboxusers libvirt libvirt-qemu libvirt-dnsmasq
$ groups steve
steve : steve adm dialout cdrom sudo dip plugdev lpadmin sambashare vboxusers libvirt libvirt-qemu libvirt-dnsmasq
Владельцы и права доступа к файлу / dev / ttyUSB0:
crw-rw---- 1 root dialout 188, 0 Nov 17 22:34 /dev/ttyUSB0
Так что я ожидал, что членство в группе дозвон будет работать.
Когда я меняю разрешения на / dev / ttyUSB0 на «666», предоставляя миру доступ для чтения / записи, я могу получить доступ к последовательному порту:
crw-rw-rw- 1 root dialout 188, 0 Nov 17 22:34 /dev/ttyUSB0
Хотя это можно использовать в качестве решения, доступ должен работать для членов группы дозвон, но, исходя из моих экспериментов выше, кажется, что членство в группе дозвон как-то неэффективно.
Этот вопрос связан с Разрешение на последовательный порт отклонено для пользователя без полномочий root с привилегиями группы dialout даже после перезагрузки Ubuntu 18.04, но с некоторыми дополнительными пунктами.





Это то, что я сделал, и, похоже, он работает даже после отключения и повторного подключения Arduino.
Подумав, что мне нужно tty-устройство, я понял, какие tty были добавлены в каталог dev после подключения Arduino.
В моем случае их два: / dev / ttyprintk и / dev / ttyACM0, второй из которых, как мы ожидаем, принадлежал root / dialout. Я изменил первый, который был root / root, на корень / дозвон, и у меня все заработало.
Я не уверен, как это может быть правильно. / dev / ttyprintk должен быть там независимо от того, подключен ли Arduino (по крайней мере, в моей системе). Есть ли причина, по которой вы думаете, что это сработало?