So, I bought a couple of Sonoff smart switches. T3EU2C and T3EU1C.

So the name means T3 - 3rd generation, EU - european power plug, 1C/2C - 1 channel/2 channel switch.

They are supported by Tasmota and there is quick heads up on a tasmota wiki.

Connection and boot

Connected the USB to serial adapter to the PC, connected the wires as shown on diagram.

Crossover RX-TX connection

Now It's important to boot into the flashing mode.

To boot the flashing mode, you have to ground the GPIO 00. On this device it's an R19 connection, or the special platter on the back side of the device.

Ho hold a wire connected to the GND on a GPIO 00 and switch on power supply (I was just plugging-unplugging the VCC from the board), after 2-3 seconds you can release the GPIO00-GND connection. The led on a device should not blink and the backlight of buttons should be a bit dimmed.

Flashing failed :(

No progress detected

I Launched Tasmotizer and after pressing the Tasmotize! button I saw a Tasmotizing in progress... message with steady progress bar on zero position, and after 10-15 seconds the following error message appeared:

Failed to connect to ESP8266: Timed out waiting for packet header

Those are the symptoms of bad connection. Simply my serial adapter does not see a ESP module!

The connection can be checked via serial monitor.

Reading serial monitor

To check the boot logs simply open the serial monitor app, in my case PuTTY and start rebooting your device. If you see nothing - you had connected RX/TX pins incorrectly.

PuTTY set to read serial data

Logs for regular boot with E-We-Link:

 ets Jan  8 2013,rst cause:1, boot mode:(3,6)

load 0x40100000, len 2592, room 16
tail 0
chksum 0xf3
load 0x3ffe8000, len 764, room 8
tail 4
chksum 0x92
load 0x3ffe82fc, len 676, room 4
tail 0
chksum 0x22
csum 0x22

2nd boot version : 1.7(5d6f877)
SPI Speed : 40MHz
SPI Mode : DOUT
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000

rf cal sector: 251
freq trace enable 0
rf[112] : ▒▒xxx▒x▒x▒x▒x▒x▒x▒▒xxx▒x▒x▒x▒x▒x▒x▒▒xxx▒x▒x▒x▒x▒x▒x▒▒xxx▒x▒x▒x▒x▒x▒x▒▒xxx▒x▒x▒x▒x▒x▒x▒▒xxx▒x▒x▒x▒x▒x▒x▒▒xxx▒x▒x▒x▒x▒x▒x▒▒xxx▒x▒x▒x▒x▒x▒x▒▒xxx▒x▒x▒x▒x▒x▒x▒▒xxx▒x▒x▒x▒x▒x▒x

Logs for the debug mode boot:

 ets Jan  8 2013,rst cause:1, boot mode:(3,6)

Yep, just this one line.

If there is bad RX/TX link the serial output would be empty during boot.

Try swapping RX/TX wires from crossover to standard mode or vice-versa.

Flashing with logs

In order to get more detailed logs I tried to flash via the esptool.py.

Since I'm using WSL the COM<N> ports are represented as ttyS<N>. So in my case since on windows it was COM10 so in WSL it's bound to /dev/TTYS10

Attempt to write flash:

esptool.py -p /dev/ttyS10 write_flash 0x00000 tasmota.bin

The output:

esptool.py v2.8
Serial port /dev/ttyS5
Connecting........_____....._____....._____....._____....._____....._____....._____

A fatal error occurred: Failed to connect to Espressif device: Timed out waiting for packet header

Also tried to specify the baund rate:

esptool.py -p /dev/ttyS5 -b 74880 write_flash 0x00000 tasmota.bin

The output:

esptool.py v2.8
Serial port /dev/ttyS5
Traceback (most recent call last):
  File "/home/urgn/.local/bin/esptool.py", line 3201, in <module>
    _main()
  File "/home/urgn/.local/bin/esptool.py", line 3194, in _main
    main()
  File "/home/urgn/.local/bin/esptool.py", line 2883, in main
    esp = ESPLoader.detect_chip(each_port, initial_baud, args.before, args.trace)
  File "/home/urgn/.local/bin/esptool.py", line 273, in detect_chip
    detect_port = ESPLoader(port, baud, trace_enabled=trace_enabled)
  File "/home/urgn/.local/bin/esptool.py", line 245, in __init__
    self._set_port_baudrate(baud)
  File "/home/urgn/.local/bin/esptool.py", line 257, in _set_port_baudrate
    self._port.baudrate = baud
  File "/home/urgn/.local/lib/python2.7/site-packages/serial/serialutil.py", line 295, in baudrate
    self._reconfigure_port()
  File "/home/urgn/.local/lib/python2.7/site-packages/serial/serialposix.py", line 442, in _reconfigure_port
    self._set_special_baudrate(custom_baud)
  File "/home/urgn/.local/lib/python2.7/site-packages/serial/serialposix.py", line 130, in _set_special_baudrate
    raise ValueError('Failed to set custom baud rate ({}): {}'.format(baudrate, e))
ValueError: Failed to set custom baud rate (74880): [Errno 25] Inappropriate ioctl for device

As far it was seen, nothing succeed. Time to get some help!

What was wrong

Thanks to the Tasmota community, I literally went to their discord and ask for help, I was pointed that it looks like there is not enough power to flash.

So I decided to power up the sonoff via the ArduinoUNO 3.3V output interface while Arduino was powered by phone charger. So I connected the 3.3V PIN of Arduino uno and ground to the Sonoff board, and the RX/TX of my serial adapter. BUT the tasmotizing failed again. Because the devices require a common ground!

So I just grab the breadboard and connected all devices via common ground.

And that's it! Tasmotized successfully. Here's a pic of my desk at the end.

Tasmotizing rig

Happy hacking!

https://github.com/arendst/Tasmota/issues/5918

https://www.letscontrolit.com/wiki/index.php/Basics:_Connecting_and_flashing_the_ESP8266

https://templates.blakadder.com/sonoff_TX-T3EU3C.html

https://tasmota.github.io/docs/devices/Sonoff-T1/