Argh-duino
QHi Team LinuxFormat, just hoping there are some Arduino users here. I’m running Mint 18.1 Cinnamon on an AMD FX-4100. I recently bought an Arduino Micro to use with a Pi-Zero. I initially did aptget install arduino but some of the files appeared to be corrupt. I’ve since downloaded them from the Arduino site twice and despite following its install and troubleshooting advice I get the following error message when starting the basic blink sketch: avrdude: ser_open(): can’t open device “/dev/ ttyACM3”: Device or resource busy An error occurred while uploading the sketch
I’ve obtained the same result with a laptop using Mint and an old laptop running XP. Maplins accepted the Micro may be faulty and replaced it with another, which embarrassingly
gives the same error. The native install doesn’t set permissions to Execute, but changing that as Root makes no difference. I’ve added my user to the dialout group, which is what is shown by ls -l /dev/ ttyACM3 , so don’t think it’s a simple permissions issue. I also have an Arduino Uno, which works perfectly. Would be grateful for any advice,
cbuffer, From the forums
AThere are a few references to this problem online (see http://starterkit.nettigo.eu/2015/serial-portbusy-for-avrdude-on-ubuntu-with-arduinoleonardo-eth, for example). Some people have reported success by repeatedly resetting the Arduino and reattempting the upload, but this seems like an unsatisfactory solution. What’s transpiring is a conflict with the modem-manager package for managing mobile broadband (2G/3G/4G) devices. The modem-manager (hereafter mm) daemon claims the device nodes, because it assumes anything connected over a serial link (the /dev/tty* nodes) is a modem. This prevents the avrdude application from connecting with them, causing the error you quote. The solution in the example mentions adding a udev rule which sets the ID_MM_ DEVICE_IGNORE variable to stop mm claiming these nodes. Oddly enough though, Ubuntu 16.04 and derivatives (such as Mint 18.1) already include such a rule (in the file /lib/ udev/rules.d/77-mm-usb-device-blacklist. rules). It uses Arduino’s USB vendor id (2341) to identify the device and set the environment variable if it’s detected, so in theory this problem shouldn’t exist anymore. And yet it persists, so there must be some bug or other process that’s letting mm dig its claws in (you can check mm is indeed the culpret by plugging in the Micro and running lsof /dev/ ttyACM* ). If you don’t use any mobile broadband devices, then the solution is simple: Just nix the obstreperous package with sudo apt remove modem-manager . You can always re-install it later if the need arises. If you do need mm though, then please let us and so many other perplexed Arduino users know if you find a less-brutal solution.