Программа 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

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

16 голосов | спросил feverDream 14 MarpmFri, 14 Mar 2014 20:47:37 +04002014-03-14T20:47:37+04:0008 2014, 20:47:37

3 ответа


12

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

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

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

sudo usermod -a -G dialout $USER

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

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

Опционально вы можете дважды проверить вывод для id на ранее сохраненный вывод.

ответил jippie 14 MarpmFri, 14 Mar 2014 21:48:43 +04002014-03-14T21:48:43+04:0009 2014, 21:48:43
8

Часто повторяющийся совет «просто сделать sudo usermod -aG dialout <username> никогда не работал для меня, и я, наконец, понял, почему. На моей машине /dev/ttyUSB0 относится к группе serial, а не dialout, поэтому добавление моего имени пользователя в dialout ничего не делает.

# ls -l
# crw-rw---- 1 root serial 188, 0 Mar 31 20:52 /dev/ttyUSB0
                    ^^^^^^ (group-name)

Наконец: sudo usermod -aG <group-name> <username> исправил его для меня.

Смутно, это также явно упоминается здесь в разделе «НАСТРОЙКА РАЗРЕШЕНИЯ». Вздох.

ответил hoosierEE 1 AMpTue, 01 Apr 2014 05:22:05 +040022Tuesday 2014, 05:22:05
0

Это происходит со мной. В моем случае я обновил версию arduino и кажется, что файл настроек вызвал проблему. Просто удалите файл ~ /.arduino /preferences.txt (с закрытой IDE Arduino).

Шаги:

  1. Закрыть Arduino IDE
  2. выполните следующее:

    rm ~ /.arduino /preferences.txt

  3. Запустите Arduino IDE

Это сработало для меня, надеюсь, что это сработает для кого-то другого. Я использую Linux Mint 17, и я обновился с Arduino 1.05 до Arduino 1.06, извлекая Arduino IDE, я не использую тот, что был в репо. (Конечно, после добавления вашего пользователя в соответствующую группу, как упоминалось другими, но если это не поможет вам попробовать это)

ответил soynerdito 3 12014vEurope/Moscow11bEurope/MoscowMon, 03 Nov 2014 01:18:41 +0300 2014, 01:18:41

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132