Не удалось открыть ошибку порта сразу после подключения Arduino в Arch Linux - PullRequest
0 голосов
/ 06 ноября 2018

Я использую PlatformIO для программирования, Arduino Mega и Arduino Uno. Я подключил их через последовательный порт, поэтому мне приходится отключать их друг от друга каждый раз, когда я хочу их запрограммировать. Я также отсоединяю их от компьютера, чтобы случайно не жарить их при перемещении проводов.

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

*** [upload] could not open port /dev/ttyACM0: [Errno 16] Device or resource busy: '/dev/ttyACM0'

Если я подожду около минуты и попробую еще раз, код будет загружен без проблем. Что может быть причиной этого?

1 Ответ

0 голосов
/ 12 ноября 2018

ModemManager может быть причиной ваших неприятностей. Попробуйте отключить его, например, с помощью pkill -STOP ModemManager (продолжить процесс с -CONT).

ModemManager - это (фантастическая) часть программного обеспечения, которая заставляет ваши 3G ключи работать автоматически. Поскольку Arduino выглядит как последовательный модем, ModemManager пытается получить контроль над ним.

Вы можете остановить ModemManager от этого, подключив определенную переменную к вашему устройству. Подробнее см. в документации . По сути, создайте правило udev, например, /etc/udev/rules.d/99-ttyacms.rules со следующим содержанием:

ATTRS{idVendor}=="0ca6" ATTRS{idProduct}=="a050", ENV{ID_MM_DEVICE_IGNORE}="1

Конечно, вам нужно использовать свои идентификаторы. Используйте lsusb, чтобы найти эти значения.

После того, как вы создали этот файл, перезагрузите udev с чем-то вроде sudo udevadm control --reload-rules

...