Arduino IDE on Linux-based OS

Please follow these steps before running the Arduino IDE or Arduino Studio on Linux-based operating systems:


Create the file 90-extraacl.rules file in the /etc/udev/rules.d folder :

$ sudo vim /etc/udev/rules.d/90-extraacl.rules

and paste into it the following lines :

KERNEL="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="<your_username>"
KERNEL="ttyACM[0-9]*", TAG+="udev-acl", TAG+="uaccess", OWNER="<your_username>"

this will allow the generic system user the use of the serial ports on the OS. Just replace <your_username> with your Linux username and then you're done.


Grant yourself the permissions to the tty and dialout groups with :

$ sudo usermod -a -G tty <your_username>
$ sudo usermod -a -G dialout <your_username>

if using SUSE Linux please run also :

$ sudo usermod -a -G uucp <your_username>


If installed, remove from your system the ModemManager program. If you're running a Debian-based linux distro, the typical command to run from shell is :

$ sudo apt-get remove modemmanager

otherwise if running Red Hat/Fedora/CentOS run :

$ yum remove modemmanager

or if running SUSE Linux run :

$ zypper rm modemmanager

be always sure to have administrator privileges before running these commands.

Skip to STEP 5 if you do not own a M0 / M0 Pro

STEP 4 (just for Arduino M0 / M0 Pro boards)

To complete the setup with the Arduino IDE M0, create a file named 98-openocd.rules in the /etc/udev/rules.d folder :

$ sudo vim /etc/udev/rules.d/98-openocd.rules

and paste into it the following lines :

#Copy this file to /etc/udev/rules.d/
ACTION!="add|change", GOTO="openocd_rules_end"
SUBSYSTEM!="usb|tty|hidraw", GOTO="openocd_rules_end"
#Please keep this list sorted by VID:PID
#CMSIS-DAP compatible adapters
ATTRS{product}=="*CMSIS-DAP*", MODE="664", GROUP="plugdev"

Any device that uses OpenOCD has necessarily to be added to this file using the standard syntax of UDEV.

If running SUSE Linux please run these additional commands:

$ sudo addgroup plugdev
$ sudo usermod -a -G plugdev <your_username>

and then reboot.

STEP 5 (optional)

If you want to use external devices in conjunction to the Arduino IDE, such as the AVR ISP programmers, create the fileavrisp.rules file in the /etc/udev/rules.d folder :

$ sudo vim /etc/udev/rules.d/avrisp.rules

and paste into it the following lines :

SUBSYSTEM!="usb_device", ACTION!="add", GOTO="avrisp_end"
# Atmel Corp. JTAG ICE mkII
ATTR{idVendor}=="03eb", ATTRS{idProduct}=="2103", MODE="660", GROUP="dialout"
# Atmel Corp. AVRISP mkII
ATTR{idVendor}=="03eb", ATTRS{idProduct}=="2104", MODE="660", GROUP="dialout"
# Atmel Corp. Dragon
ATTR{idVendor}=="03eb", ATTRS{idProduct}=="2107", MODE="660", GROUP="dialout"


Reload the udev rules with:

$ sudo udevadm control --reload-rules
$ sudo udevadm trigger

Now you should be able to properly build and upload a sketch to your board. If not working, please reboot your system to complete the setup. Once logged in again into the workspace, the IDE should be fully working.

Attached, the cheat sheet of the various package managers for major Linux distributions and the *.rules files as well. Please remember to edit the 90-extraacl.rules and type your username in the OWNER field :