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