XIAO looses its Ports

The XIAO looses its ports and Windows Reports “Board Not Recognized”. If I reset the XIAO and load the BLINK code this problem does not occur, obviously, there is something wrong with my code. If it compiles correctly for the chosen XIAO Board, how can I find where the problem is in the code. The Compiled Code is obviously changing some code in the XIAO, how can I fix this problem?

Do you have any more detailed and specific information?

The Arduino IDE allows me to Compile the sketch in order to fine “Syntactical” errors in the code. When I load the code into the XIAO, the XIAO looses its Port and becomes unrecognizable to Windows (my OS). This is because the code that was uploaded did something to the Code Space in the XIAO.
Sometimes, I can rectify this condition by “Double Reset” the XIAO but there is no way to know what part of the code needs to be changed.
In a fully embedded micro, the code might pass the Compiler Syntactical Check and still.not perform what the programmer wants to happen, but NEVER would it loose its Hardware Configuration such as its ports. This is a huge problem with the XIAO. I am experimenting with the QT Py to see if this part also has the same issue.
Without having a communications with the XIAO because I have lost the communications Port means that I can do nothing to correct the problem. I am told that this is a know issue with the XIAO, is this true?

You can use the Arduino IDE to download the program to XIAO without any problems, right?
In my experience, the invisible USB port will appear when you reset XIAO (not a double reset) after the download. Perhaps the port number has changed.

NO. I can reset the XIAO and obtain a Port, but when I try to load the sketch, it reboots and then the Port is lost again. Also, there are times when the Upload never stops. I have lost 8-XIAO’s due to this and now I always apply the XIAO with a socket so I do not loose the PCB again.

You’ve probably tried it many times, but why not try downloading again in the following order:

1.Double reset XIAO
2.Be sure to check that the orange LED blinks slowly
3.In the Arduino IDE, go to Tools-> Port and check the port labeled (Seeeduino XIAO)
4.Click the download button

Does Arduino IDE give any message when the download is not successful?
Does “lost 8-XIAO ’s” mean that the bootloader is broken?

I have done all this correctly. After the Upload completed Windows 10 states “Device Unrecognized” and the process stops. If I replace the XIAO with a new part it works. Something happens to the XIAO and it becomes corrupted. I believe that the Upload corrupts some of the internal code for the XIAO.

1 Like

I have the same problem. Out of the blue, the unit would brick. I even used in my code watchdog, and after powering up the unit a few times, it would brick. I feel there is something wrong with the bootloader. I have never had any of my arduino boards brick on me before. I have some of my old ardunios (ex. Mega 2650) running for 3years straight. 24/7 Through power failures and all.
Love the board, just hope there is an update to fix bootloader.

Hi BasicBasic,
I am very interested in this matter. I want to know exactly what is happening, so let me ask you a questions.

  1. Does this happen every time? Or does this happen occasionally?
  2. Does the ArduinoIDE give a “Done uploading” message when the upload is complete?
  3. Where does Windows10 display the “Device Unrecognized” message? Or does the ArduinoIDE display it in the message area? Or does your sketch print on a serial monitor? Or does it mean that you can’t see the port in Windows Device Manager?
  4. When the “Device Unrecognized” message appears, is (SeeeduinoXIAO) unchecked in Tools-> Port ? If so, will it work if you rechuck it?
  5. If possible, could you show me your sketch?

XIAO, which seems to have been bricked, will show a port when double reset. However, double reset is a very difficult operation. You should always make sure that the orange LED blinks slowly to double reset.

I deliberately broke the bootloader and made XIAO brick for the experiment. Bricked XIAO is completely unrecognized by Windows Device Manager when plugged into a USB port. Even if double reset, it will not be recognized at all. I need to rewrite the bootloader to unbrick.

I totally agree…the XIAO is a good idea, but this problem needs to be fixed. I have lost many parts and whole circuit boards because the XIAO was soldered directly without a socket. If the code was loaded successfully there might not be operational failures…but I am scared to use it now.

Answers:

  1. When the XIAO has been assigned correctly, there is a Port Choice available under Tools\Ports and everything works. In my particular case, I started experiencing issues of the XIAO port listing being removed. A Double Reset fixed the issue. However, frequent occurrences of this issue results in the XIAO permanently being corrupted.

  2. The Upload completes successfully and then the device is reset as though the part has just been inserted into the USB Port. It is at this time that Windows 10 reports The Device is Unrecognized and the XIAO is then permanently bricked. Only Windows 10 reports this, it acts like the device is not compatible with the Windows Boot Sequence.

  3. On USB Boot

  4. yes, the XIAO Port is no longer available.

  5. This is not possible as it is a Commercial Development. However, the Compilation Process completes correctly, so there are no “Syntactical Errors”. It appears to me (Embedded Engineer for 20 years) that this process corrupts the Boot Loader. This might be caused by the IDE because it is the communications between the IDS and the XIAO and either part could cause the problem. If the addresses given by the IDS are wrong, this could be fatal. Also, the XIAO should check for this condition and disallow bad instructions.

Hi BasicBasic,
Thank you for your answer.
I started using XIAO for half a year and upload various sketches to XIAO every day. So far, XIAO has bricked a couple of times when I was just starting out. I didn’t investigate the cause at that time, but when I rewrote the boot loader, XIAO unbricked. And I was interested in the topics of port loss or brick in the forum.
I think that if I use a SWD debugger like JLINK to check flash memory or registers of the bricked XIAO, I can analyze what is broken. I have a debugger ready and waiting for my XIAO to brick, but lately my XIAO doesn’t brick at all.

This has started happening to me as well. It started last night and into today. So far a reboot using the reboot pins have fixed the issue. It is only when I try to upload some code I created using the Tiny RTC. Even the set or Read example code will cause it to happen.

This is a very real problem and SeeedStudio need to jump on this immediately. I have lost 8-parts and numerous circuit boards, not to mention the missed delivery schedules I have encountered.

Port loss or brick issues have been repeatedly talked about in forums. But for some reason I haven’t seen Seeed’s views or information on this topic. I think that the priority of this problem is low because it can be solved by rewriting the bootloader.

Hey, our Seeed,
We users would like to know Seeed’s view on this issue.

I have the same problem with the XIAO. It changes the port between 8 and 9 every time I want to upload something. For example when I click upload it changes from 9 to 8 so it fails, then upload again, it changes back to 9, fail again, so only works at the third time if I am lucky.

I’m having a similar problem with bricking the Xiao (posted an explanation today). Resets & double resets don’t recover. I look but don’t find a method to reload the bootloader. I see a partial explanation in this forum but it is far from complete. Is there a better process posted somewhere ? If so please point me.

Creator,
Maybe this post will be helpful.

Well, I’ll have another look at it . The bootloader file called out there doesn’t show up on GitHub & I don’t see it elsewhere. Got a location for it ?

To rewrite the bootloader, you need to use a debugger like ST-Link or JLink, not just a USB-TTL converter. The link below describes how to use XIAO as a debugger. Is it helpful?

The bootloader file should be on your PC.
C:\Users\username\AppData\Local\Arduino15\packages\Seeeduino\hardware\samd\1.8.1\bootloaders\XIAOM0\bootloader-XIAO_m0-v3.7.0-33-g90ff611-dirty.bin