Adafruit ItsyBitsy M0 Doesn't play nicely with 2.0.3

Hey there wonderful community!

Yesterday I updated my Arduino IDE to 2.0.3, and the ItsyBitsy M0 Express I used about a month back is no longer generating a COM port, so the Arduino IDE won't talk to it.

I know the USB cable and port work, because I can plug in my Metro Express and it works just fine. But, when I connect the ItsyBitsy, I get a Windows message that "USB Device not recognized," and then there is no COM port in the Arduino IDE, either in the automatic dropdown or when I select the ItsyBitsy directly from the "Select Other Board and Port" menu.

This may be an ItsyBitsy issue, so I've posted to Adafruit as well, but given that the change happened when I updated the IDE, I thought perhaps it might be a known issue over here.

Finally, I am using Windows 11 Home, on an Alienware x17 R2. Nothing unusual or fancy about the setup.

Any guidance would be appreciated, and thank you again for your support of this great product!

I am including a picture here of my previous ItsyBitsy project, because it's cool.

Hi @ianlukefinley. The tricky thing about the boards with native USB capability like your board is the USB code that creates the CDC serial port is running on the same microcontroller as your sketch. This means your sketch code can break the USB code, or stop it from running. When that happens, it no longer presents a port.

This can be unexpected to those who previously mainly worked with the boards like Uno and Mega with a dedicated USB chip that can never be affected by the sketch code.

The missing port makes it so you can't upload normally any more. However, the situation is really not so bad because there is an independent program called the bootloader in a separate section of memory from your sketch, and that program has its own USB CDC code. So even if the sketch is completely broken, you only need to activate the bootloader and you will get a port back and be able to upload.

Fortunately, there is an easy way to activate the bootloader and recover from this situation:

  1. Press and release the button on your board marked "RESET quickly twice.
    You should now see the LED on the board pulsing, which means the bootloader is running.
    The double reset causes the bootloader to run until the board is reset normally, powered off, or an upload is done.
  2. Select the port of your board from the Tools > Port menu in the Arduino IDE.
    The port number may be different when the bootloader is running so don't assume you already have the correct port selected.
  3. Start an upload in the Arduino IDE.

The upload should now finish successfully.

After this, you should be able to go back to doing normal uploads without needing to use the reset button technique.

If you still need to do the reset trick to do uploads after this, the problem may be caused by your code. You can verify this by uploading a simple sketch like File > Examples > 01.Basics > BareMinimum.

See, that's the problem I'm running into. On the previous versions of the Arduino IDE there was a Tools>Port menu I could always get to to assign a port. Since I updated to 2.0.3 that option no longer shows up, so I can't select a port for the board even when the bootloader is running. Is there another way to compel the IDE to let me choose a port?

The bootloader "mode" should give you a port. If not, make sure that your cable is a sync cable, not a charge-only cable; test it with e.g. a cell phone (if possible).

Alternative to earlier given solution:

Do you have another board like Uno, Nano or Mega? Or a TTL-to-USB adapter? I suggest that you do NOT use another board with native USB.

If yes, hook that up as well. You will get a port that you can select. Keep your board selection as ItsyBitsy.

Start the upload.

When the IDE reports the memory usage, double tap the reset on the ItsyBitsy.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.