avrdude: / dev / ttyACM0 проблема с изменением разрешений

2108
dmnc

Я использовал Arduino IDE на своем ноутбуке Arch Linux без проблем, через некоторое время / месяцы я не могу загрузить скетч из-за разрешений:

avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied

Я могу получить доступ и записать на устройство minicomбез проблем, потому что разрешения хорошие:

crw-rw-rw- 1 root uucp 

Мой пользователь в uucpгруппе. Но когда я начинаю загрузку скетча, относительно dmesgUSB-устройства, я снова подключаюсь, и в этот момент я вижу разные разрешения:

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== "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) ... и затем еще один цикл (исчезнуть-неправильно-правильно)

Мой пользователь в группах lockand uucp, я пытался добавить некоторые правила udev или отключить их, но безуспешно ...

Я на 99% уверен, что это что-то, прежде чем правило udev коснется этого.

2
Вы когда-нибудь пытались добавить команду изменения разрешений в /etc/rc.local? этот скрипт вызывается в конце последовательности загрузки. Этот скрипт выполняется с правами суперпользователя, поэтому вы должны иметь возможность chmod устройства ACM0 Genaro Morales 6 лет назад 0
AFAIK, в ArchLinux нет rc.local, но даже это не может помешать `avrdude` сбросить порт при загрузке. dmnc 6 лет назад 0
Я не уверен в этом, но я думаю, что вы можете найти кое-что здесь https://wiki.archlinux.org/index.php/User:Herodotus/Rc-Local-Systemd Genaro Morales 6 лет назад 0
Я знаю, что это еще не завершено, я собираюсь взглянуть на это. Genaro Morales 6 лет назад 0

0 ответов на вопрос

Похожие вопросы