Zajęty port szeregowy Arduino na Ubuntu – rozwiązanie

image

Testując na Ubuntu (14.04) nową płytkę Arduino – Arduino Leonardo ETH zauważyłem problem przy wgrywaniu szkicu:

avrdude: ser_open(): can't open device "/dev/ttyACM0": Device or resource busy avrdude: ser_send(): write error: Bad file descriptor Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.

Spowodowane jest to używanym przez Ubuntu ModemManagerem, służącym do obsługi modemów 3G. Kiedy zauważy nowy port szeregowy, próbuje się z nim skomunikować, myśląc że ma do czynienia z modemem, a przy okazji skutecznie blokuje możliwość zaprogramowania Arduino.
Istnieje co prawda lista ignorowanych urządzeń, ale płytki produkowane przez Arduino.org nie zostały do tej pory na nią dodane.

Co zrobić w tej sytuacji? Wystarczy uruchomić terminal (domyślnie jest to skrót Ctrl+Alt+T), wpisać (uwaga, to jest jedna linijka):

sudo echo 'ATTRS{idVendor}=="2a03", ENV{ID_MM_DEVICE_IGNORE}="1"' > /etc/udev/rules.d/77-arduino.rules

i następnie:

sudo udevadm trigger

Od tej chwili powinniśmy móc bez problemu zaprogramować nie tylko Arduino Leonardo ETH, ale również inne Arduino produkowane przez Arduino.org

Artur

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.