Arduino Error Opening Serial Port
- Arduino Error Opening Serial Port Port Busy
- Com Port Busy
- Arduino Processing Error Opening Serial Port
If you get this error, you need to set serial port permission. Circuits4you.com Arduino interfacing, circuits tutorials with code and ebooks, Step by step guides for all sensor modules used for arduino. Just logout and log back in again after running this command, and you should be able to access the serial port without any problems. Skvatboy unassigned ffissore Jul 4, 2016 per1234 added the OS: Linux label Jul 3, 2017.
PagesLooking for answers to technical questions?
We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.
- Member #1508721/about 6 months ago/1/
I can't avoid the Port Busy error. Is there a specific order when the Processing code needs to be started vs. uploading the Arduino sketch? I'm using Mac OS X and I've tried the /var/lock trick and installing the FTDI driver. Nothing really works.
Any help will be appreciated.
- Member #764075/about 2 years ago/1/
Can anyone see why this code works on UNO but not on MEGA?? its only partially finished, in testing i cannot make it work on MEGA. it will be used with processing to operate 5v relays. with relays hooked up it wont work with either.
int Pin[] = {22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42}; //Array of pins to controll lightsint value = 0; // variable to keep the actual value
void setup() { //Initialize pins as OUTPUTS and begin serial connection for(int i=22; i<42 ; i++){ pinMode(Pin[i], OUTPUT); pinMode(Pin[13], OUTPUT); } Serial.begin(9600);
}
void loop() {
//if (Serial.available()){ int input = Serial.read(); // read serial
switch (input){ case 22: //If processing passes a '22' do case one
case 27: if(input 27){ //If Processing passes a '27' do case six digitalWrite(Pin[27],HIGH); delay(3000); digitalWrite(Pin[27],LOW);
}} }
processing code
import g4p_controls.*;import processing.serial.*;
Serial myPort;
void setup(){ println(Serial.list()); //String portName = Serial.list()[1]; //change the 0 to a 1 or 2 etc. to match your port myPort = new Serial(this, Serial.list()[1], 9600); myPort.buffer(1);
size(480, 320, JAVA2D);
createGUI(); //customGUI();
}
void mousePressed() { println('Coordinates: ' + mouseX +',' + mouseY); mouseAction(); }
void mouseAction(){ if( mouseX > 30 && mouseX < 70){ if( mouseY > 10 && mouseY < 60){ println('CH 1'); myPort.write(22); } } if( mouseX > 80 && mouseX < 120){ if( mouseY > 10 && mouseY < 60){ println('CH 2'); myPort.write(23); } } if( mouseX > 130 && mouseX < 170){ if( mouseY > 10 && mouseY < 60){ println('CH 3'); myPort.write(24); } } if( mouseX > 180 && mouseX < 220){ if( mouseY > 10 && mouseY < 60){ println('CH 4'); myPort.write(25); } } if( mouseX > 230 && mouseX < 270){ if( mouseY > 10 && mouseY < 60){ println('CH 5'); myPort.write(26); } } if( mouseX > 280 && mouseX < 320){ if( mouseY > 10 && mouseY < 60){ println('CH 6'); myPort.write(27); } } if( mouseX > 330 && mouseX < 370){ if( mouseY > 10 && mouseY < 60){ println('CH 7'); myPort.write(28); } } if( mouseX > 380 && mouseX < 420){ if( mouseY > 10 && mouseY < 60){ println('CH 8'); myPort.write(29); } } if( mouseX > 40 && mouseX < 110){ if( mouseY > 110 && mouseY < 140){ println('CH 9'); myPort.write(30); } } if( mouseX > 140 && mouseX < 210){ if( mouseY > 110 && mouseY < 140){ println('CH 10'); myPort.write(31); } } if( mouseX > 240 && mouseX < 310){ if( mouseY > 110 && mouseY < 140){ println('CH 11'); myPort.write(32); } } if( mouseX > 340 && mouseX < 410){ if( mouseY > 110 && mouseY < 140){ println('CH 12'); myPort.write(33); } } if( mouseX > 40 && mouseX < 110){ if( mouseY > 160 && mouseY < 190){ println('CH 13'); myPort.write(34); } } if( mouseX > 140 && mouseX < 210){ if( mouseY > 160 && mouseY < 190){ println('CH 14'); myPort.write(35); } } if( mouseX > 240 && mouseX < 310){ if( mouseY > 160 && mouseY < 190){ println('CH 15'); myPort.write(36); } } if( mouseX > 340 && mouseX < 410){ if( mouseY > 160 && mouseY < 190){ println('CH 16'); myPort.write(37); } }}
public void draw(){ background(230);
}
- Member #919964/about 2 years ago/1/
This is my code for reading a file from PC and sending it to arduino // Processing code import processing.serial.*;
I am not able to see anything on SerialPortkindly help !
- Member #919964/about 2 years ago/1/
I have done displaying the string from arduino to pc but it is showing 'null' and then 'hello world' displays any method to stop displaying 'null' and stop the code when it reaches end of file.
- Member #915401/about 2 years ago/1/
Using an arduino Mega and processing 3.3Sending Data from the arduino to processing I dont have an issue.
Using a exact copy of the code for sending data from Processing to Arduino and issues arrise.The Pin 13 Light turns on and never turns off, even when I switch to a different pin in the sketchPin 13 doesn't turn off until I use the serial monitor in the Arduino IDE or reset the arduino
- Member #426028/about 3 years ago/1/
I am a newbie, and i am learning how to code. Thank you for helping me improve
- Member #919964/about 2 years ago/1/
- BitSlayer/about 3 years ago/1/
Hi,I am new to electronics too. I got this project to work. Your error was the same one I had - the serial port # has to be corrected to match the port # used by your operating system. In my case the port was #1. So my line looked like this:
myPort = new Serial(this, Serial.list()[1], 9600);
You can figure out the port # for your computer by trial and error. Simply edit the line by changing the port number to 1, run the sketch and if you get the error message, change it to 2 and run the sketch again. Repeat until you have no error message.
- Member #831150/about 3 years ago/1/
Here's an interesting thing I noted - Please try this and let me know if you get the same results:
Initially the Processing example (the first serial test) was printing a LOT of Hello, world!'s. I thought it looked like way faster than 100 ms, so I changed the Arduino code to loop every 1000 ms instead. Same thing coming out of the Processing script! A quick look at the Processing sketch showed me why: The 'println' is outside the 'if' statement that checks for serial data, so it prints every loop instead of waiting for new data. So I moved it into the 'if' block and everything was pretty!
I know. I'm getting to the fun part. After the 'if' block mode to the Processor sketch, add a counter variable to the Arduino sketch, and print it and increment it in the loop, then slow the delay to 1000 ms. Like this:
int counter = 0;
void setup() { // put your setup code here, to run once://initialize serial communications at a 9600 baud rateSerial.begin(9600);}
void loop() { // put your main code here, to run repeatedly://send 'Hello, world!' over the serial portSerial.println('Hello, world!');Serial.println(counter);//wait 1000 milliseconds so we don't drive ourselves crazydelay(1000);counter++;}
Now for the odd portion: Upload the new Arduino sketch and run the Processor sketch. Stop the Processor sketch. If you start it again, what do you think you'll see?
First hypothesis: The serial buffer is pretty big, so it'll just wait until Processing grabs the next bits, and the numbers will start where they left off.
Nope!
Second: The numbers just keep going and the Windows serial routine just drops them, so you'll get some numbers starting a good bit higher than when you stopped.
Sorry Charlie!
What you'll see, almost every time, is that the numbers start from zero again!!! Why? The Arduino didn't stop. The TX light is still blinking every second. The count should just keep going, one way or the other, right?? So what in the digital world is going on!?!??!?!??!
I say almost every time, because occasionally the first number you get is the next from when you stopped, obviously still in the buffer. Then it starts at zero. It HAS to be the Arduino, somehow sensing the restart and resetting the sketch - but how? There is no mechanism for that that I'm aware of, and I certainly didn't put any serial status code in the script.
Can anyone exlpain???
- Member #828341/about 3 years ago/1/
- Minmin/about 4 years ago/1/
Arduino code:
void setup(){ Serial.begin(9600);}
void loop(){ Serial.println('hello world'); delay(100);}
processing code:
import processing.serial.*;
Serial myPort; // Create object from Serial classString val; // Data received from the serial portvoid setup(){// I know that the first port in the serial list on my mac// is Serial.list()[0].// On Windows machines, this generally opens COM1.// Open whatever port is the one you're using.String portName = Serial.list()[0]; //change the 0 to a 1 or 2 etc. to match your portmyPort = new Serial(this, portName, 9600); }void draw(){ if ( myPort.available() > 0) { // If data is available, val = myPort.readStringUntil('n'); // read it and store it in val } println(val); //print it out in the console}
it's work when i press run button on p5
but the p5's console is pop up null,null,null,
how can i fix it to pop up 'hello world'
help me,please..this made me crazy >___<
- Member #663907/about 4 years ago/1/
Here is the code I'm using in processing. The problem is at the bottom it says error opening serial port/dev.cu.Bluetooth-modem:Port busy. PLEASE HELP! I'm using this processing sketch with arduino code. Thanks!
/*This program functions as a data visualizer for the Pulse SensorSerial input is designed to mate with arduino sketch 'A_PulseSensor_xx'This code made by Joel Murphy and Yury Gitman in Brooklyn, Summer 2011.
interactive features in this version:press 'S' or 's' to take a picture of the data window. (.tif image)Pulse data window will plot pulse 1:1 (ADC value : pixesls) and auto adjust to fitwaveform in screenCC Attribution Share-Alike http://creativecommons.org/licenses/by-sa/3.0/us/*/
import processing.serial.*; // this is how we talk to arduinoPFont font, rateFont, smallFont; // create font instancesSerial port; // create and name the serial port
int heart = 0; // used to time pulsing of heart graphic with your heart beatint pulseRate = 0; // used to hold pulse rate value sent from arduino (beats per minute)int Sensor = 0; // used to hold raw sensor data from arduinoint HRV; // time between this current beat and the last beat in mS (used for Heart Rate Variability) int Ypos; // used to print the new Pulse Sensor data pointint[] pulseY; // used to hold pulse waveform Y positionsint[] rateY; // used to hold bpm waveform Y positions// these variables will hold pulse window specsint PulseWindowMin;int PulseWindowMax;
int PulseWindowW;int PulseWindowH;int PulseWindowY;int PulseWindowX;int PulseDisplayBaseline = 712; // these variables are used to adjust the pulse window display int PulseOffset = 712; // the max and min will auto adjust if the waveform drifts beyond the screencolor eggshell = color(255,253,248); // offwhite color for data display windowscolor R = color(250,0,0); // red color for datapoints and heart graphicint grey = 80; // grey color for numeric data windows
boolean beat = false; // used to advance heart rate graphboolean newRate = false; // used to update heart rate display
void setup() {size(800,600); // Stage sizeframeRate(100); // refresh ratefont = loadFont('Arial-BoldMT-36.vlw'); // font for small textrateFont = loadFont('Arial-BoldMT-80.vlw'); // font for larger textsmallFont = loadFont('Arial-BoldMT-14.vlw'); // font for smaller texttextFont(font); // set up to print small fonttextAlign(RIGHT); // referemce pointsrectMode(CENTER);
// define the size of the pulse windowPulseWindowW = 710; // width of pulse windowPulseWindowH = 400; // height of pulse windowPulseWindowX = width/2+30; // center X coordinate of pulse windowPulseWindowY = height-225; // center Y coordinate of pulse window PulseWindowMin = PulseWindowY - PulseWindowH/2; // top Y position of pulse windowPulseWindowMax = PulseWindowY + PulseWindowH/2; // bottom Y position of pulse window
pulseY = new int[PulseWindowW+1]; // array to hold Y coordinate of pulse datapointsrateY = new int[320]; // array to hold y coordinate of heart rate datapoints
// find and establish contact with the serial portprintln(Serial.list()); // print a list of available serial portsport = new Serial(this, Serial.list()[0], 115200); // choose the right one in square bracketsport.bufferUntil('n'); // arduino will end each ascii string with a 'n' at the end (carriage return)port.clear(); // flush the serial buffer
// set arbitrary initial data position at top of pulse windowYpos = PulseWindowMin;
for (int i = 0; i < pulseY.length; i++){
pulseY[i] = PulseWindowMin;
}// set the BPM visualizer line to 0 for (int i=0; i<rateY.length; i++){ rateY[i] = 162; // 162 is the pixel height for 0 heart rate }}
void draw(){
printScreen(); // DRAW THE MAJOR SCREEN COMPONENTS AND TEXT
// THESE ARE THE PULSE SENSOR WAVEFORM DRAWING ROUTINES// fisrt, move the Y coordintae of previous pulse data points over one pixel to the left for (int i = 0; i < pulseY.length-1; i++){
pulseY[i] = pulseY[i+1];
}// new data enters on the right of the screen. sensor value is placed in the last array positionpulseY[pulseY.length-1] = Ypos; // Ypos is updated in the serialEvent tab// This for loop renders the Pulse Sensor waveform for (int x = 1; x < pulseY.length-1; x++){ // variable 'x' will take the place of pixel x position stroke(R); // get ready to make a red line// Here are a few ways to draw the datapoints.
// line(x+61, pulseY[x]+1, x+61, pulseY[x]-1); // display previous datapoint as vertical line// point(x+61,pulseY[x]); //display previous datapoint as point// ellipse(x+61,pulseY[x],1,1); // display previous datapoint as a small dot line(x+76, pulseY[x], x+75, pulseY[x-1]); //display previous datapoint as a connected line }// THESE ARE THE HEART RATE DRAWING ROUTINES if (beat true){ // only move the heart rate line over once every time the heart beats (beat flag set in serialEvent tab) beat = false; // reset beat flag for (int i=0; i<rateY.length-1; i++){ rateY[i] = rateY[i+1]; // shif the bpm Y coordinates over one pixel to the left } }// update the BPM display Y coordinate when arduino sends a new calculation if (newRate true){ // when the new rate is sent from arduino float dummy = map(pulseRate,0,200,135,10); // map it to the heart rate window Y rateY[rateY.length-1] = int(dummy); // set the rightmost pixel to the new data point value }// print out the graph of the heart rate stroke(250,0,0); // color of heart rate graph for (int x=0; x < rateY.length-1; x++){ // variable 'x' will take the place of pixel x position line(x+76, rateY[x]+2, x+76, rateY[x]-2); // display previous heart rate datapoint as vertical line }} //end of draw loop
void printScreen(){ // DRAW MAJOR SCREEN ELEMENTS AND TEXT background(0); // black background noStroke();
fill(grey); // grey rect(40,PulseWindowY,70,PulseWindowH); // draw box around pulse window numbers
rect(40,90,70,150); // draw box around rate window numbers
fill(eggshell); // eggshell rect(PulseWindowX,PulseWindowY,PulseWindowW,PulseWindowH); // draw pulse terminal rect(235,90,320,150); // draw bpm terminal text('0',65,163); // print ʻ0ʻ at bottom of bpm terminal (min heart rate for zombies) text('200',65,35); // print ʻ200ʻ at top of bpm terminal (max heart rate for young runners) text(HRV,65,PulseWindowY); // print the waveform amplitude text('BPM',width-215,100); // clarification (BPM = Beats Per Minute = heart rate) text('Pulse Sensor Visualizer 0.6',width-35,160); // name of program, version
textFont(smallFont); text('mS Time',72,PulseWindowY + 20); text('Between',72,PulseWindowY + 40); // print the high number of visible datapoints (DEPENDS ON AUTO OFFSET) text('Beats',72,PulseWindowY + 60); // print the low number of visible datapoints (DITTO)
textFont(rateFont); // set up to print large text text(pulseRate,width-275,100); // print out the pulse rate textFont(font); // set up to print small text// DRAW THE HEART AND MAYBE MAKE IT BEAT fill(250,0,0); stroke(250,0,0); heart--; // the heart variable is used to time how long the heart graphic swells when your heart beats if (heart < 0){heart = 0;} // don't let the heart variable go into negative numbers if (heart > 0){ // if a beat happened recently, strokeWeight(8); // make the heart big } smooth(); // draw the heart with two bezier curves bezier(width-125,30, width-45,-40, width-25,120, width-125,130); bezier(width-125,30, width-215,-40, width-225,120, width-125,130); strokeWeight(1); // reset the strokeWeight
} // END OF printScreen FUNCTION
// original heart design and positioning// bezier(width-150,50, width-70,-20, width-50,140, width-150,150);// bezier(width-150,50, width-230,-20, width-250,140, width-150,150);
- Scotchn/about 5 years ago * /1/
- Scotchn/about 5 years ago/1/
Just Copied and Pasted the exact same code into a fresh Processing sketch and it worked perfectly. Not sure why that would be?
Thanks heaps for this Excellent Tutorial. It's a great.
- Member #225489/about 5 years ago/1/
Thank you for this tutorial. It is just what i am looking for!
I get the error message (OS = Mac):
Error opening serial port /dev/tty.usbmodel1451: Port busy
when trying to run Processing after starting to run the Arduino sketch on this port.
It makes sense the port is busy. However, for this to work they must share.
What am i doing wrong that will not allow sharing of the serial port?(thank you very much.
- Loz Lees/about 5 years ago/1/
I got this too. I was using the serial monitor in the Arduino software at the same time. After I shut the serial monitor down everything started working.
- Parizival/about 5 years ago * /1/
In the first processing sketch, I keep getting a 'ArryIndexOutOfBoundsException: 3' errorHere is the code I am using:
- b_e_n/about 5 years ago/1/
Looks like you are picking the wrong number in the array to pick your serial port -- if you're using a 3 in the line:
String portName = Serial.list()[3];
Try replacing that 3 with a 0, 1, or 2 instead.
- Scotchn/about 5 years ago/1/
Hi b_e_n,
Just thought I'd let you know that I was having the exact sam error. then I cut and pasted the code into a new sketch and had no errors. Not sure why this would be but thought you may want to try it.
All the code required is in my comment above.
- Member #566754/about 5 years ago/1/
I can't get this to work, even had my friend look at it. when i run it, it says, 'expecting EOF, found 'myPort', and it highlights the following line of code, like it doesn't like it:
myPort = new Serial(this, portName, 9600);
we tried changing the line of code above it to [1], and 2-9 etc in order to try to get this little tutorial to work, but no such luck. I'm using a mac osx system, an arduino uno, processing 2.2.1..totally hopelessly stuck and need help on getting this to work!
Anyone?! I would be grateful--
- brennen/about 5 years ago/1/
To clarify b_e_n's comment just a touch, check the line directly above
myPort = ..
, not the code you posted above. :) - b_e_n/about 5 years ago/1/
Is the code above properly terminated with a semicolon? Are your parentheses properly matched and nested? This error occurs due to a syntax error in your code, has nothing to do with your serial port.
- VisualSound/about 5 years ago/1/
Really great guide, however using the arduino mega I experienced some strange results going from processing to arduino:
I was using the if / else statement in the void draw in processing with the actual line writing to serial being this:myPort.write(1); (I was using straight bytes rather than chars from another tutorial that ended up working)
when run the RX light was blinking fast, on almost solid which made sense since it was supposedly transmitting either the 1, or the 0 depending if I was clicking or not.
However, the Arduino was not receiving any actual bytes and the only time I got a response was in the else statement since it covered not receiving a byte as well.
What I stumbled across that worked, was using using a method like this:
Any ideas why that would work for me , and the continuous method wouldn't?
- Member #540415/about 5 years ago/1/
hello i am doing a project on face tracking. i have a problem communicating with the arduino via processing. it gives a null pointer exception error on the line arduinoPort.write('a'); .do u have any idea why this is happening. if you want i can send you the codes to look at thank you.
- Member #503462/about 6 years ago/1/
When you don't know which number of port to choose, read this:In the processing sketch in the part where you have to change the 0 to a 1 or 2 etc. to match your port. : String portName = Serial.list()[4];I tried 0, 1 and 2 and always got an error saying'the port is busy'. To solve that, I run this code in processing.
That gives you a list of ports. Make sure the Arduino is connected and check which one is your Arduino using (tools>serial port) Then count in the list processing gave you, which number is that, starting from 0. Mine was 4, so I just replaced 0 for 4 in: String portName = Serial.list()[4];
- Member #484426/about 6 years ago/1/
While trying out the given set of code, I had some difficulty with the 'myPort.readStringUntil('n')' line. The processing program keeps telling me badlyd formed character constant for the 'n' part. that line of code is continuously highlighted and refuses to work. An suggestions?void draw(){ if ( myPort.available() > 0) { // If data is available, val = myPort.readStringUntil('n'); // read it and store it in val } println(val); //print it out in the console}
- Member #503462/about 6 years ago/1/
Try replacing the “myPort.readStringUntil(‘n’)†line for 'myPort.readString()', so your void draw will look like this: void draw(){ if ( myPort.available() > 0) { // If data is available, val = myPort.readString(); // read it and store it in val } println(val); //print it out in the console}
If you've found a bug or have other constructive feedback for our tutorial authors, please send us your feedback!
Arduino Troubleshooting
On this page.. (hide)
Why I can't upload my programs to the Arduino board?
There are many pieces involved in getting a program onto your Arduino board, and if any of them aren't right, the upload can fail. They include: the drivers for the board, the board and serial port selections in the Arduino software, access to the serial port, the physical connection to the board, the firmware on the 8U2 (on the Uno and Mega 2560), the bootloader on the main microcontroller on the board, the microcontroller's fuse settings, and more. Here are some specific suggestions for troubleshooting each of the pieces.
Arduino Software
- Make sure you have the right item selected in the Tools > Board menu. If you have an Arduino Uno, you'll need to choose it. Also, newer Arduino Duemilanove boards come with an ATmega328, while older ones have an ATmega168. To check, read the text on the microcontroller (the larger chip) on your Arduino board. For more information on the board menu items, see the guide to the Arduino environment.
- Then, check that the proper port is selected in the Tools > Serial Port menu (if your port doesn't appear, try restarting the IDE with the board connected to the computer). On the Mac, the serial port should be something like /dev/tty.usbmodem621 (for the Uno or Mega 2560) or /dev/tty.usbserial-A02f8e (for older, FTDI-based boards). On Linux, it should be /dev/ttyACM0 or similar (for the Uno or Mega 2560) or /dev/ttyUSB0 or similar (for older boards). On Windows, it will be a COM port but you'll need to check in the Device Manager (under Ports) to see which one. If you don't seem to have a serial port for your Arduino board, see the following information about drivers.
Drivers
Drivers provide a way for software on your computer (i.e. the Arduino software) to talk to hardware you connect to your computer (the Arduino board). In the case of Arduino, the drivers work by providing a virtual serial port (or virtual COM port). The Arduino Uno and Mega 2560 use standard drivers (USB CDC) provided by the operating system to communicate with the ATmega8U2 on the board. Other Arduino boards use FTDI drivers to communicate with the FTDI chip on the board (or in the USB-serial convertor).
The easiest way to check if the drivers for your board are installed correctly is by opening the Tools > Serial Port menu in the Arduino software with the Arduino board connected to your computer. Additional menu items should appear relative to when you open the menu without the Arduino connected to your computer. Note that it shouldn't matter what name the Arduino board's serial port gets assigned as long as that's the one you pick from the menu.
- On Windows 7 (particularly the 64-bit version), you might need to go into the Device Manager and update the drivers for the Uno or Mega 2560. Just right click on the device (the board should be connected to your computer), and point Windows at the appropriate .inf file again. The .inf is in the drivers/ directory of the Arduino software (not in the FTDI USB Drivers sub-directory of it).
- If you get this error when installing the Uno or Mega 2560 drivers on Windows XP: 'The system cannot find the file specified', you might try this suggestion (about adding a 'RunOnce' key to 'HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion').
- On Linux, the Uno and Mega 2560 show up as devices of the form /dev/ttyACM0. These are not supported by the standard version of the RXTX library that the Arduino software uses for serial communication. The Arduino software download for Linux includes a version of the RXTX library patched to also search for these /dev/ttyACM* devices. There's also an Ubuntu package (for 11.04) which includes support for these devices. If, however, you're using the RXTX package from your distribution, you may need to symlink from /dev/ttyACM0 to /dev/ttyUSB0 (for example) so that the serial port appears in the Arduino software.
Run:sudo usermod -a -G tty yourUserName
sudo usermod -a -G dialout yourUserName
Log off and log on again for the changes to take effect.
Access to the Serial Port
- On Windows, if the software is slow to start or crashes on launch, or the Tools menu is slow to open, you may need to disable Bluetooth serial ports or other networked COM ports in the Device Manager. The Arduino software scans all the serial (COM) ports on your computer when it starts and when you open the Tools menu, and these networked ports can sometimes cause large delays or crashes.
- Check that you're not running any programs that scan all serial ports, like USB Cellular Wifi Dongle software (e.g. from Sprint or Verizon), PDA sync applications, Bluetooth-USB drivers (e.g. BlueSoleil), virtual daemon tools, etc.
- Make sure you don't have firewall software that blocks access to the serial port (e.g. ZoneAlarm).
- You may need to quit Processing, PD, vvvv, etc. if you're using them to read data over the USB or serial connection to the Arduino board.
- On Linux, you might try running the Arduino software as root, at least temporarily to see if fixes the upload.
Physical Connection
- First make sure your board is on (the green LED is on) and connected to the computer.
- The Arduino Uno and Mega 2560 may have trouble connecting to a Mac through a USB hub. If nothing appears in your 'Tools > Serial Port' menu, try plugging the board directly to your computer and restarting the Arduino IDE.
- Disconnect digital pins 0 and 1 while uploading as they are shared with serial communication with the computer (they can connected and used after the code has been uploaded).
- Try uploading with nothing connected to the board (apart from the USB cable, of course).
- Make sure the board isn't touching anything metallic or conductive.
- Try a different USB cable; sometimes they don't work.
Auto-Reset
- If you have a board that doesn't support auto-reset, be sure that you are resetting the board a couple of seconds before uploading. (The Arduino Diecimila, Duemilanove, and Nano support auto-reset as do the LilyPad, Pro, and Pro Mini with 6-pin programming headers).
- However, note that some Diecimila were accidently burned with the wrong bootloader and may require you to physically press the reset button before uploading; see this question below.
- However, on some computers, you may need to press the reset button on the board after you hit the upload button in the Arduino environment. Try different intervals of time between the two, up to 10 seconds or more.
- If you get this error:
[VP 1] Device is not responding correctly.
try uploading again (i.e. reset the board and press the download button a second time).
Bootloader
- Make sure there's a bootloader burned on your Arduino board. To check, reset the board. The built-in L LED (which is connected to pin 13) should blink. If it doesn't, there may not be a bootloader on your board.
Forum Support
If it still doesn't work, you can ask for help in the forum. Please include the following information:
- Your operating system.
- What kind of board you have. If it's a Mini, LilyPad or other board that requires extra wiring, include a photo of your circuit, if possible.
- Whether or not you were ever able to upload to the board. If so, what were you doing with the board before / when it stopped working, and what software have you recently added or removed from your computer?
- The messages displayed when you try to upload with verbose output enabled. To enable verbose output check the box next to File > Preferences > Show verbose output during: > upload.
- Click on Copy error messages button on the right side of the box. When submitting in the forum please use code tags (</> button on the forum website toolbar) to post the output so that it will be correctly formatted.
Why do I get 'Build folder disappeared or could not be written' on Mac OS X?
Did you drag the Arduino.app out of the disk image (and into, say, your Applications folder)? If not, you won't be able to upload the examples.
Why doesn't the Arduino software run after I updated the Java on my Mac?
The latest Java update from Apple attempts to use 64-bit version of native libraries, but the Arduino application comes with a 32 bit version of the RXTX library. If you launch Arduino, you'll get an error like:
To fix this, click on the Arduino application (e.g. Arduino 16.app) in the Finder, and select Get Info from the File menu. In the info panel, click the Open in 32 Bit Mode checkbox. You should then be able to launch Arduino normally.
Why do I get a java.lang.StackOverflowError when I try to compile my program?
The Arduino environment does some preliminary processing on your sketch by manipulating the code using regular expressions. This sometimes gets confused by certain strings of text. If you see an error like:
or:
this is what's happening. Look for unusual sequences involving 'double-quotes', 'single-quotes', backslashes, comments, etc. For example, missing quotes can cause problems and so can the sequence '' (use '' instead).
What type of power supply should I use with my Arduino board?
Typically, the Arduino board can operate satisfactorily on power that is available on the USB port of the computer that it is connected to, depending upon the number and type of optional Shield modules used with the Arduino board and the rated USB power current available from the computer (varies according to computer manufacturer and model). If you find that additional power is required from your Arduino board to operate it properly, or if you need to operate the Arduino board disconnected from a USB port or when using it with one that does not provide power, then you need to acquire a power supply that provides from 7 to 12V (Volts) of DC (Direct Current) power with enough current capacity for your needs. The AC adapters commonly available in retail stores for use with consumer products are often suitable, but make sure that it has the proper connector for plugging into the power socket on your Arduino board: 5.5mm diameter cylindrical plug with 2.1mm pin hole, and that provides Positive voltage on the inside pin hole and Negative (or common/ground) voltage on the outside cylindrical sleeve of the connector plug. For most applications, 1A (Amp) of current supply capacity is sufficient, but you may find that you’ll need more if you have a specific Shield module that needs it, or a stack of several Shield modules that along with the Arduino board draws a higher total current. You should sum the rated Input power current requirement for each Shield you are using along with your Arduino board to get the total needed, and acquire a power adapter/supply that provides a minimum of that total (higher current power supply current capacity has no ill effects).You also have to remember that the on-board 5V regulator cannot supply an infinite current (actually 800mA is a good choice in order to not overheat the board) so if one of your project need a large amount of power you can consider to provide the needed 5V (or what ever) selectively to the various equipment (using an appropriate number of power supplies and regulators if needed) and make them working together connecting all the GNDs in the same point.
Why doesn't my sketch start when I'm powering the board with an external power supply? (Arduino Diecimila or earlier)
Because the RX pin is unconnected, the bootloader on the board may be seeing garbage data coming in, meaning that it never times out and starts your sketch. Try tying the RX pin to ground with a 10K resistor (or connecting RX directly to the TX pin).
Why does the Arduino software freeze when I try to upload a program? (on Windows)?
This might be caused by a conflict with the Logitech process 'LVPrcSrv.exe'. Open the Task Manager and see if this program is running, and if so, kill it before attempting the upload. more information
What if my board doesn't turn on (the green power LED doesn't light up)?
If you're using a Diecimila or older USB board (e.g. NG), make sure that the jumper (little plastic piece near the USB plug) is on the correct pins. If you're powering the board with an external power supply (plugged into the power plug), the jumper should be on the two pins closest to the power plug. If you're powering the board through the USB, the jumper should be on the two pins closest to the USB plug. This picture shows the arrangment for powering the board from the USB port.
Why does my Diecimila take such a long time (6-8 seconds) to start my sketch?
Some of the Arduino Diecimila boards were accidently burned with the Arduino NG bootloader. It should work fine, but has a longer delay when the board is reset (because the NG doesn't have an automatic reset, so you have to time the uploads manually). You can recognize the NG bootloader because the LED on pin 13 will blink three times when you reset the board (as compared to once with the Diecimila bootloader). If your Diecimila has the NG bootloader on it, you may need to physically press the reset button on the board before uploading your sketch. You can burn the correct bootloader onto your Diecimila, see the bootloader page for details.
What should I do if I get an error when launching arduino.exe on Windows?
If you get an error when double-clicking the arduino.exe executable on Windows, for example:
Arduino has encountered a problem and needs to close.
you'll need to launch Arduino using the run.bat file. Please be patient, the Arduino environment may take some time to open.
Why won't Arduino run on old versions of Mac OS X?
If you get an error like this:
you probably need to upgrade to Max OS X 10.3.9 or later. Older versions have incompatible versions of some system libraries.
Thanks to Gabe462 for the report.
What do I do if I get an UnsatisfiedLinkError error (about native library librxtxSerial.jnilib) when launching Arduino?
If you get an error like this when launching Arduino:
you probably have an old version of the communications library lying around. Search for comm.jar or jcl.jar in /System/Library/Frameworks/JavaVM.framework/ or in directories in your CLASSPATH or PATH environment variables. (reported by Anurag Sehgal)
What about the error 'Could not find the main class.'?
If you get this error when launching Arduino:
Java Virtual Machine Launcher: Could not find the main class. Program will exit.
make sure that you correctly extracted the contents of the Arduino .zip file - in particular that the lib directory is directly inside of the Arduino directory and contains the file pde.jar.
What can I do about cygwin conflicts on Windows?
If you already have cygwin installed on your machine, you might get an error like this when you try to compile a sketch in Arduino:
This problem is probably due to using incompatible versions of the cygwin DLL.
If so, first make sure that you don't have cygwin running when you use Arduino. If that doesn't help, you can try deleting cygwin1.dll from the Arduino directory and replacing it with the cygwin1.dll from your existing cygwin install (probably in c:cygwinbin).
Thanks to karlcswanson for the suggestion.
Why does do the Arduino software and the Tools menu take a long time to open (on Windows)?
If the Arduino software takes a long time to start up and appears to freeze when you try to open the Tools menu, there by a conflict with another device on your system. The Arduino software, on startup and when you open the Tools menu, tries to get a list of all the COM ports on your computer. It's possible that a COM port created by one of the devices on your computer slows down this process. Take a look in the Device Manager. Try disabling the devices that provide COM ports (e.g. Bluetooth devices).
Why doesn't my board show in the Tools Serial Port menu ?
If you're using a USB Arduino board, make sure you installed the FTDI drivers (see the Howto for directions). If you're using a USB-to-Serial adapter with a serial board, make sure you installed its drivers.
Make sure that the board is plugged in: the serial port menu refreshes whenever you open the Tools menu, so if you just unplugged the board, it won't be in the menu.
Check that you're not running any programs that scan all serial ports, like PDA sync applications, Bluetooth-USB drivers (e.g. BlueSoleil), virtual daemon tools, etc.
On Windows, the COM port assigned to the board may be too high. From zeveland:
'One little note if you aren't able to export and your USB board is trying to use a high COM port number: try changing the FTDI chip's COM port assignment to a lower one.
'I had a bunch of virtual COM ports set up for Bluetooth so the board was set to use COM17. The IDE wasn't able to find the board so I deleted the other virtual ports in Control Panel (on XP) and moved the FTDI's assignment down to COM2. Make sure to set Arduino to use the new port and good luck.'
On the Mac, if you have an old version of the FTDI drivers, you may need to remove them and reinstall the latest version. See this forum thread for directions (thanks to gck).
What if I get a gnu.io.PortInUseException when uploading code or using the serial monitor (on the Mac)?
Arduino Error Opening Serial Port Port Busy
This probably means that the port is actually in use by another application. Please make sure that you're not running other programs that access serial or USB ports, like PDA sync application, bluetooth device managers, certain firewalls, etc. Also, note that some programs (e.g. Max/MSP) keep the serial port open even when not using it - you may to need to close any patches that use the serial port or quit the application entirely.
If you get this error with Arduino 0004 or earlier, or with Processing, you'll need to run the macosx_setup.command
, and then restart your computer. Arduino 0004 includes a modified version of this script that all users need to run (even those who ran the one that came with Arduino 0003). You may also need to delete the contents of the /var/spool/uucp directory.
I'm having trouble with the FTDI USB drivers.
Try installing the latest drivers from FTDI or contacting their support at support1@ftdichip.com.
Why doesn't my sketch start when I power up or reset the Arduino board?
Most likely because you are sending serial data to the board when it firsts turns on. During the first few seconds, the bootloader (a program pre-burned onto the chip on the board) listens for the computer to send it a new sketch to be uploaded to the board. After a few seconds without communication, the bootloader will time out and start the sketch that's already on the board. If you continue to send data to the bootloader, it will never time out and your sketch will never start. You'll either need to find a way to stop serial data from arriving for the first few seconds when the board powers (e.g. by enabling the chip that sends the data from within your setup() function) or burn your sketch onto the board with an external programmer, replacing the bootloader.
Why does my sketch appear to upload successfully but not do anything?
You have selected the wrong item from the Tools > Microcontroller menu. Make sure the selected microcontroller corresponds to the one on your board (either ATmega8 or ATmega168) - the name will be written on the largest chip on the board.
Check for a noisy power supply. It's possible this could cause the chip to lose its sketch.
Alternatively, the sketch may be too big for the board. When uploading your sketch, Arduino 0004 checks if it's too big for the ATmega8, but it bases its calculation on a 1 Kb bootloader. You may have a older bootloader that takes up 2 Kb of the 8 Kb of program space (flash) on the ATmega8 instead of the 1 Kb used by the current bootloader. If yours is bigger, only part of the sketch will be uploaded, but the software won't know, and your board will continually reset, pause, reset.
If you have access to an AVR-ISP or parallel port programmer, you can burn the latest version of the bootloader to your board with the Tools Burn Bootloader menu item. Otherwise, you can tell the Arduino environment the amount of space available for sketches by editing the upload.maximum_size variable in your preferences file (see: instructions on finding the file). Change 7168 to 6144, and the environment should correctly warn you when your sketch is too big.
Com Port Busy
How can I reduce the size of my sketch?
Arduino Processing Error Opening Serial Port
The ATmega168 chip on the Arduino board is cheap, but it has only 16 Kb of program code, which isn't very much (and 2 Kb is used by the bootloader).
If you're using floating point, try to rewrite your code with integer math, which should save you about 2 Kb. Delete any #include statements at the top of your sketch for libraries that you're not using.
Otherwise, see if you can make your program shorter.
We're always working to reduce the size of the Arduino core to leave more room for your sketches.
Why don't I get a PWM (an analog output) when I call analogWrite() on pins other than 3, 5, 6, 9, 10, or 11?
The microcontroller on the Arduino board (the ATmega168) only supports PWM/analogWrite() on certain pins. Calling analogWrite() on any other pins will give high (5 volts) for values greater than 128 and low (0 volts) for values less than 128. (Older Arduino boards with an ATmega8 only support PWM output on pins 9, 10, and 11.)
Why do I get errors about undeclared functions or undeclared types?
The Arduino environment attempts to automatically generate prototypes for your functions, so that you can order them as you like in your sketch. This process, however, isn't perfect, and sometimes leads to obscure error messages.
If you declare a custom type in your code and create a function that accepts or returns a value of that type, you'll get an error when you try to compile the sketch. This is because the automatically-generated prototype for that function will appear above the type definition.
If you declare a function with a two-word return type (e.g. 'unsigned int') the environment will not realize it's a function and will not create a prototype for it. That means you need to provide your own, or place the definition of the function above any calls to it.
Why do I get errors about an invalid device signature when trying to upload a sketch?
If you get an error like:
it can mean one of two things. Either you have the wrong board selected from the Tools > Board menu or you're not using the right version of avrdude. Arduino uses a slightly modified version of avrdude to upload sketches to the Arduino board. The standard version queries for the board's device signature in a way not understood by the bootloader, resulting in this error. Make sure you're using the version of avrdude that comes with Arduino (source code).
(4.31 MB) BlueStacks ThinInstaller exe Source title: BlueStacks-ThinInstaller. Exe (4.31 MB) BlueStacks ThinInstaller exe Source title: BlueStacks-ThinInstaller. Exe (3.59 MB) setup exe for spiderman 3 game exe (262.51 MB) BlueStacks setup Mod (262.65 MB) BlueStacks setup Mod (108.4 KB) Setup exe de windowsXP (150 MB) Setup exe (150 MB) Setup exe (150 MB) Setup exe (12.41 MB) Setup exe Also try:,,. Alt j an awesome wave zip download.
Guide HomeThe text of the Arduino getting started guide is licensed under aCreative Commons Attribution-ShareAlike 3.0 License. Code samples in the guide are released into the public domain.