"Download error" and "Unable to Reboot" in Teensy Loader when trying to upload Blink sketch

Hello! I received a Teensy 4.1 today but it appears to not work (anymore). Please find below a simple list of steps to illustrate the issue. Please note that there is also a short “history” of what I did at the bottom.


Problem flow​


  • I use Arduino IDE Version 2.3.4
  • I use Arduino IDE Board manager version 1.59.0
  • I connect the Teensy 4.1 via a USB 2.0 Lead A Plug To Micro B 5 pin Data Cable
  • I press the button on the Teensy 4.1 so that the red light turns on a solid red:
20250207_165300 (1).jpg

  • Teensy 4.1 appears in the list of available devices in the Arduino IDE:

image.png

  • The sketch I’m trying to upload is a simple Blink sketch:
C++:
void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);


  digitalWrite(LED_BUILTIN, HIGH);
  delay(300);
  digitalWrite(LED_BUILTIN, LOW);
  delay(300);
}

  • I press Upload in the Arduino IDE
  • Teensy Loader opens, saying “Erasing…”

ezgif-114205dd64bd4.jpg

  • Uploading seems incomplete; it says “Download Error”
downloaderror.jpg

  • When trying to reboot via the Reboot button, the following message appears:

unable-to-reboot-error.jpg


Additional information​


When I had first received the Teensy 4.1 today, I was able to upload a Blink sketch. Since then, I have done the following — please let me know whether this could have had any impact.
  • I have soldered all of the pins (previously, I had only soldered the corner pins). See photo below.
20250207_163151 (1).jpg

  • I have an existing Electrical circuit which is currently powered by an Arduino. I tried to replace the Teensy with it. A short outline of the circuit how it was set up with the Teensy as well as a photo.
    • Power supply of 5V positive goes into Breadboard
    • Power supply negative/Ground goes into Breadboard ground
    • Breadboard positive row leads into LED strip WS2812B positive power cable
    • LED strip negative/ground row leads into Breadboard ground
    • Teensy pin 0 goes into breadboard, over a 1K resistor, into the data line of the LED strip
    • Teensy ground goes into negative/ground row of Breadboard
    • The LED strip has on the data line another ground which goes also into the breadboard
20250207_170959 (1).jpg


Question​


Is it possible that I somehow broke the device by attaching the breadboard ground (coming from a 5V power supply) into the Teensy, which can only deal with 3.3V? Is it because I didn’t use a Level shifter from Teensy pin 0 when going into the LED strip which requires a 5V signal? I would have assumed that in this case only the LED strip would have been damaged, not the Teensy.


I’m aware that I’m not the brightest at Electronics but I genuinely, sincerely ask for help. I thank you kindly in advance.
 
  • Teensy 4.1 appears in the list of available devices in the Arduino IDE:

This is a good sign. Teensy is probably still working.

Often this sort of problem happens because external circuitry uses too much power or has grounding problems (in conflict with ground connected through your PC) or interferes in difficult to anticipate ways.

Can you disconnect all other hardware, so you're using only Teensy connected to your PC by a good USB cable?
 
Hi Paul, thank you for your quick reply! I should have mentioned: the steps above to replicate the issue have been all done while only having the Teensy connected to my computer. The Teensy itself is not connected to any electrical circuit anymore.
 
In Teensy Loader, click Help > Verbose Information. Clear the log (click Log menu in the Verbose Info window), then try loading code, then save the log to a file. You can share it here with "Attach files". Might need to put it in a zip archive first.
 
Here is the log from Uploading:
Code:
17:42:02.240 (loader): remote connection 1400 opened
17:42:02.240 (loader): remote cmd from 1400: "comment: Teensyduino 1.59 - WINDOWS (teensy_post_compile)"
17:42:02.240 (loader): remote cmd from 1400: "status"
17:42:02.240 (post_compile 5): Begin, pid=9080, version=1.59, high-res time
17:42:02.242 (post_compile 5): ARDUINO_USER_AGENT = "arduino-cli/1.1.1 arduino-ide/2.3.4 grpc-node-js/1.9.5"
17:42:02.242 (post_compile 5): Sending command: comment: Teensyduino 1.59 - WINDOWS (teensy_post_compile)
17:42:02.244 (loader): file changed
17:42:02.244 (loader): File "C:\Users\ricks\AppData\Local\arduino\sketches\7881BC4B05B253993122F840CD792183\blink_custom.ino.hex", 21504 bytes
17:42:02.244 (loader): File "blink_custom.ino.hex". 21504 bytes, 0% used
17:42:02.256 (loader): remote cmd from 1400: "dir:C:\Users\ricks\AppData\Local\arduino\sketches\7881BC4B05B253993122F840CD792183\"
17:42:02.270 (post_compile 5): Status: 1, 0, 1, 1, 0, 0, C:\Users\ricks\AppData\Local\arduino\sketches\7881BC4B05B253993122F840CD792183\, blink_custom.ino.hex
17:42:02.270 (post_compile 5): Sending command: dir:C:\Users\ricks\AppData\Local\arduino\sketches\7881BC4B05B253993122F840CD792183\
17:42:02.271 (post_compile 5): Sending command: file:blink_custom.ino.hex
17:42:02.272 (loader): remote cmd from 1400: "file:blink_custom.ino.hex"
17:42:02.272 (loader): File "C:\Users\ricks\AppData\Local\arduino\sketches\7881BC4B05B253993122F840CD792183\blink_custom.ino.hex", 21504 bytes
17:42:02.272 (loader): File "blink_custom.ino.hex". 21504 bytes, 0% used
17:42:02.288 (loader): remote cmd from 1400: "status"
17:42:02.301 (post_compile 5): Status: 1, 0, 1, 1, 0, 0, C:\Users\ricks\AppData\Local\arduino\sketches\7881BC4B05B253993122F840CD792183\, blink_custom.ino.hex
17:42:02.301 (post_compile 5): Disconnect
17:42:02.319 (loader): remote connection 1400 closed
17:42:02.479 (post_compile 6): Begin, pid=21916, version=1.59, high-res time
17:42:02.481 (loader): remote connection 1400 opened
17:42:02.483 (loader): remote cmd from 1400: "comment: Teensyduino 1.59 - WINDOWS (teensy_post_compile)"
17:42:02.483 (post_compile 6): ARDUINO_USER_AGENT = "arduino-cli/1.1.1 arduino-ide/2.3.4 grpc-node-js/1.9.5"
17:42:02.483 (post_compile 6): port = "usb:80001/3/0/1"
17:42:02.483 (post_compile 6): Sending command: comment: Teensyduino 1.59 - WINDOWS (teensy_post_compile)
17:42:02.484 (loader): remote cmd from 1400: "status"
17:42:02.487 (loader): remote cmd from 1400: "dir:C:\Users\ricks\AppData\Local\arduino\sketches\7881BC4B05B253993122F840CD792183\"
17:42:02.487 (post_compile 6): Status: 1, 0, 1, 1, 0, 0, C:\Users\ricks\AppData\Local\arduino\sketches\7881BC4B05B253993122F840CD792183\, blink_custom.ino.hex
17:42:02.487 (post_compile 6): Sending command: dir:C:\Users\ricks\AppData\Local\arduino\sketches\7881BC4B05B253993122F840CD792183\
17:42:02.489 (post_compile 6): Sending command: file:blink_custom.ino.hex
17:42:02.489 (loader): remote cmd from 1400: "file:blink_custom.ino.hex"
17:42:02.495 (loader): File "C:\Users\ricks\AppData\Local\arduino\sketches\7881BC4B05B253993122F840CD792183\blink_custom.ino.hex", 21504 bytes
17:42:02.497 (loader): File "blink_custom.ino.hex". 21504 bytes, 0% used
17:42:02.514 (loader): remote cmd from 1400: "status"
17:42:02.522 (post_compile 6): Status: 1, 0, 1, 1, 0, 0, C:\Users\ricks\AppData\Local\arduino\sketches\7881BC4B05B253993122F840CD792183\, blink_custom.ino.hex
17:42:02.522 (post_compile 6): Disconnect
17:42:02.546 (loader): remote connection 1400 closed
17:42:02.546 (loader): remote connection 1400 opened
17:42:02.546 (post_compile 7): Running teensy_reboot: "C:\Users\ricks\AppData\Local\Arduino15\packages\teensy\tools\teensy-tools\1.59.0\teensy_reboot.exe" teensy_reboot.exe "-board=TEENSY41" "-port=usb:80001/3/0/1" "-portlabel={serial.port.label}" "-portprotocol={serial.port.protocol}"
17:42:02.561 (loader): remote connection 1372 opened
17:42:02.561 (loader): remote cmd from 1372: "show:arduino_attempt_reboot"
17:42:02.561 (loader): got request to show arduino rebooting message
17:42:02.563 (reboot 8): Begin, pid=16524, version=1.59, high-res time
17:42:02.563 (reboot 8): location = usb:80001/3/0/1
17:42:02.563 (reboot 8): portprotocol = {serial.port.protocol}
17:42:02.563 (reboot 8): portlabel = {serial.port.label}
17:42:02.563 (reboot 8): portprotocol missing, infer "Teensy" from location
17:42:02.563 (reboot 8): Only location usb:80001/3/0/1 will be tried
17:42:02.563 (reboot 8): LoadLibrary cfgmgr32 ok
17:42:02.563 (reboot 8): LoadLibrary ntdll ok
17:42:02.563 (reboot 8): found_usb_device, id=\\?\usb#vid_16c0&pid_0478#001965c3#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
17:42:02.563 (reboot 8): found_usb_device, loc=usb:80001/3/0/1    Port_#0001.Hub_#0002
17:42:02.563 (reboot 8): found_usb_device, devinst=00000005
17:42:02.563 (reboot 8): found_usb_device, hwid=USB\VID_16C0&PID_0478&REV_0108
17:42:02.563 (reboot 8): add: loc=usb:80001/3/0/1, class=HID, vid=16C0, pid=0478, ver=0108, serial=001965c3, dev=\\?\usb#vid_16c0&pid_0478#001965c3#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
17:42:02.563 (reboot 8): hiddev_from_devinst_list: iface=0
17:42:02.564 (reboot 8): found_usb_device complete
17:42:02.565 (reboot 8): hid, found devinst=0000000B
17:42:02.565 (reboot 8): usb scan found 1 devices
17:42:02.569 (reboot 8): found Teensy Loader, version 1.59
17:42:02.569 (reboot 8): Sending command: show:arduino_attempt_reboot
17:42:02.577 (loader): remote cmd from 1372: "comment: Teensyduino 1.59 - WINDOWS (teensy_reboot)"
17:42:02.578 (reboot 8): Sending command: comment: Teensyduino 1.59 - WINDOWS (teensy_reboot)
17:42:02.580 (loader): remote cmd from 1372: "status"
17:42:02.580 (loader): remote cmd from 1372: "auto:on"
17:42:02.580 (loader): File "C:\Users\ricks\AppData\Local\arduino\sketches\7881BC4B05B253993122F840CD792183\blink_custom.ino.hex", 21504 bytes
17:42:02.585 (reboot 8): Status: 1, 0, 1, 1, 0, 0, C:\Users\ricks\AppData\Local\arduino\sketches\7881BC4B05B253993122F840CD792183\, blink_custom.ino.hex
17:42:02.585 (reboot 8): Sending command: auto:on
17:42:02.585 (reboot 8): send: auto:on
17:42:02.588 (reboot 8): Disconnect
17:42:02.593 (loader): File "blink_custom.ino.hex". 21504 bytes, 0% used
17:42:02.611 (loader): begin elf_guess_size
17:42:02.611 (loader): found elf file
17:42:02.611 (loader): read elf files into memory, 486976 bytes
17:42:02.625 (loader): elf appears to be for Teensy 4.1 (IMXRT1062) (8126464 bytes)
17:42:02.625 (loader): elf binary data matches hex file
17:42:02.625 (loader): elf file is for Teensy 4.1 (IMXRT1062) (id=25)
17:42:02.625 (loader): using hex file
17:42:02.660 (loader): begin operation
17:42:02.687 (loader): remote connection 1372 closed
17:42:02.687 (loader): remote connection 1400 closed
17:42:02.708 (loader): flash, block=0, bs=1024, auto=1
17:42:32.718 (loader): program: write error
17:42:32.718 (loader): HID/win32: HidD_GetPreparsedData ok, device still online :-)
17:42:32.728 (loader): end operation, total time = 30.068 seconds
17:42:32.733 (loader): set background IMG_DOWNLOAD_ERROR
17:42:32.738 (loader): redraw timer set, image 11 to show for 4000 ms
17:42:36.753 (loader): redraw, image 10
17:42:36.753 (loader): set background IMG_ONLINE

And here is the log when I try to perform "Reboot" through Teensy Loader:

Code:
17:43:06.240 (loader): Reboot event
17:43:06.244 (loader): begin operation
17:43:06.253 (loader): sending reboot
17:43:36.271 (loader): begin wait_until_offline
17:43:36.271 (loader): HID/win32: HidD_GetPreparsedData ok, device still online :-)
17:43:38.964 (loader): offline failed, timeout after 50
17:43:38.964 (loader): reboot error
17:43:38.964 (loader): end operation, total time = 32.717 seconds
17:43:38.974 (loader): set background IMG_REBOOT_ERROR
17:43:38.978 (loader): redraw timer set, image 13 to show for 4000 ms
17:43:42.978 (loader): redraw, image 10
17:43:42.978 (loader): set background IMG_ONLINE
 
Dear Paul,

I have had the USB cable plugged into another extension USB cable. I have now tried it without the extension cable in between and suddenly I am able to upload code to the Teensy again!

Just for my own sanity: Could you confirm that the electrical current I have designed above is "safe"? Would I damage the Teensy in any way if I have pin 0 (3.3V) go to a LED strip data wire which expects 5V? Or would it only cause a "bad signal" at the LED strip at best? (I'm aware that I should put a Level shifter in between.) Also, would it be okay to connect the Ground pin of the Teensy to the common ground relating to the 5V of the power supply, even though those 5V are more than the 3.3V? Would I need a level shifter there as well?

Please excuse these possibly silly questions.
 
Glad you got the USB cable issue sorted.

On the circuit safety question, I'm guessing you mean the photo with a breadboard? If the 5V power were to accidentally short directly to Teensy pin 0 (or any pin other than VIN / VUSB) your Teensy would be damaged. But the 1K resistor will provide some measure of protection. If 5V shorts to the other side of that resistor, current will be forced to flow back into the Teensy pin which isn't good. But the 1K resistor and a ESD protection diode inside the chip will tend to limit it to about 1.2mA while raising the pin's voltage up to about 3.9V. Not great, but usually Teensy can survive that level of abuse.

While electrically identical, placing the 1K resistor physically closer to Teensy might lessen the odds of an accident having the 5V line touch the Teensy side of the resistor.

You might also consider using pin 1 rather than pin 0, from a purely software point of view having nothing to do with resistors or protection from 5V. If you're using a bit-banging library like Adafruit NeoPixel, all pins are the same. But those libraries hog CPU time and block interrupts which other libraries might use. You might need to later switch to WS2812Serial for non-blocking. It supports pin 1, and several others, but not all pins. Open any of the WS2812Serial examples to see the list of supported pins. If you can spare any of those pins, best to wire it up there from the beginning, just in case you later run into problems with blocking libraries.
 
Dear Paul,

Thank you so much for this insightful answer. I'm fully aware you're not here to teach me electronics, which is why I'm even more grateful for the reply you gave me. Thank you so much!
 
Back
Top