MKR WIFI 1010 - Windows 10 does not recognize the board (no com port)

Hi there,
this is my first experience with the Arduino board and I have a MKR WiFi 1010.

I can not make my OS detect it, no COM port is assigned when I plug in the board via micro USB.
This is what I did:

  • downloaded and installed Arduino IDE
  • downloaded and installed SAMD board package
  • installed every driver on every prompt that showed up

Still I am not able to see the COM port when I plug in the MKR 1010.

This is what I see in the device manager (sorry its in italian):

USB device not recognized (device descriptor request failed)

I tried double tapping the RST button right after pluggin the board in, but nothing changes.

When I plug in the board, the green led blinks exactly 4 times, then stops. No other leds are active.
I tried changing the USB cable: no luck.
I tried changing USB port: no luck. Used both front ports and rear ports.
I have read many other posts and follow the suggestions given but still no luck.

I reinstalled everything multiple times, no luck.

Any additional help?

Thank you very much

Cattura.JPG

omagerio:
I tried double tapping the RST button right after pluggin the board in, but nothing changes.

When you do that, does the "L" LED start pulsing?

pert:
When you do that, does the "L" LED start pulsing?

No, it does not. If I press the RST button or not, the only thing that happens is the green led (the one on top of the micro usb) that flashes 4 times, then stops.

OK, well if you don't get the pulsing LED after a double reset then this means the bootloader is missing or damaged on the MKR WiFi 1010. I'm going to provide you with two different set of instructions for how you can install the bootloader. The first is a little more complicated, but can be done with items you may already have on hand. The second requires a specialized piece of hardware that most Arduino users don't already have (but is a useful thing to aquire anyway!).


You'll need:

  • An extra Arduino board that runs at 3.3 V.
  • An SD slot. This could be built into your Arduino board (e.g., MKR Zero), a shield (e.g., MKR SD Proto Shield), or one of the common SD modules.
  • An SD card that fits your SD slot.
  • A way to connect the SD card to your computer.
  • A way to make the connections to the SWD pins on your target Arduino board. For the Nano 33 IoT and the MKR boards other than MKR1000, I like to use a 0.1" pitch 2x3 POGO adapter. You could also solder wires to the test points if you prefer. On the MKR boards other than the MKR1000, the SWD header is on the bottom of the board and is the footprint for a 0.1" pitch 2x3 SMD header (e.g., https://www.digikey.com/short/z3dvdv).
    It is possible to use an Arduino board that runs at 5 V as the programmer, but you'll need to use level shifting circuitry on the programming lines to avoid exposing the target board to 5 V logic levels, which would damage it.

Instructions:

Connect an SD card to your computer.

Open this link in your browser: ArduinoCore-samd/bootloaders at master · arduino/ArduinoCore-samd · GitHub

Click the folder that matches the name of your target board.

Click the file that ends in .bin.

Click the "Download" button.

Rename the downloaded file to fw.bin

Move fw.bin to the SD card.

Eject the SD card from your computer.

Plug the USB cable of the Arduino board you will be using as a programmer into your computer.

(In the Arduino IDE) Sketch > Include Library > Manage Libraries

Wait for the download to finish.

In the "Filter your search..." field, type "Adafruit DAP library".

Press "Enter".

Click on "Adafruit DAP library by Adafruit".

Click the "Install" button.

Wait for the installation to finish.

Click the "Close" button.

File > Examples > Adafruit DAP library > flash_from_SD

Change this line:

#define SD_CS 4

according to the Arduino pin connected to the SD CS pin. If your board has a built-in SD slot (e.g., MKR Zero), then you can change this line:

if (!SD.begin(SD_CS)) {

to:

if (!SD.begin()) {

Select the correct board from the Tools > Board menu.

Select the correct port from the Tools > Port menu.

Sketch > Upload

Wait for the upload to finish successfully.

Unplug the programmer Arduino board from your computer.

Plug the SD card into the SD slot connected to your Arduino board.

Connect the programmer Arduino board to the target Arduino board as follows:

| Programmer | | Target |
| - | - |
| ----------- | |------- |
| VCC | | +3V3 |
| ----------- | |------- |
| 10 | | SWDIO |
| ----------- | |------- |
| 9 | | SWCLK |
| ----------- | |------- |
| GND | | GND |
| ----------- | |------- |
| 11 | | RESETN |
| ----------- | |------- |

MKR board (except MKR 1000) SWD pads:
MKRZero_labeled.jpg
Plug the USB cable of the programmer Arduino board into your computer.

Tools > Serial Monitor. You should now see the target board detected, and the bootloader file flashed to it successfully.

Unplug the programmer Arduino board from your computer.

Disconnect the programmer Arduino board from the target Arduino board.


Note: if you have a CMSIS-DAP debugger, you can just do this instead:

  • Connect the debugger to your Arduino board.
  • (In the Arduino IDE) Tools > Programmer > Atmel EDBG
  • Tools > Burn Bootloader

I use this little open source debugger.

Thank you very much pert.
At the moment the MKR 1010 is the only board I have at my disposal, so, having to buy something anyway, I think I'll go with the CMSIS-DAP debugger as you suggested. I'll let you know when I solve this issue (shipping times are an hassle).

Thank you again

You're welcome. I'm glad if I was able to be of assistance.

The CMSIS-DAP is definitely useful to have on hand. You can use it with the built-in debugger of the Arduino Pro IDE for advanced debugging of your sketches. The Pro IDE is still in the alpha development phase, so it's mostly only intended for beta testing right now, but I have still had some good experiences using it with my CMSIS-DAP debugger and my MKR boards.

I certainly sympathize with the shipping delay issue. I'm sure you would like to be able to get your board in working condition immediately so you can get back to having fun with it! This is the reason why I provide the instructions for the "Adafruit_DAP" approach.

Note that you should be able to use any CMSIS-DAP debugger for this purpose. I just added a link to the one I have used myself. I know the Black Magic Probe is a popular option.

If you have access to a J-Link, there is another option:

I've used that successfully with my MKR boards, but it's much less convenient and I haven't found any other uses for the J-Link. That project also claims to work with ST-Link, but I haven't had any luck with that.

Hello,

I own an Arduino board "MKR1000" and would like to operate it at the IDE Pro. I also want to use the debugger. I loaded a boot loader onto the board as described by pert. The bootloader "GitHub - adafruit/Adafruit_Adalink: Python wrapper for Segger's J-Link Commander & STMicro STLink V2 to flash various ARM MCUs" loaded onto the MKR-board without any problems. However, when I run it on the IDE, I keep getting the message: "unable to find CMSIS-DUP device" when debugging.
Further I have found if I use an "Arduino UNO" the SRAM of the CPU "328" is too small for the bootloader and I have no space for an User program like "blink" or "flash_from_SD".
regards Jurgen

riejue1:
I own an Arduino board "MKR1000" and would like to operate it at the IDE Pro.

Should work just fine. If you have any problems, feel free to make a dedicated forum topic about it.

riejue1:
I also want to use the debugger. I loaded a boot loader onto the board as described by pert.

I'm having a lot of trouble understanding what you're trying to accomplish. Are you trying to burn the bootloader on the MKR 1000, or are you trying to do ICE debugging of your MKR 1000?

Hello pert,
thank you for your answer.

Please excuse me if I expressed myself incomprehensibly. I want to try to explain my intention better.
I want to debug a program (by IDE Pro), that I have loaded onto the Arduino MKR1000, for example "Blink".
I understood in your post, I have to load the bootloader onto the board because the MKR1000 does not have a debugger.
I did this with the "Atmel Studio7".
I have opend the Link ArduinoCore-samd/bootloaders at master · arduino/ArduinoCore-samd · GitHub and I have downloded the bootloader. Than I have the programmer SEEGER EDU connected to MKR1000 and the bootloader uploaded. Ich think that is the way to debbug a programm at MKR1000, or is this not correct?
regards Jurgen

MKR1000.jpg

MKR1000.jpg

riejue1:
I want to debug a program (by IDE Pro), that I have loaded onto the Arduino MKR1000, for example "Blink".
I understood in your post, I have to load the bootloader onto the board because the MKR1000 does not have a debugger.

That's incorrect. Debugging and burning the bootloader are two separate things.

Burning the bootloader is useful for to recover the board when something was done that corrupted the bootloader on the board, preventing normal uploads, or if you are making your own board from scratch using a factory fresh chip without a bootloader installed. In order to burn the bootloader you need a separate programmer. It is possible to convert an Arduino board into a programmer using that "Adafruit_DAP" library, or you can use a hardware debugger as a programmer.

Even though it also required a hardware debugger, hardware debugging of a sketch running on your MKR 1000 is completely different from burning the bootloader. There is no need to burn the bootloader to do this and burning the bootloader won't be helpful at all. You'll need a separate CMSIS-DAP hardware debugger to do this. You can't use an Arduino board running the Adafruit_DAP library for this purpose. Just plug it in to your MKR 1000 and start the debugger in Arduino Pro IDE

riejue1:
I have opend the Link ArduinoCore-samd/bootloaders at master · arduino/ArduinoCore-samd · GitHub and I have downloded the bootloader.

That's unnecessary.

riejue1:
Than I have the programmer SEEGER EDU connected to MKR1000

Although I don't have any experience with the Segger EDU, I believe you should be able to use it for debugging with your MKR 1000. Give it a try and let us know how it goes.

riejue1:
and the bootloader uploaded.

That's unnecessary, but it does no harm.

riejue1:
Ich think that is the way to debbug a programm at MKR1000, or is this not correct?

Just forget about burning the bootloader and you should be on the right track.

Hello pert,
thank you very much for your answer.
O dear! I noticed that I misunderstood everything about the "bootload and debugger".
I still have a lot to learn.

I want to implement what you have told me.
Once more many thanks for your help.
regards jurgen

I'm glad if I was able to be of assistance.

If you have any problems or questions, please let me know. I don't have any experience with Atmel Studio or the Segger EDU, but I have successfully done some basic debugging with a CMSIS-DAP debugger, MKR 1000, and Arduino Pro IDE, so I still might be able to help.

Hello pert,
I tested your suggestions.
First with the Atmel Studio 7 (Microchip Studio). There is an Item in "new Project", -> "Create project from Arduino sketch".

Using this element, I can create a loadable program and upload it to my MKR1000 using the J-Link debugger. This procedure went through without any problems. The debug process takes some getting used to.
I have to a long time exercise to understand the debugging.

Second I try this Procedure with the Arduino Pro and also the J-Link Debugger. So far without success.
After a long search I came across the "Visual Studio" from "Microsoft". It is also used with the "IDE Pro". However, there is a detailed explanation of the Visual Studio. It also supports the Arduino boards. The J-Link Debugger should also be able to be used.

I still have to find out how to do this.

I'll get in touch when I know more.

regards Jurgen

Hello Pert,
It took me a long time to get used to "PlatformIO". In the meantime I can test my Arduino sketches in debug mode on this platform. I use my J-Link adapter for this, which works fine with this IDE.

I can't connect the adapter to the Arduino Pro IDE. The adapter is connected directly to the board via USB and that is not possible with the Pro IDE. PlatformIO offers a lot more possibilities for boards and frameworks. It is similar to the IDE in use.
Regards Jurgen

Thanks for taking the time to post an update with your findings @riejue1. I'm glad you're having good success with your debugging endeavors. I've tried PlatformIO and it's nice that this software is available, but it's not what I'm interested in. My interest is in making embedded systems accessible to everyone. In my opinion, the Arduino IDE does the best job at that. But some more advanced users have no interest in that side of things and for them PlatformIO may be ideal.

My CMSIS-DAP programmer is also USB, plugs right in to my MKR 1000, and works fine with Arduino Pro IDE, but as I said, I don't have any experience with the J-Link, so that may be a very different situation.