Xiao boards keep burnning out

I have used the Xiao boards on a previous project without issue, but I have another batch I ordered a few months ago that seem to be repeatably burning out after a few minutes of use.

I was just doing some simple Serial testing on them and then noticed the LEDs stopped working and the familiar smell of a burned circuit. After that I can no longer get them to power on, and connecting any power results in high temperatures on the board and the burning smell.

This happened on my 2nd board today and I’m really not sure what could be causing this other than a bad batch. Hoping to understand the cause before burning out any more. Is there any way to check for recalled or bad batches?

I took off the metal cover to inspect the chips for any melting or otherwise wrong-looking components as nothing on the exterior looked or felt wrong. No melted or otherwise burnt out components were visible. I don’t have a thermal gun or anything fancy, but feeling around, the component that is getting VERY hot (painful to touch) is a 3-pin (transistor perhaps?) with label 662K. The Amtel chip was getting warm, but not painfully hot like the 662K component.

My setup was as follows in both cases:

1.) Powering the Xiao from my laptop USB. I measured this to be 5.02V between the Xiao’s 5V and GND pins just in case my laptop USB port was malfunctioning.
2.) Running a simple Serial sketch via VSCode+Platformio and sending serial via the CoolTerm app, but equally could does this with the Arduino IDE’s serial monitor.

Here is the “sketch” (actually a cpp file due to how Platformio runs)

#include <Arduino.h>

int cnt = 0;    // first analog sensor
int inByte = 0;         // incoming serial byte
void establishContact(void);

void setup() {
  // start serial port at 9600 bps and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  establishContact();  // send a byte to establish contact until receiver responds
}

void loop() {
  // if we get a valid byte, read analog ins:
  if (Serial.available() > 0) {
    // get incoming byte:
    inByte = Serial.read();
    Serial.print(cnt);
    cnt++;
  }
}

void establishContact() {
  while (Serial.available() <= 0) {
    Serial.println("Waiting on request");   // send an initial string
    delay(1000);
  }
}

It was running just fine for a few minutes, and then poof, heat and smell. There was nothing closeby such that I would suspect something shorted it or the like. Is there something inherently wrong with my setup that I am causing these boards to fry?

Edit:

Adding a photo of the Digikey packaging and individual packaging with batch and other info in case it is useful.

Is it normal to run this code when you use other XIAO? Is the wiring normal?