Installing the Arduino IDE in Ubuntu only takes a few minutes. As usual, it’s a better idea to install the Arduino straight from the source, instead of relying on the version in Ubuntu’s repository. While it wasn’t hard to install the Arduino IDE, I noticed that the Arduino GUI was really slow and laggy. This is because the startup script tells Java to use Ubuntu’s GTK look and feel, which makes everything run slowly. It’s easily fixed by changing a single line in the startup script.
Update: In the Arduino 1.0.1 update, “Serial Port” is greyed out. The fix is outlined in the troubleshooting section.
Install the Arduino IDE in Ubuntu
- Install gcc-avr, avr-libc and openjdk-6-jre if you don’t have it already.
- Plug in the board, see where it’s connected
- Download and unpack the Arduino IDEtarball
- Run the IDE
- Select your board model and serial port
- Run a sample program
- Fix the buggy interface (optional)
- Troubleshooting
Everything worked out of the box, other than the interface.
Install gcc-avr and avr-libc
Gcc-avr and avr-libc give your system the tools it needs to compile c into AVR machine code:
|
1 2 3 |
$ sudo apt-get install gcc-avr avr-libc |
If you don’t have openjdk-6-jre already, install and configure that too:
|
1 2 3 4 5 |
$ sudo apt-get install openjdk-6-jre $ sudo update-alternatives --config java (select the correct JRE if you have more than one installed) |
Once those are installed plug in your board and type $ dmesg . It will print the kernel’s ring buffer and show you what USB port your Arduino is plugged into:
|
1 2 3 4 5 6 7 8 9 |
$ dmesg -- snip -- [226470.727790] usb 1-1.1: new full-speed USB device number 6 using ehci_hcd [226470.861077] cdc_acm 1-1.1:1.0: ttyACM0: USB ACM device [226470.861654] usbcore: registered new interface driver cdc_acm [226470.861659] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters |
According to dmesg, our board is plugged into ttyACM0.
Download and Run the Arduino IDE
Go to the downloads page on Arduino’s download page to get the latest Arduino IDE tarball (.tgz file) for your architecture. My laptop is 64-bit, so I chose accordingly. Once the file was finished downloading, I unzipped and ran it with the following command:
|
1 2 3 4 5 |
~/Downloads$ tar xzvf arduino-1.0.1-linux64.tgz ~/Downloads$ cd arduino-1.0.1 ~/Downloads/arduino-1.0.1$ ./arduino |
./arduino launches the Arduino IDE.
Select your board model and serial port
I’m using an Arduino MEGA 2560, so I went to Tools>Board>”Arduino Mega 2560 or Mega ADK.” At this point, I noticed that the GUI was really slow and hard to use. If you want to fix it before proceeding, exit the IDE and skip to the ”Fixing the Interface” section before proceeding.
The IDE flashed an error about how my board wasn’t accessible over the COM1 port. COM1 usually refers to a 9-pin serial port, and my laptop doesn’t even have one. I went to Tools>Serial Port and selected /dev/ttyACM0, which reflected the output I saw when I checked dmesg.
The errors went away, and I went to File>Examples>Basics>Blink and clicked upload. Sure enough, the LED started blinking. You should be ready to start writing and running Arduino programs!
Fix the Arduino IDE to make it run more smoothly in Ubuntu
Exit the Arduino IDE and go to the installation folder (the folder you unzipped from the .tgz file). Edit the “arduino” script in your favorite text editor. To make Arduino use the native Swing windowing instead of forcing the GTK look and feel, which is the cause of the bugginess, change the following line:
|
1 2 3 4 5 6 7 |
#comment out this line: #java -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel processing.app.Base #change it to this: java processing.app.Base |
Just delete the -D flag and its argument. Personally, I get nostalgic about the old-school Swing look and feel, but either way, it fixed all of the lagginess issues I was experiencing.
Troubleshooting USB and the grayed out Serial Port
When I got the Arduino 1.0.1 update, “Serial Port” was grayed out in the tools menu. Running arduino as root ( sudo ./arduino) resolved the issue, but it’s not an acceptable solution. In my case, serial port was grayed out because my user didn’t have permission to read and write to the device.
I added my user to the dialout group with the command sudo usermod -a -G dialout mark . Usually, that would have fixed it but iserial port was still grayed out.
Changing the permissions on /dev/ttyACM0 to world readable and writeable fixed the grayed out serial port. I ran sudo chmod a+rw /dev/ttyACM0 and the serial port menu worked again.
I’ve noticed that running programs that send lots of data over USB can cause issues with the arduino programming software, making it give errors while uploading code. Holding down the reset button fixed my upload and USB errors in most cases.
Further Reading
If you read nothing else before you start writing programs, look at the official Arduino Reference page. It might be the most concise, complete language reference I’ve ever seen.
Also take a look at DIY Drones.

Thanks a lot! I couldn’t make my arduino interface work with GTK/ Ubuntu! That’s such a relief.
Thank you very much, mark, for your help. I was able to fix the USB port access. Great!
Thanks also to Reppad for his advice on the dangers of the command “usermod-G dialout”
Thanks to all
I did it twice …. And couldn’t come back because I didn’t know why it was doing so !
Thanks for explaining this issue
Hi.
Run ./arduino , serial port is not grayed, but getting error
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer
If run sudo ./arduino works successful.
Thanks very much for this – my Arduino Uno is now working perfectly with ubuntu.
Thanks alot! I was trying to get my usb port to work and couldn’t figure it out. I’m gonna post your site on lifehacker
Ieeee, i needed to make a symbolic link
sudo ln -s /dev/ttyACM0 /dev/ttyUSB0
I think that is because the RXTX library that i’m using. I’m using a different one than the Arduino IDE because i needed for work with java communication.
Hope that this will be usefull for somebody!
Thank you for this. All the other “tutorials” about this problem were essentially gibberish.
Thank you very much。now,my arduino can work。
This was all the help I needed to connect my Arduino successfully to Ubuntu. Thanks a lot.
The serial port for me was still grayed out even after adding the username to dialout so after some Internet searching I discovered if you add the username to the “uucp” group and then log out and back in, the serial port works as it should.
Thanks a lot! you really saved me. Great tutorial!
The grayed out Serial Port might also be due to a stale lock file: You can get a hint by starting the Arduino IDE from a command promt – any error messages will show up here.
Lock files are created in /var/lock/ and are named like LCK..ttyUSB0 after the tty device they are locking (/dev/ttyUSB0 in my case).
If you find a lock file in /var/lock named like the port your Arduino board normally uses (use dmesg as shown above), simply delete the file (requires root access). In my case:
sudo rm /var/lock/LCK..ttyUSB0
Thans to all for making Arduino real!
The Leonardo causes, say, /dev/ttyACM0 to be recreated after each reset, so using a udev rule such as
ATTRS{product}==”Arduino Leonardo”, MODE=”0666″
in a file like /etc/udev/rules.d/10-local.rules
was necessary for me.
You are a lifesaver! I had to adapt your instructions, though, as of this writing. I merely installed the Arduino IDE from the Ubuntu Software Center, ran dmesg, and then fixed the grayed-out Serial Port option in the menu. But you saved me hours of troubleshooting!
Awesome – thankyou. fixed the problem in seconds!
Thanks! Useful and helpful when the config of my system went sour.
Muchas Gracias !!
casi que no puedo lograr q el arduino leyera los puertos !!
saludos desde Colombia
Good Tutorial!
I use Arduino for the first time,LED is blink on Ubuntu 12.04.
Thanks a lot!
Thank you, it helped me!!
thanks, my arduino is working now
thx a lot, it goes really well!!
Pingback: Install Arduino IDE in Ubuntu | Simon Bennett
Thanks!! Your guide solve all the issues that I found during the installation.
Pingback: Ciao, Mondo | Pkafei: Grown Women Open Source
Thank you for this, I was freaking out when the serial port was grayed out. But after reading, your tutorial I was able to move on to bigger and worthier problems. Your explanation was so good that I included a link to this page on my blog.
Thanks for the tutorial, it worked like a charm!
Ubuntu 12.04 LTS
Arduino UNO SMD edition
Your troubleshooting section save me hours !!!!! Thanks a lot!
I had the problem of ‘troubleshooting section’… thanks a lot!
Aaaaawesome tutorial. The greyed out serial port was bugging me, but luckily its resolved now! Thank you so much
Thanks for awesome blog just configured UNO with Ubuntu 12.04
Thanks so much. Got the LED blinking in just a few minutes. I installed the Arduino IDE from the software center in Ubuntu 12.10. Best regards.
Thanks a lot !! Your excellent tutorial helped me to setup Arduino Uno on Ubuntu 12.04 !
Excellent, helped out immensely with solving the ‘greyed out’ Serial Port on Ubuntu btw
Hello.
I have spent all day trying to fix this. I ran into the stale lock error while trying to get RXTX to work with Eclipse. This post has been the most useful resource and now my IDE is back up and serial comm is working just fine. Thanks.