-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Unable to get into .UF2 boot mode from code #10247
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
I would ask: what does "does not work" mean ? But you have the last line wrong, so if that's the code you are actually using (and not a typo here), you would have gotten a This is what you want: import microcontroller
microcontroller.on_next_reset(microcontroller.RunMode.UF2)
microcontroller.reset() It works for me (tested on a TFT feather and a QTPY on 9.2.7). |
I tried this with a:
What does not work mean:
Here, what I get in PUTTY: Adafruit CircuitPython 9.2.7 on 2025-04-01; DFRobot FireBeetle 2 ESP32-S3 with ESP32S3 Immediately after reset() the serial connection is lost and Putty brings up a error message! Also: I am asking this in part also, because with all three boards I can not get into the .UF2 "drive by pressing the BOOT / RESET combination. And "Yes" I got this working on other boards. PS: I added manually the ' quote sign in front of the > > > chars from the REPL |
Additional info: I get a "new" COM-Port and a "bad" ESP32S3 device in the Windows "device manager" |
I just tested the UF2 code above on a ESP32-S3 Reverse TFT Feather with a fresh install of CircuitPython 9.2.7, and it works correctly, it reboots into the FTHRS3BOOT UF2 drive. What version is your TinyUF2 Bootloader ?
|
Is the UF2 bootloader even installed ? How did you install Circuitpython if you can't get into the UF2 bootloader ? The installer on the board page ? (you want the full/uf2 install) Or did it work and no longer does ? |
I will try again with CP 9.2.7 I falsely stated above that I tested with the Reverse TFT Feather with 9.2.7 but when I checked it was version 9.2.4. I updated the bootloader from https://circuitpython.org/board/adafruit_feather_esp32s3_reverse_tft/ using the open installer. Also when typing now: The FTHRS3BOOT appears. Thank you snkYmkrct for mentioning the bootloader ! |
I have no idea how I got "rid of" the bootloader on the adafruit_feather_esp32s3_reverse_tft On the firebeetle2 there is no bootloader option on https://circuitpython.org/board/firebeetle2_esp32s3/ |
You can download the UF2 bootloader from the tinyuf2 repo and the process to install should be the same as the reverse tft feather, using the |
After using combined.bin from tinyuf2-firebeetle2_esp32s3-0.30.0.zip and rebooted, the drive FIRE2BOOT appeared. import microcontroller Brings me again into the FIRE2BOOT drive! Great! One small thing remains and this may be specific to the firebeetle2: When I press the BOOT RESET combination, the board does not come up with the FIRE2BOOT drive but the COM-Port comes up with the USB / JTAG serial debug unit (COM46 in my case) I will try my yd_esp32_s3_n16r8 board next. |
Holding BOOT and pressing RESET puts the board in the ROM bootloader. The UF2 bootloader should start by double pressing RESET -- you may need to try a few times to get the timing right -- see more details here |
With (much) older versions of CircuitPython I was able to get into .UF2 boot mode from inside a running CircuitPython app.
The current instructions / documentation in circuitpython.org for version 9 suggest to code like so:
import microcontroller
microcontroller.on_next_reset(microcontroller.RunMode.UF2)
microcontroller.on_next_reset()
However, this currently does not work for me for any ESP32S3 boards I have access to.
Any ideas ?
Thomas
The text was updated successfully, but these errors were encountered: