Я использовал Arduino IDE на своем ноутбуке Arch Linux без проблем, через некоторое время / месяцы я не могу загрузить скетч из-за разрешений:
avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied
Я могу получить доступ и записать на устройство с minicom
без проблем, потому что разрешения хорошие:
crw-rw-rw- 1 root uucp
Мой пользователь в группе uucp
. Но когда я начинаю загрузку скетча, относительно dmesg
, USB-устройство переподключается, и в этот момент я вижу разные разрешения:
rw------- 1 root root
И через некоторое время (секунды) разрешения вернулись такими, какими они были. вывод dmesg
здесь:
[ 313.042695] usb 2-1.2: USB disconnect, device number 3
[ 313.253085] usb 2-1.2: new full-speed USB device number 4 using ehci-pci
[ 313.352387] cdc_acm 2-1.2:1.0: ttyACM0: USB ACM device
[ 321.234517] usb 2-1.2: USB disconnect, device number 4
[ 321.439445] usb 2-1.2: new full-speed USB device number 5 using ehci-pci
[ 321.541392] cdc_acm 2-1.2:1.0: ttyACM0: USB ACM device
...
Я попытался решить это с помощью нескольких пользовательских правил udev, но безуспешно:
SUBSYSTEMS="usb", ATTRS{idVendor}== "2341", GROUP="uucp", MODE="0666"
KERNEL=="ttyACM[0-9]*", SYMLINK+="%k", GROUP="uucp", MODE="0666"
Как заставить группу или режим с первого момента, когда появился в системе? Я надеюсь, что это не просто ошибка в Arduino 1.8.3. Версия ядра 4.11.9-1-ARCH.
РЕДАКТИРОВАНИЕ № 1:
Я обнаружил, что поведение переподключения USB происходит и после выхода из minicom
, но в случае avrdude
это проблема, потому что это происходит, когда программе требуется доступ к устройству.
Скринкаст здесь
РЕДАКТИРОВАТЬ № 2:
Через некоторое время я вернулся к этой проблеме и обнаружил, что у меня проблема только с ttyACM0
(Yun/Micro/ и т.д., подключенным с помощью кабеля microUSB), и ttyUSB0
(Uno, подключенный с USB-B) в порядке. Но даже это интересная подсказка, я не могу понять это.
Я отслеживаю права на tty устройствах:
watch -n 0.1 'ls -la /dev/ttyUSB* /dev/ttyACM*'
- при загрузке на
ttyUSB0
меняется только дата / время и все работает - когда загрузка на устройство
ttyACM0
на мгновение исчезла, то было создано новое с неправильными правами (иroot:root
), загрузка завершилась неудачно, а затем правильно установлены udev (сroot:uucp
) ... и затем еще один цикл (исчезают-неправильно-правильно)
Мой пользователь в группах lock
и uucp
, я пытался добавить некоторые правила udev или отключить их, но безуспешно ...
Я на 99% уверен, что это что-то, прежде чем правило udev коснется этого.