Firmware not loading in T-Watch

I haven’t been able to upload any firmware to my T-watch 2020v3 for several months now. I even changed the system (I used to be on Manjaro now I use Garuda). My watch is connected to the computer, but when I try to download any firmware on any guide, nothing comes out. I tried the Arduino IDE, but in it, at least the clock is displayed in the port, but when loading, it says that the port will not find it, after which it disappears from it, and only rebooting the system helps. PlatformIo is a little better, the clock is displayed in the port, but when I try to install the firmware (GitHub - spaceAngel/cyberWatch: simple OS for LillyGO T-Watch V3, not only it, I tried others) it gives an error:

 *  Executing task in folder cyberWatch: platformio run --target upload --upload-port /dev/ttyACM0 

Processing ttgo-t-watch (platform: espressif32; board: ttgo-t-watch; framework: arduino)
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/ttgo-t-watch.html
PLATFORM: Espressif 32 (6.1.0) > TTGO T-Watch
HARDWARE: ESP32 240MHz, 320KB RAM, 16MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: 
 - framework-arduinoespressif32 @ 3.20007.0 (2.0.7) 
 - tool-esptoolpy @ 1.40500.0 (4.5.0) 
 - tool-mkfatfs @ 2.0.1 
 - tool-mklittlefs @ 1.203.210628 (2.3) 
 - tool-mkspiffs @ 2.230.0 (2.30) 
 - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 34 compatible libraries
Scanning dependencies...
Dependency Graph
|-- TTGO TWatch Library @ 1.4.2
|   |-- Wire @ 2.0.0
|   |-- SPI @ 2.0.0
|   |-- FS @ 2.0.0
|   |-- SD @ 2.0.0
|   |   |-- FS @ 2.0.0
|   |   |-- SPI @ 2.0.0
|   |-- Ticker @ 2.0.0
|   |-- SPIFFS @ 2.0.0
|   |   |-- FS @ 2.0.0
|-- FS @ 2.0.0
|-- SPIFFS @ 2.0.0
|   |-- FS @ 2.0.0
|-- WiFi @ 2.0.0
|-- EEPROM @ 2.0.0
Building in release mode
Compiling .pio/build/ttgo-t-watch/src/Apps/AboutPanel.cpp.o
Compiling .pio/build/ttgo-t-watch/src/Environment/RunAfterCompilation.cpp.o
Linking .pio/build/ttgo-t-watch/firmware.elf
Retrieving maximum program size .pio/build/ttgo-t-watch/firmware.elf
Checking size .pio/build/ttgo-t-watch/firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [==        ]  15.7% (used 51428 bytes from 327680 bytes)
Flash: [==        ]  18.0% (used 1179241 bytes from 6553600 bytes)
Building .pio/build/ttgo-t-watch/firmware.bin
esptool.py v4.5
Creating esp32 image...
Merged 25 ELF sections
Successfully created esp32 image.
Configuring upload protocol...
AVAILABLE: cmsis-dap, esp-bridge, esp-prog, espota, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
CURRENT: upload_protocol = esptool
Looking for upload port...
Using manually specified: /dev/ttyACM0
Uploading .pio/build/ttgo-t-watch/firmware.bin
esptool.py v4.5
Serial port /dev/ttyACM0
Connecting...
Traceback (most recent call last):
  File "/home/maks48/.platformio/packages/tool-esptoolpy/esptool.py", line 34, in <module>
    esptool._main()
  File "/home/maks48/.platformio/packages/tool-esptoolpy/esptool/__init__.py", line 1031, in _main
    main()
  File "/home/maks48/.platformio/packages/tool-esptoolpy/esptool/__init__.py", line 673, in main
    esp = esp or get_default_connected_device(
  File "/home/maks48/.platformio/packages/tool-esptoolpy/esptool/__init__.py", line 920, in get_default_connected_device
    _esp.connect(before, connect_attempts)
  File "/home/maks48/.platformio/packages/tool-esptoolpy/esptool/loader.py", line 640, in connect
    last_error = self._connect_attempt(reset_strategy, mode)
  File "/home/maks48/.platformio/packages/tool-esptoolpy/esptool/loader.py", line 525, in _connect_attempt
    reset_strategy()  # Reset the chip to bootloader (download mode)
  File "/home/maks48/.platformio/packages/tool-esptoolpy/esptool/reset.py", line 85, in __call__
    self._setDTRandRTS(False, True)  # IO0=HIGH & EN=LOW, chip in reset
  File "/home/maks48/.platformio/packages/tool-esptoolpy/esptool/reset.py", line 58, in _setDTRandRTS
    fcntl.ioctl(self.port.fileno(), TIOCMSET, struct.pack("I", status))
OSError: [Errno 71] Protocol error
*** [upload] Error 1
============================================================================ [FAILED] Took 85.14 seconds ============================================================================

 *  The terminal process "platformio 'run', '--target', 'upload', '--upload-port', '/dev/ttyACM0'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it.

although when compiling everything is fine. I already tried to search the Internet and tried different methods, but nothing helped, and by the way, I already installed 99-platformio-udev.rules, but this warning still remained. If you need more information please write, I’m not an expert in this

Can you show a picture of your physical setup? Are you using a USB-UART adapter to connect to the T-Watch? Lowering the baud rate with upload_speed = 115200 also didn’t help?

I just plug it in via USB to microUSB cable that comes with the watch because I’ve flashed it several times already. I tried setting upload_speed to 115200 in platformio.ini but that doesn’t work either

Any chance you can put the board into bootloader mode by connecting GPIO0 to GND and power cycling it?

The documentation does not seem to say anything about this, and in all the guides for installing the firmware, including the instructions that came with the kit, they write that you just need to connect the cable. On the Internet, nothing is said about the bootloader either.

Oh actually looking at that again, it fails at talking to the USB-to-serial chip to set its DTR + RTS pins in a way that would make the chip enter bootloader mode. Does sudo dmesg say anything about some USB errors?

I’ve seen some Linux kernel issues in the past that screwed up CH34x support, hope you’re not running into that. Or it’s a power or cable issue.

sudo dmesg seems to give no errors for my watch, and as I wrote, I even reinstalled Linux. My Manjaro didn’t work well on my laptop and I installed Garuda but the firmware still won’t load.

[13644.525576] usb 2-2: USB disconnect, device number 56
[13647.026789] usb 2-2: new full-speed USB device number 57 using xhci_hcd
[13647.155019] usb 2-2: New USB device found, idVendor=1a86, idProduct=55d4, bcdDevice= 4.44
[13647.155032] usb 2-2: New USB device strings: Mfr=0, Product=2, SerialNumber=3
[13647.155038] usb 2-2: SerialNumber: 54D1024937
[13647.157525] cdc_acm 2-2:1.0: ttyACM0: USB ACM device

Can you live boot into a LTS version of Ubuntu to cross verify? Both manjaro and garuda are Arch-based after all.

Also maybe this helps

i tried to load the firmware even via Windows so maybe I’m either a very lucky person for errors or a problem in the last firmware I downloaded on this watch. I was looking for a link to the git but I’m afraid I won’t find it again. Can I just clear all the memory of esp? I tried doing this through the esptool.py -p /dev/ttyACM0 erase_flash but when I try it writes that the port was not found
I’ll also now try the button-holding method throughout the download.

during the next connection in the logs gave an error

[15817.802810] usb 2-1: new full-speed USB device number 81 using xhci_hcd
[15823.178638] usb 2-1: unable to read config index 0 descriptor/all
[15823.178650] usb 2-1: can't read configurations, error -110
[15823.501699] usb 2-1: new full-speed USB device number 82 using xhci_hcd
[15828.809723] usb 2-1: device descriptor read/all, error -110
[15828.809831] usb usb2-port1: attempt power cycle
[15829.189587] usb 2-1: new full-speed USB device number 83 using xhci_hcd
[15834.441446] usb 2-1: device descriptor read/all, error -110
[15834.757438] usb 2-1: new full-speed USB device number 84 using xhci_hcd
[15834.771007] usb 2-1: config 1 contains an unexpected descriptor of type 0x1, skipping
[15834.771050] usb 2-1: config 1 interface 0 altsetting 0 has 0 endpoint descriptors, different from the inter
face descriptor's value: 1
[15834.771064] usb 2-1: config 1 interface 1 altsetting 0 has 1 endpoint descriptor, different from the interf
ace descriptor's value: 2
[15834.773940] usb 2-1: New USB device found, idVendor=1a86, idProduct=55d4, bcdDevice= 4.44
[15834.773966] usb 2-1: New USB device strings: Mfr=0, Product=2, SerialNumber=3
[15834.773974] usb 2-1: SerialNumber: 54D1024937
[15834.778607] cdc_acm 2-1:1.0: skipping garbage
[15834.778622] cdc_acm: probe of 2-1:1.0 failed with error -22

Try a different USB cable or a different USB port, or try going through a USB 2.0 / 3.0 hub.

when i hold down the button platformio loses the port and gives an error of the not found port. Now I’ll try with another cable though I kind of did it.

from another cable gives this error

Merged 25 ELF sections
Successfully created esp32 image.
Configuring upload protocol...

Warning! Please install `99-platformio-udev.rules`. 
More details: https://docs.platformio.org/en/latest/core/installation/udev-rules.html

AVAILABLE: cmsis-dap, esp-bridge, esp-prog, espota, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
CURRENT: upload_protocol = esptool
Looking for upload port...
Auto-detected: /dev/ttyACM0
Uploading .pio/build/ttgo-t-watch/firmware.bin
esptool.py v4.5
Serial port /dev/ttyACM0
Connecting...
Traceback (most recent call last):
  File "/home/maks48/.platformio/packages/tool-esptoolpy/esptool.py", line 34, in <module>
    esptool._main()
  File "/home/maks48/.platformio/packages/tool-esptoolpy/esptool/__init__.py", line 1031, in _main
    main()
  File "/home/maks48/.platformio/packages/tool-esptoolpy/esptool/__init__.py", line 673, in main
    esp = esp or get_default_connected_device(
  File "/home/maks48/.platformio/packages/tool-esptoolpy/esptool/__init__.py", line 920, in get_default_connected_device
    _esp.connect(before, connect_attempts)
  File "/home/maks48/.platformio/packages/tool-esptoolpy/esptool/loader.py", line 640, in connect
    last_error = self._connect_attempt(reset_strategy, mode)
  File "/home/maks48/.platformio/packages/tool-esptoolpy/esptool/loader.py", line 525, in _connect_attempt
    reset_strategy()  # Reset the chip to bootloader (download mode)
  File "/home/maks48/.platformio/packages/tool-esptoolpy/esptool/reset.py", line 87, in __call__
    self._setDTRandRTS(True, False)  # IO0=LOW & EN=HIGH, chip out of reset
  File "/home/maks48/.platformio/packages/tool-esptoolpy/esptool/reset.py", line 48, in _setDTRandRTS
    "I", fcntl.ioctl(self.port.fileno(), TIOCMGET, struct.pack("I", 0))
OSError: [Errno 5] Input/output error
*** [upload] Error 1
============================================================================ [FAILED] Took 85.00 seconds ============================================================================

 *  The terminal process "platformio 'run', '--target', 'upload'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it

Through the USB hub 2.0, the watch is not detected as an ACM device at all.

[17099.624080] hub 2-1:1.0: USB hub found
[17099.624122] hub 2-1:1.0: 4 ports detected
[17117.472412] usb 2-1.2: new full-speed USB device number 5 using xhci_hcd
[17117.550470] usb 2-1.2: unable to read config index 0 descriptor/all
[17117.550489] usb 2-1.2: can't read configurations, error -32
[17117.614326] usb 2-1.2: new full-speed USB device number 6 using xhci_hcd
[17117.692852] usb 2-1.2: unable to read config index 0 descriptor/all
[17117.692864] usb 2-1.2: can't read configurations, error -32
[17117.692960] usb 2-1-port2: attempt power cycle
[17118.268278] usb 2-1.2: new full-speed USB device number 7 using xhci_hcd
[17118.268371] usb 2-1.2: Device not responding to setup address.
[17118.485883] usb 2-1.2: unable to read config index 0 descriptor/all
[17118.485896] usb 2-1.2: can't read configurations, error -32
[17118.549385] usb 2-1.2: new full-speed USB device number 8 using xhci_hcd
[17118.579627] usb 2-1.2: unable to read config index 0 descriptor/start: -71
[17118.579641] usb 2-1.2: can't read configurations, error -71
[17118.579769] usb 2-1-port2: unable to enumerate USB device
[17128.192197] usb 2-1.3: new full-speed USB device number 9 using xhci_hcd
[17128.273215] usb 2-1.3: device descriptor read/64, error -71
[17128.457210] usb 2-1.3: device descriptor read/64, error -71
[17128.624196] usb 2-1.3: new full-speed USB device number 10 using xhci_hcd
[17128.705205] usb 2-1.3: device descriptor read/64, error -71
[17128.889203] usb 2-1.3: device descriptor read/64, error -71
[17128.992261] usb 2-1-port3: attempt power cycle
[17129.572169] usb 2-1.3: new full-speed USB device number 11 using xhci_hcd
[17129.577976] usb 2-1.3: Device not responding to setup address.
[17129.789949] usb 2-1.3: Device not responding to setup address.
[17129.992156] usb 2-1.3: device not accepting address 11, error -71
[17130.056161] usb 2-1.3: new full-speed USB device number 12 using xhci_hcd
[17130.061963] usb 2-1.3: Device not responding to setup address.
[17130.269930] usb 2-1.3: Device not responding to setup address.
[17130.472149] usb 2-1.3: device not accepting address 12, error -71
[17130.472312] usb 2-1-port3: unable to enumerate USB device
[17150.079680] usb 2-1.1: new full-speed USB device number 13 using xhci_hcd
[17150.160678] usb 2-1.1: device descriptor read/64, error -71
[17150.344663] usb 2-1.1: device descriptor read/64, error -71
[17150.512652] usb 2-1.1: new full-speed USB device number 14 using xhci_hcd
[17150.593658] usb 2-1.1: device descriptor read/64, error -71
[17150.777692] usb 2-1.1: device descriptor read/64, error -71
[17150.879823] usb 2-1-port1: attempt power cycle
[17151.459669] usb 2-1.1: new full-speed USB device number 15 using xhci_hcd
[17151.465406] usb 2-1.1: Device not responding to setup address.
[17151.677456] usb 2-1.1: Device not responding to setup address.
[17151.879676] usb 2-1.1: device not accepting address 15, error -71
[17151.944619] usb 2-1.1: new full-speed USB device number 16 using xhci_hcd
[17151.950350] usb 2-1.1: Device not responding to setup address.
[17152.157381] usb 2-1.1: Device not responding to setup address.
[17152.359602] usb 2-1.1: device not accepting address 16, error -71
[17152.359712] usb 2-1-port1: unable to enumerate USB device
[17158.975595] usb 2-1.1: new full-speed USB device number 17 using xhci_hcd
[17159.056613] usb 2-1.1: device descriptor read/64, error -71
[17159.240527] usb 2-1.1: device descriptor read/64, error -71
[17159.407531] usb 2-1.1: new full-speed USB device number 18 using xhci_hcd
[17159.488608] usb 2-1.1: device descriptor read/64, error -71
[17159.672599] usb 2-1.1: device descriptor read/64, error -71
[17159.775621] usb 2-1-port1: attempt power cycle
[17160.355569] usb 2-1.1: new full-speed USB device number 19 using xhci_hcd
[17160.361371] usb 2-1.1: Device not responding to setup address.
[17160.573289] usb 2-1.1: Device not responding to setup address.
[17160.775558] usb 2-1.1: device not accepting address 19, error -71
[17160.839559] usb 2-1.1: new full-speed USB device number 20 using xhci_hcd
[17160.845389] usb 2-1.1: Device not responding to setup address.
[17161.053335] usb 2-1.1: Device not responding to setup address.
[17161.255460] usb 2-1.1: device not accepting address 20, error -71
[17161.255711] usb 2-1-port1: unable to enumerate USB device
[17209.966555] usb 2-1.1: new full-speed USB device number 21 using xhci_hcd
[17210.048517] usb 2-1.1: device descriptor read/64, error -71
[17210.232531] usb 2-1.1: device descriptor read/64, error -71
[17210.398527] usb 2-1.1: new full-speed USB device number 22 using xhci_hcd
[17210.479541] usb 2-1.1: device descriptor read/64, error -71
[17210.663549] usb 2-1.1: device descriptor read/64, error -71
[17210.766669] usb 2-1-port1: attempt power cycle
[17211.346482] usb 2-1.1: new full-speed USB device number 23 using xhci_hcd
[17211.352212] usb 2-1.1: Device not responding to setup address.
[17211.564242] usb 2-1.1: Device not responding to setup address.
[17211.766525] usb 2-1.1: device not accepting address 23, error -71
[17211.830490] usb 2-1.1: new full-speed USB device number 24 using xhci_hcd
[17211.836196] usb 2-1.1: Device not responding to setup address.
[17212.044196] usb 2-1.1: Device not responding to setup address.
[17212.246479] usb 2-1.1: device not accepting address 24, error -71
[17212.246594] usb 2-1-port1: unable to enumerate USB device
[17223.814218] usb 2-1.1: new full-speed USB device number 25 using xhci_hcd
[17223.895294] usb 2-1.1: device descriptor read/64, error -71
[17224.080344] usb 2-1.1: device descriptor read/64, error -71
[17224.246247] usb 2-1.1: new full-speed USB device number 26 using xhci_hcd
[17224.327345] usb 2-1.1: device descriptor read/64, error -71
[17224.511333] usb 2-1.1: device descriptor read/64, error -71
[17224.614438] usb 2-1-port1: attempt power cycle
[17225.194296] usb 2-1.1: new full-speed USB device number 27 using xhci_hcd
[17225.200044] usb 2-1.1: Device not responding to setup address.
[17225.411961] usb 2-1.1: Device not responding to setup address.
[17225.614171] usb 2-1.1: device not accepting address 27, error -71
[17225.678236] usb 2-1.1: new full-speed USB device number 28 using xhci_hcd
[17225.683957] usb 2-1.1: Device not responding to setup address.
[17225.891989] usb 2-1.1: Device not responding to setup address.
[17226.094225] usb 2-1.1: device not accepting address 28, error -71
[17226.094353] usb 2-1-port1: unable to enumerate USB device
[17231.958113] usb 2-1.1: new low-speed USB device number 29 using xhci_hcd
[17232.522088] usb 2-1.1: new full-speed USB device number 30 using xhci_hcd
[17232.603178] usb 2-1.1: device descriptor read/64, error -71
[17232.791174] usb 2-1.1: device descriptor read/64, error -71
[17232.894254] usb 2-1-port1: attempt power cycle
[17233.474136] usb 2-1.1: new full-speed USB device number 31 using xhci_hcd
[17233.479944] usb 2-1.1: Device not responding to setup address.
[17233.692004] usb 2-1.1: Device not responding to setup address.
[17233.894124] usb 2-1.1: device not accepting address 31, error -71
[17233.958076] usb 2-1.1: new full-speed USB device number 32 using xhci_hcd
[17233.963890] usb 2-1.1: Device not responding to setup address.
[17234.171958] usb 2-1.1: Device not responding to setup address.
[17234.374118] usb 2-1.1: device not accepting address 32, error -71
[17234.374237] usb 2-1-port1: unable to enumerate USB device

Well that doesn’t look good at all. Seems to be bricked definitely.

The only remedy I see is if you could connect your own known-working USB-to-uart adapter to the target ESP32 chip and could controll the GPIO0 line to put it into bootloader mode. Probably not easily possible if it’s all encased in a tight smartwatch case.

Maybe people from the LillyGo support have more ideas?

Disassembly and soldering is not a problem for me, but first I will contact the technical support of LillyGo. If I can solve the problem, I’ll add solution to this thread. Anyway, thank you very much!

I seem to have similar issue. My T-watch 2020v1 stopped working. Flashing is not possible due to timeout. Changed multiple cables that are working with other ESP32 modules but I am getting same unsuccessful result.
@maks248 did you have any luck with your watch?