Программа Arduino работает только при запуске от имени root

Загрузка простых скетчей, кажется, работает, когда я запускаю программу Arduino как root (sudo). Я хотел бы запустить ее как обычный пользователь. Кто-нибудь сталкивался с такой же проблемой и исправил ее?

Вот что я получил от lsusb:

$ lsusb
Bus 002 Device 022: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)

И программа Arduino идентифицирует его как /dev/ttyACM0. Вот его разрешения:

$ ls -l /dev/ttyACM0 
crw-rw---T 1 root dialout 166, 0 Mar 14 22:03 /dev/ttyACM0

Вот вывод id

groups=1000(abhiram),20(dialout),24(cdrom),25(floppy),29(audio),
30(dip),44(video),46(plugdev),105(scanner),110(bluetooth),112(netdev)

Когда загружаю скетч из примеров, как обычный пользователь, я сталкиваюсь с этой ошибкой:

avrdude:stk500_recv(): programmer not responding

Любые предложения приветствуются.

, 👍20


1 ответ


13

Самое простое решение — добавить себя в группу dialout.

Сначала запишите вывод из id. Сохраните его в файле (не в /tmp, так как он очищается при перезагрузке). Если вы посмотрите на вывод, вы заметите, что ваш пользователь зарегистрирован в нескольких группах, и эти группы представляют дополнительные привилегии в системе. По умолчанию ваш Arduino назначен в группу dialout, потому что он регистрируется как последовательный интерфейс, и в старые времена они часто использовались для ... исходящих звонков с использованием модема.

Чтобы добавить себя в группу dialout, введите следующую команду:

sudo usermod -a -G dialout $USER

Не забудьте флаг -a (для добавления групп, а не для замены), иначе у вас будут совершенно другие проблемы. Вот почему нужно копировать вывод id в файл, чтобы в случае, если вы все-таки ошибетесь, вы хотя бы знали, как был настроен ваш пользователь раньше.

Затем выйдите из системы и войдите в систему, и с этого момента все должно заработать.

При желании вы можете дважды проверить вывод для id по сравнению с выводом, который вы сохранили ранее.

,