Why are the MKR series USB ports so unreliable?

I've been using the MKR series for some time now, and constantly struggle with keeping the USB COM port reliable on the series of MKR products. It seems that the COM port is fine for a while, then it gets in a huff and usually requires one of the following to get it working again:

A) Uninstall both upload and normal COM ports for the board
B) Double click usually brings back the upload port but not the debug port
C) plug the MKR board into a different USB port (sometimes works)
D) Move the port to a different COM number
E) reboot the computer and try all of the above over and over until it works >:(

When this happens, the port is selectable from the drop down list and can be seen in hardware manager, but trying to open serial monitor in Arduino IDE reports:

Error opening serial port 'COM2'. (Port not found)

and uploading code reports:

	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:2075)
	at java.lang.Thread.run(Thread.java:748)
Caused by: processing.app.SerialException: Error touching serial port 'COM2'.
	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 - COM2; Method name - openPort(); Exception type - Port not found.
	at jssc.SerialPort.openPort(SerialPort.java:167)
	at processing.app.Serial.touchForCDCReset(Serial.java:101)
	... 6 more

This is different from the port missing message when the device is physically unplugged, so you can see the port in the drop down list, it just can't seem to open it.

I actually find OTA updates more reliable than using the USB port, but of course serial debugging to the monitor is not as easy!

The MKR and a few other boards have DUAL COM ports.

One is the regular one and the other is the BOOTLOADER.
During programming it would be normal to see it swap those ports then swap back.

Quickly double pressing the reset button will hold it in the BOOTLOADER mode which is useful in case your sketch is not quite perfect.

Putting a general list below some of which may be useful now or in the near future.
Note the USB and Antivirus one.

Please take a few moments to Learn and Use The Forum

How to get the best out of this forum Installation & Troubleshooting

Hello, Welcome to the Arduino Forum. This guide explains how to get the best out of this forum. Please read and follow the instructions below. Being new here you might think this is having rules for the sake of rules, but that is not the case. If you don’t follow the guidelines all that happens is there is a long exchange of posts while we try to get you to tell us what we need in order to help you, which is frustrating for you and frustrating for us. The people who try to help with your pro…

It will help you get the very best out of the forum in the future.

  • Your OS and version can be valuable information, please include it along with extra security you are using. Antivirus etc.
  • Always list the version of the IDE you are using and the board version if applicable.
  • Use quote or add error messages as an attachment NOT a picture.
  • How to insert an image into your post. ( Thanks sterretje )
  • Add your sketch where applicable but please use CODE TAGS
  • Add a SCHEMATIC were needed even if it is hand drawn
  • Add working links to any specific hardware as needed (NOT links to similar items)
  • Remember that the people trying to help cannot see your problem so give as much information as you can


  • Ensure you have FULLY inserted the USB cables.
  • Check you have a COMMON GROUND where required. ( Thanks Perry)
  • Where possible use USB 2.0 ports or a USB 2.0 POWERED HUB to rule out USB 3.0 issues.
  • Try other computers where possible.
  • Try other USB leads where possible.
  • You may not have the correct driver installed. CH340/341 or CP2102 or FT232 VCP Drivers - FTDI
  • There may be a problem with the board check or remove your wiring first.
  • Remove any items connected to pins 0 and 1.


  • Close any other serial programs before opening the IDE.
  • Ensure you turn off any additional security / antivirus just to test.
  • There may be a problem with the PC try RESTARTING it.
  • You may be selecting the wrong COM port.
  • Avoid cloud/network based installations where possible OR ensure your Network/Cloud software is RUNNING.
  • Clear your browsers CACHE.
  • Close the IDE before using any other serial programs.
  • Preferably install IDE’s as ADMINISTRATOR or your OS equivalent


  • CH340/341 based clones do not report useful information to the “get board info” button.
  • NANO (Old Types) some require you to use the OLD BOOTLOADER option.
  • NANO (ALL Types) See the specific sections lower in the forum.
  • NANO (NEW Types) Install your board CORE’s.
  • Unless using EXTERNAL PROGRAMMERS please leave the IDE selection at default “AVRISP mkII”.
  • Boards using a MICRO usb connector need a cable that is both DATA and CHARGE. Many are CHARGE ONLY.

CREATE editor install locations.

  • On macOs ~/Applications/ArduinoCreateAgent-1.1/ArduinoCreateAgent.app/Contents/MacOS/config.ini
  • On Linux ~/ArduinoCreateAgent-1.1/config.ini
  • On Windows C:\Users[your user]\AppData\Roaming\ArduinoCreateAgent-1.1

Performing the above actions may help resolve your problem without further help.

Language problem ?

Try a language closer to your native language:

Thanks to all those who helped and added to this list.


Just replying to this post. I am (and many others) experiencing the same issue.
I think I am starting to regret purchasing these MKR1010 modules. Indeed, basic functionality is not reliable. I havent found any form statement from the Arduino organisation about recognising the problem and working on a fools proof solution.


I just purchased a MKR1010 and have yet to get my Windows 7 Pro 64 bit system to be able to upload a sketch to it. I'm having no other issues with any of my other Arduinos (Uno, Mega, Mini, Micro, etc). I'm attempting to upload the simple Blink sketch and keep getting the infamous "An error occurred while uploading the sketch." The IDE recognizes the board and properly identifies it as a MKR1010. I am using IDE Version 1.8.10. I have reset the board by double clicking the reset so that the on board LED "breaths" and still no joy. Here is the error message:

Forcing reset using 1200bps open/close on port COM26
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
PORTS {COM13, COM26, } / {COM13, COM26, } => {}
Uploading using selected port: COM26
C:\Users\BigDog4\AppData\Local\Arduino15\packages\arduino\tools\bossac\1.7.0-arduino3/bossac.exe -i -d --port=COM26 -U true -i -e -w -v C:\Users\BigDog4\AppData\Local\Temp\arduino_build_355435/Blink.ino.bin -R
Set binary mode
version()=v2.0 [Arduino:XYZ] Mar 19 2018 09:45:14
Connected at 921600 baud
Atmel SMART device 0x10010005 found
Device : ATSAMD21G18A
Chip ID : 10010005
version()=v2.0 [Arduino:XYZ] Mar 19 2018 09:45:14
Version : v2.0 [Arduino:XYZ] Mar 19 2018 09:45:14
Address : 8192
Pages : 3968
Page Size : 64 bytes
Total Size : 248KB
Planes : 1
Lock Regions : 16
Locked : readWord(addr=0x41004020)=0xffff
Security : false
Boot Flash : true
BOD : true
BOR : true
Erase flash
done in 0.605 seconds

Write 12260 bytes to flash (192 pages)
writeBuffer(scr_addr=0x20005000, dst_addr=0x2000, size=0x1000)

SAM-BA operation failed
An error occurred while uploading the sketch

[========== ] 33% (64/192 pages)write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0x3000, size=0x1000)

[==================== ] 66% (128/192 pages)write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0x4000, size=0x1000)

[==============================] 100% (192/192 pages)
done in 0.071 seconds

Verify 12260 bytes of flash with checksum.
checksumBuffer(start_addr=0x2000, size=0x1000) = 15c4
checksumBuffer(start_addr=0x3000, size=0x1000) = 5276
checksumBuffer(start_addr=0x4000, size=0xfe4) = df53
Verify successful
done in 0.016 seconds
CPU reset.

I can't wait to get this IOT board going. I'm sure I have over looked something simple but I can't seem to determine ehat it is. Any ideas? Thanks in advance for the help! I'll be happy to post more info if needed.

There have been multiple reports about 1.8.10 and various issues.
I would suggest roll back to 1.8.9 for now to see if that alleviates the issue.

Extra clean up instructions also attached.



I will give it a try. Thanks for the help Bob!

You might consider migrating to the uf2 bootloader. UF2 mounts a drive on your desktop when you double tap the reset button to enter bootloader mode. Then you can simply drag and drop a file from your computer onto the drive to flash the device.

It is a complicated process to change the bootloader, but I find it is quite convenient after you have done so.

This won't solve com port problems but does lend itself to more convenient flashing.

@Kadams58 I had this error on my W7 machine as well, yet the sketch always uploaded correctly. Something to do with the reset process, switching the port from bootloader to normal after flashing and IDE not seeing the correct port or something. Same thing happened when adding a new IoT board to device manager, took ages to have a successful crypto chip configuration attempt.

I'm on a W10 machine now and everything works fine.

Judging by the output you printed, are you sure the sketch isn't uploaded correctly and running as it should?