-
Notifications
You must be signed in to change notification settings - Fork 558
Description
Operating System
Mac OS
INFO_UF2.TXT
UF2 Bootloader 0.10.0-2-g899e037-dirty
Model: Seeed XIAO nRF52840
Board-ID: nRF52840-SeeedXiao-v1
Date: Mar 15 2026
SoftDevice: S140 7.3.0
What happened ?
Hi,
I’m using the Adafruit nRF52 bootloader on a Seeed XIAO nRF52840, and I’m seeing a different behavior depending on how the bootloader is entered.
Behavior
1️⃣ Double-tap reset
Device enumerates with UF2 mass storage as expected:
Media:
nRF UF2
Capacity: ~33 MB
macOS system_profiler confirms the MSC interface is present.
2️⃣ 1200-baud touch
Triggering bootloader with:
python3 - <<'PY'
import serial, time
port = "/dev/cu.usbmodem101"
s = serial.Serial(port, 1200)
time.sleep(0.2)
s.close()
time.sleep(2)
PYThe device resets and appears as:
XIAO nRF52840
Vendor ID: 0x2886
Product ID: 0x0044
but no UF2 mass-storage drive is exposed.
So it looks like:
- 1200-touch → bootloader but no MSC
- double-tap → full UF2 bootloader with MSC
Question
Is this expected behavior?
Or should 1200-baud touch trigger the same bootloader mode as double-tap reset, including the UF2 MSC interface?
Context
Goal is to support automated firmware flashing from a web tool, where the browser:
- opens serial at 1200 baud
- device enters bootloader
- UF2 drive appears
- UF2 file is copied automatically
So ideally both entry methods would expose the same interfaces.
Thanks!
How to reproduce ?
Triggering bootloader with:
python3 - <<'PY'
import serial, time
port = "/dev/cu.usbmodem101"
s = serial.Serial(port, 1200)
time.sleep(0.2)
s.close()
time.sleep(2)
PYNo USB drive will be listed
Debug Log
No response
Screenshots
No response