Отказано в разрешении на загрузку с IDE 2
Решаю эту очень распространенную проблему в IDE v2.0.0., но не знаю почему.
Я должен быть в порядке в группе:
adm tty dialout cdrom sudo dip plugdev lpadmin lxd sambashare docker
Я также встречал многочисленные предложения изменить разрешения устройства напрямую с помощью chmod a+rw /dev/<device>
. Это ужасный совет, но пока ничего не работает, поэтому я все равно попробовал. Это также не работает, так как в какой-то момент процесса загрузки устройство удаляется и создается заново, что приводит к сбросу разрешений.
изменить: я также убедился, что ModemManager не запущен и удален из системы.
Запуск IDE от имени пользователя root всегда завершается ошибкой, в том числе при передаче аргумента --no-sandbox
.
Я использую загрузку AppImage в Ubuntu 22.04, но попробовал загрузку в формате zip с теми же результатами.
изменить: ранее в этом месте было примечание о том, что эта проблема не возникает в IDE v. 1.8. На самом деле это было не так — я просто тестировал плату, которая не удаляет и не создает заново устройство при загрузке. При использовании платы, на которой это происходит (в данном случае Arduino Micro), ошибка возникает и в версии 1.8.
Использование avrdude
напрямую (в качестве моей обычной учетной записи пользователя) также работает нормально.
Дополнительное наблюдение: когда устройство воссоздается операционной системой после подключения платы Arduino, оно сначала создается с правами crw------- 1 root root
и остается в этом состоянии. в течение очень короткого промежутка времени перед переключением на права crw-rw----+ 1 root dialout
, после чего загрузка работает должным образом.
@x1a4, 👍1
Обсуждение1 ответ
Лучший ответ:
После длительного сеанса отладки в чате мы определили, что запись udev, установленная пакетом apt
laptop-mode-tools, занимает много времени для запуска, что приводит к тому, что разрешения на USB-устройство не устанавливаются до тех пор, пока среда IDE не попытается выполнить загрузку.
Эта проблема возникает, даже если режим ноутбука не включен, например, из-за использования переменного тока. Вам не обязательно использовать ноутбук, чтобы возникла эта проблема, так как Laptop-Mode-Tools — это универсальный энергосберегающий пакет, который можно установить где угодно.
Рассматриваемое правило udev: ACTION=="add", SUBSYSTEM=="usb", RUN+="lmt-udev force"
в файле /lib/ udev/rules.d/99-laptop-mode.rules
.
Комментирование этого правила udev или изменение force
на auto
решает проблему для меня (без необходимости перезапуска udev или чего-либо еще).
Большие молотки, которые можно использовать для решения этой проблемы, включают настройку ENABLE_LAPTOP_MODE_TOOLS
на 0
в /etc/laptop-mode/laptop-mode.conf
или просто полностью удалить ноутбук-режим-инструменты
из системы.
@timemage получает признание за это исправление.
Ага. У пользователя Arduino есть шанс найти это, избегая с этим проблем. Позже я могу добавить некоторые комментарии, которые вы можете интегрировать (или нет). Единственное, о чем я сейчас упомяну, это то, что эта проблема не будет особенно заметна для платы с выделенным последовательным приемопередатчиком, например, для плат UNO, NANO, Mega, ESP8266, потому что они не пересчитываются на USB. bus во время каждого сброса/загрузки. Как только разрешения становятся правильными (быстро или медленно), они остаются правильными до отключения., @timemage
- Можно ли загрузить ранее скомпилированный бинарник?
- Программирование ATMEGA2560 с использованием FTDI
- как скомпилировать скетч arduino из терминала без использования arduino ide
- "avrdude: stk500_getsync(): not in sync: resp=0x00", или некто по имени Avr не позволяет мне загрузить мою программу
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
- Проблема с загрузкой в Arduino Uno
- Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?
С тех пор вы перезагрузились (или, по крайней мере, вышли из системы и снова вошли в систему), чтобы быть _уверенным_ в том, что любые шансы, которые вы сделали для членства в группе, были унаследованы всеми вовлеченными процессами?, @timemage
@timemage Я был членом этих групп буквально несколько лет, поэтому я абсолютно уверен, что все мои группы верны. Я не в первый раз сталкиваюсь с этим, но на этот раз ничего не получается. Опять же, 1.8 работает нормально., @x1a4
Ну, я немного использую IDE 2.0, но система, которой я сейчас не пользуюсь, не основана ни на Ubuntu, ни на Debian. Если никакой новой информации не появляется, я могу установить Ubuntu на виртуальную машину или USB-устройство и посмотреть, что произойдет, когда я попытаюсь там. Учитывая, что «использование avrdude напрямую... работает просто отлично», что именно создает это сообщение? avrdude только как запускаемый IDE 2.0? Когда вы тестировали avrdude, вы тестировали его с установленной системой или с avrdude из каталога .arduino15? Вы видите что-нибудь интересное в страйсе?, @timemage
Я вижу, что устройство
/dev/ttyACM0
воссоздается ОС, когда я подключаю плату в режиме программирования, сначала с разрешениямиcrw------- 1 root root
, но коротким спустя некоторое время (например, в течение секунды или около того) эти разрешения переключаются на ожидаемыйcrw-rw----+ 1 root dialout
. Поскольку я запускаю avrdude сразу после того, как произошло это переключение, он работает, но по какой-то причине IDE 2.0 выглядит так, как будто он отправляет данные до того, как разрешения устройства установлены, что приводит к ошибке. Однако я не знаю, почему устройство проходит через два набора разрешений., @x1a4Я не знаю, что он делает (я не уверен, почему), но можете ли вы убедиться, что ModemManager не включен. Это не то, что вы хотите запустить в любом случае., @timemage
Ах, забыл упомянуть об этом в исходном сообщении, но да, ModemManager уже удален из системы., @x1a4
Установил Ubuntu 22.04 на виртуальную машину, отключил ModemManger, добавил себя в дозвон, перезапустил, чтобы изменения вступили в силу, загрузил zip-файл IDE 2.0.0 без приложения. распаковал, запустил, замапил в UNO на USB, дважды скомпилировал/закачал блинк-скетч с разной скоростью мигания. Нет ошибок разрешения. Вы используете что-то вроде selinux, контейнеров, модифицированных возможностей posix, apparmor и т. д.?, @timemage
Я ничего не изменил в этой установке, о чем я знаю. Ваше USB-устройство удаляется и создается заново при каждой загрузке? В этом суть этой проблемы. Я просматриваю файл через
watch -n 0.1 ls -l /dev/ttyACM0
, затем запускаю загрузку. Это короткое окно прав доступаcrw------- 1 root root
сразу после создания устройства, которое, по-видимому, является проблемой здесь. Все в порядке, как только разрешения устанавливаются, но я не знаю, какой механизм вызывает это. Я предполагаю, что это в ОС, но _множество_ поисков ничего не дали., @x1a4Давайте [продолжим это обсуждение в чате](https://chat.stackexchange.com/rooms/139598/discussion-between-timemage-and-x1a4)., @timemage
Я думал, ты собираешься что-то опубликовать. Но, конечно, я могу. Это займет немного времени, но сначала я сделаю что-нибудь основное., @timemage
о, я могу сделать пост. Я просто хотел отдать должное, где это было связано, @x1a4
Причина, по которой я думаю, что вы этого хотите, заключается в том, что у вас будет больше свободы, чтобы решить вопрос. Мне было бы странно редактировать ваш вопрос до такой степени, к которой я был бы склонен, чтобы ответ точно соответствовал ему., @timemage
справедливо. я позабочусь об этом, @x1a4
Вы можете удалить все Edit: вещи. Так что нет никакой саги, чтобы следовать. Просто пусть это будет симптом, который люди, скорее всего, найдут с помощью поисковых запросов, а затем переместите весь материал ответа в ответ. Навскидку единственный вклад, который у меня есть в ответе, заключается в том, что он разрешим на разных уровнях. Один из них полностью удаляет пакет, а другой - конкретное редактирование., @timemage