Browse Source

Added some extra information to the FLASHING.md document.

pull/3/head
Maurice Makaay 3 years ago
parent
commit
956660c2bf
1 changed files with 94 additions and 33 deletions
  1. +94
    -33
      doc/FLASHING.md

+ 94
- 33
doc/FLASHING.md View File

@ -1,47 +1,90 @@
# Flahsing Bedlight
# Flashing the Yeelight Bedside Lamp 2
## Tools needed ## Tools needed
* imbus or torx screw driver (3mm?)
* Allen key (2mm, 5/64") or torx (T8) screw driver
* Soldering Iron * Soldering Iron
* pehabs some Sticky tape
* a serial to USB adapter with 3,3 Volt output
* Perhaps some sticky tape
* A serial to USB adapter (FTDI)
* Some wires * Some wires
## Warning ## Warning
We have writen this instructions with care, but we will gave absoultly no warnenty. Perhabs you will destroy your device and your computer.
We have writen these instructions with care, but we will give absolutely no
warranty. Perhaps you will destroy your device and your computer.
## Opening the Yeelight
Remove the rubber pads from the botton of the device.
## Opening the yeelight
Unbolt the 4 screws which were hidden by the rubber pads.
Remove the rubber on the botton of the bottom of the light.
![Photo of the screws](Yeelight_screws.jpg "Use an allen key or torx screw driver to remove the screws.")
Unbolt the 4 Screws which was hidden by the rubber.
![Photo of the screws](Yeelight_screws.jpg "You will need an imbus or torx screw driver to remove the screws.")
Remove the bottom from the device, exposing the PCB.
This might take a bit of force. Just pull it up bit by bit until it pops loose.
Remove the plastic.
For some good picture of disassembling this device, take a look
[at this blog post](https://mysku.ru/blog/china-stores/78455.html)
It is in Russian, but the translation by Google works well and moreover, the
pictures are the most important thing here. If you scroll down, you will
find them easily.
## Solder the wires ## Solder the wires
Solder the wires to the points of this picture.
![Soldering points of a yeelight](https://community-assets.home-assistant.io/optimized/3X/1/3/1340a2367e5894281ac6d042f328d9db80ae7da4_2_790x750.jpeg)
Many of the serial to USB adapter have some header pins to which you can
connect the wires of a device. Therefore, I find it most useful to take some
dupont wires with a female end to them, and cut off the other end. Strip the
wire on the other and, and then it can be used to solder it to the board.
Solder the wires to the RX, TX and GND debug pads that are shown in this
photo. It is not required to solder a wire to the 3.3V debug pad. This pad
is not directly connected to the 3.3V Vin of the ESP32 chip, making it a
less than optimal candidate for powering the board during flashing. Instead,
powering the lamp using its own power supply works best.
![Soldering points of a yeelight](https://community-assets.home-assistant.io/optimized/3X/1/3/1340a2367e5894281ac6d042f328d9db80ae7da4_2_790x750.jpeg)
You can use stick tape to fix the cables before soldering.
You can use some sticky tape to fixate the cables before soldering.
## Connect to your flashing device
Make sure that your that your flashing device is given 3.3 Volt between GND and VCC. If not you can use the regular power adapter instead.
## Connect the wires to your serial to USB device
The wires must be connected as follows:
| Soldering point| Serial USB Adapter name | | Soldering point| Serial USB Adapter name |
| -------------- |:------------------------:| | -------------- |:------------------------:|
| Gnd | Gnd |
| GND | GND |
| TX | RX | | TX | RX |
| RX | TX | | RX | TX |
| GPIO0 | Gnd |
| 3.3 V | VCC or regular power adapter|
| GPIO0 | GND |
To be able to flash the device, GPIO0 must be connected to ground while the
device is booted. Therefore, connect these wires before plugging in the
device's power adapter. Flashing will not work if you connect these wires
when the device has already been powered up.
## When you only have one GND pin on your USB Adapter
Connect all wires execpt VCC or Power Adapter, then plugin the power in the last step.
If your USB Adapter does not have multiple GND pins, then you'll have
to find another way to attach GPIO0 to ground. Some options:
- Use a breadbord, so you can connect the USB Adapter GND pin to a row on
the bread bord, and connect the GND and GPIO0 wires of the board to that
same row.
- Solder a button on the board that connects GPIO0 to GND when pressed. Then
you can hold down this button while plugging in the device's power supply.
After booting up, you can release the button (the serial console will also
mention that the device is now in flash mode). This is not the most
practical solution for most people (since only one such flash operation is
needed, from then on OTA - Over The Air - updates are possible), but it
was a great help to me during the initial reverse engineering and firmware
development.
- Manually hold a wire connected to both a GND surface (e.g. the silver pad
on the left of the board) and the GPIO0 debug pad, while plugging in the
power supply. After booting, the wire can be removed. This is very fiddly
way of doing it, but I did it a few times and it can be done.
## Download and install esptool ## Download and install esptool
@ -50,41 +93,59 @@ See: https://github.com/espressif/esptool/blob/master/README.md#installation--de
## Make a backup of the current firmware ## Make a backup of the current firmware
``` ```
python esptool.py -p /dev/ttyUSB0 read_flash 0x 0x400000 original-yeelight-firmware.bin
python esptool.py -p /dev/ttyUSB0 read_flash 0x0 0x400000 original-yeelight-firmware.bin
``` ```
/dev/ttyUSB0 is the port of the usb adaper on linux you will see it with `dmesg`. On Windows this is often `COM1`, `COM2` or `COM3`
/dev/ttyUSB0 is the port of the usb adaper on Linux. You can find what port
is used by the adapter by running `dmesg` after plugging in the USB device.
On Windows this is often `COM1`, `COM2` or `COM3`.
Caution: You will find WLAN SSID and Password of the lasted used Wifi in this file
**Caution**: You will find the WLAN SSID and Password of the latest used WiFi in
this file.
**After each step with esptool, you have to unplug you power line and connect it again.** **After each step with esptool, you have to unplug you power line and connect it again.**
## Flash new firmware ## Flash new firmware
Setup a ESPHome Project, see [README.md](../README.md)
Setup an ESPHome Project, see [README.md](../README.md)
Now you can flash the device directly with esphome or by esptool.
You can flash the device using esphome or esptool.
I normally use the [esphome-flasher](https://github.com/esphome/esphome-flasher)
tool, which is an easy to use utility app for flashing ESPHome devices.
If you want to flash with esptool, compile with esphome and download it.
If you want to flash with esptool, compile with esphome and download the
generated firmware.
``` ```
python.exe .\esptool.py --chip esp32 --port COM3 --baud 115200 write_flash 0x1000 <yourfile.bin> python.exe .\esptool.py --chip esp32 --port COM3 --baud 115200 write_flash 0x1000 <yourfile.bin>
``` ```
One your firmware is flashed, you can flash more OTA via ESPHOME.
## Troubleshooting flash
Once your firmware has been flashed, unplug the power and the serial USB Adapter.
Then plug the power back in to boot the device using its new firmware.
From here on, it is possible to flash the device OTA via ESPHOME. Tuck
away those soldered wires in the bottom and add the bottom cover back on.
If you have **A fatal error occurred: MD5 of file does not match data in flash!**
you can try to use the regular power adapter instead of the vcc line.
## Troubleshooting flash
If you have **A fatal error occurred: MD5 of file does not match data in
flash!**, then make sure you are powering the board using the device's own
power adapter. We've seen these errors when trying to power the board using
the 3.3V debug pad.
After this error, user @tabacha successfully flashed esp with tasmota bootloader with the regular power adapter and the following command:
After seeing this error, user @tabacha was able to successfully flash his
device using the regular power adapter and the tasmota boot loader using
the following command:
``` ```
python esptool.py --chip esp32 -p /dev/ttyUSB0 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dout --flash_freq 40m --flash_size detect 0x1000 bootloader_dout_40m.bin 0x8000 partitions.bin 0xe000 boot_app0.bin 0x10000 ~/Downloads/schlafzimmerbedlight.bin python esptool.py --chip esp32 -p /dev/ttyUSB0 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dout --flash_freq 40m --flash_size detect 0x1000 bootloader_dout_40m.bin 0x8000 partitions.bin 0xe000 boot_app0.bin 0x10000 ~/Downloads/schlafzimmerbedlight.bin
``` ```
You will find the missing tasmota boot files here: https://github.com/arendst/Tasmota/tree/firmware/firmware/tasmota32/ESP32_needed_files
You will find the missing tasmota boot files here:
https://github.com/arendst/Tasmota/tree/firmware/firmware/tasmota32/ESP32_needed_files
User @tabacha was not able to use tasmota with the bedside lamp 2.
(remember that the [esphome-flasher](https://github.com/esphome/esphome-flasher)
will give you a bit less of a hard-core experience during flashing)
User @tabacha was not able to use tasmota with the beedlight.

Loading…
Cancel
Save