Possibly bad 3pi+ board out-of-box?

Hi, Support.

I think I must have a failing 3pi+ board. It’s a brand new, out-of-box robot that I’m putting together. While the board is always found successfully by Windows and appears normal, It will download once, maybe twice, and then the Arduino IDE starts kicking “port busy” errors. Resetting the board might help, or might not, as does rebooting the computer, but it will always work once or twice and then fail again. Plugging into another USB port or using another cable makes no difference, but changing up the board for another known-good Arduino board with everything else remaining the same works as expected every time. At this point I’m thinking it must be the board. Can you please assist?

Thanks very much,

Andrew Lee

Hello, Andrew.

I am sorry to hear you are having trouble programming your 3pi+ 32U4 robot. If you restart the Arduino IDE after getting the error, are you able to program the 3pi+ control board again? Do you have any other programs running that might be using the same port as the 3pi+? Can you turn on verbose output in the Arduino IDE and post the output that you get at the bottom of the IDE after encountering the error? (You can turn on verbose output by selecting Preferences from the File menu in the Arduino IDE, and then checking the “compilation” and “upload” boxes next to “Show verbose output during:”.)

Can you post a video showing both the successful and the failed attempts? Also, can you post close-up pictures showing all the solder joints on the board?

Finally, what type of board is the known-good Arduino board that works for you every time?

- Amanda

Hello Amanda,

Thanks very much! I’ve attached the verbose output code that you requested below. There are no other programs running that might use the port. This is a brand new board that has not yet been soldered. I cannot get the board to accept a download at all any more. It always fails with the same exception - port busy. I have reset the board, restarted the IDE, restarted the computer, etc… to no avail at all now. Before it would successfully download to the board once or twice before failing.

If I plug another board in, such as an UNO or 2560, it will download just fine every time.

Thank you!

Andrew Lee

C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\andyl\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\andyl\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\andyl\Documents\Arduino\libraries -fqbn=pololu-a-star:avr:a-star32U4 -vid-pid=1FFB_2300 -ide-version=10815 -build-path C:\Users\andyl\AppData\Local\Temp\arduino_build_493233 -warnings=none -build-cache C:\Users\andyl\AppData\Local\Temp\arduino_cache_345214 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Program Files (x86)\Arduino\examples\01.Basics\Blink\Blink.ino
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\andyl\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\andyl\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\andyl\Documents\Arduino\libraries -fqbn=pololu-a-star:avr:a-star32U4 -vid-pid=1FFB_2300 -ide-version=10815 -build-path C:\Users\andyl\AppData\Local\Temp\arduino_build_493233 -warnings=none -build-cache C:\Users\andyl\AppData\Local\Temp\arduino_cache_345214 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Program Files (x86)\Arduino\examples\01.Basics\Blink\Blink.ino
Using board 'a-star32U4' from platform in folder: C:\Users\andyl\AppData\Local\Arduino15\packages\pololu-a-star\hardware\avr\4.0.2
Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Detecting libraries used...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega32u4 -DF_CPU=16000000L -DARDUINO=10815 -DARDUINO_AVR_A_STAR_32U4 -DARDUINO_ARCH_AVR -DUSB_VID=0x1ffb -DUSB_PID=0x2300 "-DUSB_MANUFACTURER=\"Pololu Corporation\"" "-DUSB_PRODUCT=\"Pololu A-Star 32U4\"" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\leonardo" "C:\\Users\\andyl\\AppData\\Local\\Temp\\arduino_build_493233\\sketch\\Blink.ino.cpp" -o nul
Generating function prototypes...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega32u4 -DF_CPU=16000000L -DARDUINO=10815 -DARDUINO_AVR_A_STAR_32U4 -DARDUINO_ARCH_AVR -DUSB_VID=0x1ffb -DUSB_PID=0x2300 "-DUSB_MANUFACTURER=\"Pololu Corporation\"" "-DUSB_PRODUCT=\"Pololu A-Star 32U4\"" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\leonardo" "C:\\Users\\andyl\\AppData\\Local\\Temp\\arduino_build_493233\\sketch\\Blink.ino.cpp" -o "C:\\Users\\andyl\\AppData\\Local\\Temp\\arduino_build_493233\\preproc\\ctags_target_for_gcc_minus_e.cpp"
"C:\\Program Files (x86)\\Arduino\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\andyl\\AppData\\Local\\Temp\\arduino_build_493233\\preproc\\ctags_target_for_gcc_minus_e.cpp"
Compiling sketch...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega32u4 -DF_CPU=16000000L -DARDUINO=10815 -DARDUINO_AVR_A_STAR_32U4 -DARDUINO_ARCH_AVR -DUSB_VID=0x1ffb -DUSB_PID=0x2300 "-DUSB_MANUFACTURER=\"Pololu Corporation\"" "-DUSB_PRODUCT=\"Pololu A-Star 32U4\"" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\leonardo" "C:\\Users\\andyl\\AppData\\Local\\Temp\\arduino_build_493233\\sketch\\Blink.ino.cpp" -o "C:\\Users\\andyl\\AppData\\Local\\Temp\\arduino_build_493233\\sketch\\Blink.ino.cpp.o"
Compiling libraries...
Compiling core...
Using precompiled core: C:\Users\andyl\AppData\Local\Temp\arduino_cache_345214\core\core_pololu-a-star_avr_a-star32U4_0c812875ac70eb4a9b385d8fb077f54c.a
Linking everything together...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-gcc" -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega32u4 -o "C:\\Users\\andyl\\AppData\\Local\\Temp\\arduino_build_493233/Blink.ino.elf" "C:\\Users\\andyl\\AppData\\Local\\Temp\\arduino_build_493233\\sketch\\Blink.ino.cpp.o" "C:\\Users\\andyl\\AppData\\Local\\Temp\\arduino_build_493233/..\\arduino_cache_345214\\core\\core_pololu-a-star_avr_a-star32U4_0c812875ac70eb4a9b385d8fb077f54c.a" "-LC:\\Users\\andyl\\AppData\\Local\\Temp\\arduino_build_493233" -lm
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-objcopy" -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 "C:\\Users\\andyl\\AppData\\Local\\Temp\\arduino_build_493233/Blink.ino.elf" "C:\\Users\\andyl\\AppData\\Local\\Temp\\arduino_build_493233/Blink.ino.eep"
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-objcopy" -O ihex -R .eeprom "C:\\Users\\andyl\\AppData\\Local\\Temp\\arduino_build_493233/Blink.ino.elf" "C:\\Users\\andyl\\AppData\\Local\\Temp\\arduino_build_493233/Blink.ino.hex"
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-size" -A "C:\\Users\\andyl\\AppData\\Local\\Temp\\arduino_build_493233/Blink.ino.elf"
Sketch uses 3966 bytes (13%) of program storage space. Maximum is 28672 bytes.
Global variables use 149 bytes (5%) of dynamic memory, leaving 2411 bytes for local variables. Maximum is 2560 bytes.
Forcing reset using 1200bps open/close on port COM3
processing.app.debug.RunnerException
	at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:152)
	at cc.arduino.UploaderUtils.upload(UploaderUtils.java:77)
	at processing.app.SketchController.upload(SketchController.java:732)
	at processing.app.SketchController.exportApplet(SketchController.java:703)
	at processing.app.Editor$UploadHandler.run(Editor.java:2055)
	at java.lang.Thread.run(Thread.java:748)
Caused by: processing.app.SerialException: Error touching serial port 'COM3'.
	at processing.app.Serial.touchForCDCReset(Serial.java:107)
	at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:136)
	... 5 more
Caused by: jssc.SerialPortException: Port name - COM3; Method name - openPort(); Exception type - Port busy.
	at jssc.SerialPort.openPort(SerialPort.java:164)
	at processing.app.Serial.touchForCDCReset(Serial.java:101)
	... 6 more

The only way we can think of this issue happening is when some other program has the port open. Can you follow this procedure to see what program is using that port?

Can you change the robot’s port number from COM3 to COM8, then unplug it from USB, plug it back in, and try uploading your sketch again?

What version of the Arduino IDE are you running? Can you post pictures showing how you have everything connected?

- Amanda