Comments (37)
You restore it?
No, I was ordering a few new ones anyway since I needed more, so I just ordered one more. The time and effort to figure out what was going on, how to flash it wired and probably even get the hardware wasn't worth it.
before with I wright ATC_Thermometer.bin
I'm afraid that's not the right firmware. You should really follow the instructions I linked closely, that has worked for me every time. Don't skip any steps. Just so we're clear, these are the steps:
Flashing from a custom bluetooth firmware (easy way for new devices)
- Open an awesome tool from ATC_MiThermometer https://pvvx.github.io/ATC_MiThermometer/TelinkMiFlasher.html
- Click "Connect" button and find device LYWSD03MMC, wait connection (Connected in logs)
- On new device with stock firmware click "Do Activation" and wait some time
- Next "Select Firmware", choose file with custom bluetooth firmware ATC_ota_400000, click "Start Flashing"
- You will see in logs "Update done after NN seconds"
- Reboot device removing battery, refresh web-page with flashing tool and connect device again (with name ATC_802190 or similar, based on mac-address). Do not change any control on page
- Flash latest z03mmc.bin firmware over transitional firmware to convert it to zigbee. Use https://devbis.github.io/telink-zigbee/ page if previous flasher stops because of the firmware size.
(source)
from z03mmc.
Here is a soldering schema.
The command looks okay. But you'd better follow the instruction in README as is covers some cases
from z03mmc.
Try to lower baudrate to 340000
from z03mmc.
Any Chinese USB-UART chip. There are no such strict checks for full compliance of the bit diagram with the UART protocol. There are no 3 checks of each bit at calculated intervals. :)
And erroneous characters in them end up in the buffer.
This is a long-standing problem with UART adapters. If you encounter an incorrectly formatted character, you will have no way of knowing where in the FIFO block the character is located. But adapter attributes may indicate an error.
FTDI has decided, in its sole discretion, to completely cease further acceptance into the buffer in error. Or cut out such symbols.
In general, the UART standard is a teletype from the 1800s. :)
But modern computers (CPUs) cannot cope with receiving one character at a time in a stream with 115200 bits per second. And they require an external hardware FIFO. Receive characters in batches. Otherwise, the processor will not be able to cope with this task. :)
Switching the task context and going to the kernel takes several ms. Just like hardware interrupts :) We wrote gigabytes of code, and the CPU has to process them for the sake of one character (and empty all caches) :)
And the further you go, the more the delay for executing a bunch of unnecessary code increases. Especially in Linux.
The main reason is the use of APIs for the transition from machine concepts to human concepts and other fashionable jokes. Only AI can save the day.
from z03mmc.
@tovy14 It goes directly to the tlsr SoC, you can use a pinout image from the datasheet for 24-pin chip http://wiki.telink-semi.cn/doc/ds/DS_TLSR8251-E_Datasheet%20for%20Telink%20BLE+IEEE802.15.4%20Multi-Standard%20Wireless%20SoC%20TLSR8251.pdf , the pin number is 4.
from z03mmc.
Please, try to erase flash and write it again. You could lower the baudrate while writing
from z03mmc.
I think this may be a cause of wirelessly flashing this firmware directly without flashing the BT firmware in step 4 first. I did the same to one of my devices by accident, and it indeed doesn't do anything anymore after that.
from z03mmc.
@Timmiej93 before with I wright ATC_Thermometer.bin
You restore it?
from z03mmc.
Ok. Thanks.
from z03mmc.
I'm having the same issue. I flashed the ATC firmware first, once it succeeded I flashed the z03mmc firmware with the following log:
06:40:59: File: z03mmc.bin 06:40:59: File size: 129316 bytes 06:40:59: Count: 8083 06:41:01: Start DFU 06:42:28: Update done after 86.311 seconds 06:42:32: Disconnected. 06:54:15: Searching for devices 06:54:20: NotFoundError: User cancelled the requestDevice() chooser.
When the flashing was complete the display went blank. I tried reinserting the battery but no luck.
Any suggestions on how to recover the unit? Or is it permanently bricked?
from z03mmc.
You should use UART to write firmware in your case. Follow the steps in Readme in this repo.
from z03mmc.
I had the same blank screen issue, as i had ATC already on the device, i just uploaded the z03mmc.bin. Its my bad, i had to follow the instructions...
Tried to reinserted the battery and then shorted gnd and reset pins. Didn't help. So i connected to my Connect programmer(https://soldered.com/product/connect-programmer/) uart and tried to flash (gnd->gnd, twd->P14, 3v3->+)
python3 TLSR825xComFlasher.py -p /dev/tty.usbserial-1440 -t5000 wf 0 z03mmc.bin
=======================================================
TLSR825x Flasher version 00.00.04
-------------------------------------------------------
Open /dev/tty.usbserial-1440, 921600 baud...
Reset module (RTS low)...
Activate (5000 ms)...
Chip sleep? -> Use reset chip (RTS-RST): see option --tact
Did i miss something?
from z03mmc.
I have such case as well. So I flashed with serial - connecting as on the above picture. Flashing finishes successfully but nothing is displayed on the screen neither the device is discoverable over bluetooth. Tried stock fw as well as some custom ones.
from z03mmc.
Hi, same issue here, successful flash via bluetooth (already had custom fw) But blank screen after flash. I just tried to flash it via serial, again successfully, but nothing more on the screen. @adorobis, did u find what the issue was ?
from z03mmc.
Not yet, suggestion above was to change the baudrate. Will try it in free time. Purchasing a new device was faster 😎
from z03mmc.
Hey @adorobis I found the issue. I first had to flash via TTL the bluetooth custom firmware to make it work again. I then flashed again the zigbee firmware and it worked like a charm :)
from z03mmc.
Great, which Bluetooth firmware have you flashed via TTL? I've tried a few but none has worked...
from z03mmc.
I flashed this one
https://github.localhost/assets/ATC_ota_40000.bin
from z03mmc.
Here is a soldering schema.
The command looks okay. But you'd better follow the instruction in README as is covers some cases
May I piggyback on this post?
I used wago connectors instead of soldering wires (well... I tried first but the error is the same though) and here's how I did it (my soldering skills are crap but I think you can notice it):
Do you see anything wrong in this wiring assuming the connectors and cables are all OK?
The error I get is
❯ python3 TLSR825xComFlasher.py -p /dev/tty.usbserial-1130 wf 0 ATC_ota_40000.bin
=======================================================
TLSR825x Flasher version 00.00.04
-------------------------------------------------------
Open /dev/tty.usbserial-1130, 921600 baud...
UART-SWS 92160 baud. SW-CLK ~26.3 MHz(?)
Inputfile: ATC_ota_40000.bin
Write Flash data 0x00000000 to 0x00014254...
Error Read Flash Status! (0)
Error write sector at 0x000300!
The sector may vary between 003, 002, 006, etc...
Thanks
from z03mmc.
@mribeiro i had the same issue on mac. Changing timeout to 0.05 or 0.1 helped me.
Play with the value, it may help you too
from z03mmc.
@mribeiro i had the same issue on mac. Changing timeout to 0.05 or 0.1 helped me.
Play with the value, it may help you too
it worked with 0.5! awesome! many thanks
from z03mmc.
TLSR825xComFlasher.py :
- Does not work on USB-COM adapters that have LEDs on at the RX input.
- Does not work on USB-COM adapters that have FTDI chip
from z03mmc.
It works with USB-COM adapters with LEDs on RX/TX or whatever. Maybe it is not officially supported.
from z03mmc.
TLSR825xComFlasher.py :
- Does not work on USB-COM adapters that have LEDs on at the RX input.
- Does not work on USB-COM adapters that have FTDI chip
Why doesn't it work with FTDI? Can you recommend a USB-TTL adapter (one that works with Mac) that works?
I flashed it over bluetooth (following the steps); the display works, but I can't connect it to either bluetooth or zigbee since.
Thanks!
Edit: the display shows the last data but is not updating. Therefore bricked?
from z03mmc.
- The FTDI chip receiver discards incorrectly timed symbols from the buffer and sets the receive error flag.
- The current through the resistor is not enough to light the LED and the levels “0” and “1” are shifted.
from z03mmc.
Thanks for the explanation. But which one would you recommend? Any one without the FTDI chip?
from z03mmc.
None of the alternative firmware creators work on MAC. Or I don't know about it - I haven't seen it.
MAC is made for a different job.
And MAC has its own "standards" and restrictions for Bluetooth, not those from the Bluetooth SIG.
from z03mmc.
Ok 😊
But which usb serial device would you recommend that works for this purpose (win or linux then)
from z03mmc.
340000
well, this tip actually worked for me, almost...
I was struggling for several hours, always had success with default 921600 but device never worked (no display, no communication), tried multiple times and on two devices, same result. Strange isn't?
with 340000 no luck, no communication:
python3 TLSR825xComFlasher.py -p COM18 -b340000 -t2000 wf 0 ..\devbis_z03mmc_106.bin
=======================================================
TLSR825x Flasher version 00.00.04
-------------------------------------------------------
Open COM18, 340000 baud...
Reset module (RTS low)...
Activate (2000 ms)...
Low UART baud rate!
Chip sleep? -> Use reset chip (RTS-RST): see option --tact
BUT, with 460000 success flash and working device! both!
python3 TLSR825xComFlasher.py -p COM18 -b460000 -t2000 wf 0 ..\devbis_z03mmc_106.bin
=======================================================
TLSR825x Flasher version 00.00.04
-------------------------------------------------------
Open COM18, 460000 baud...
Reset module (RTS low)...
Activate (2000 ms)...
UART-SWS 46000 baud. SW-CLK ~23.9 MHz(?)
Inputfile: ..\devbis_z03mmc_106.bin
Write Flash data 0x00000000 to 0x0001fbd4...
-------------------------------------------------------
Worked Time: 85.938 sec
Done!
Thank you!
Two devices unbricked :-)
ps. this usb-uart ch340 worked for me:
from z03mmc.
I have a similar issue here, with a UART thats likely the same that @mribeiro used. At least they look the same. Connected like in the schematic with the resistor. As flasher, I used the Web-Tool. According to the log, erase flash and flash of the FW work fine, but after that, the display stays dead and I dont have any pairing information in Z2M.
Im not sure if the issue is that I used the web flash writer? Also played with the baudrate and activation time a bit with no other results.
from z03mmc.
- Turn off the power to the thermometer.
- Disconnect the TX wire from the SWS
- Run "Write to Flash"
- While "Atime" is working, connect TX to SWS, then 3.3V to +Vbat.
from z03mmc.
12:36:05: USB-COM opened.
12:36:08: File was selected, size: 130004 bytes
12:37:53: Reset DTR/RTS (100 ms)
12:37:53: Activate (3 sec)...
12:37:56: Write 130004 bytes in to Flash...
12:38:40: Done (46.936 sec).
12:38:40: Soft Reset MCU
12:40:28: Reset DTR/RTS (100 ms)
12:40:28: Activate (8 sec)...
12:40:36: Write 130004 bytes in to Flash...
12:41:19: Done (51.902 sec).
12:41:19: Soft Reset MCU
Well, at least the runtime was longer this time. Though, still no display output.
Connections as follows:
Starting with only RX and GND connected to the thermometer. The TX and 3.3V connection made on the breadboard only as soon the flasher is at "atime"
from z03mmc.
from z03mmc.
ch340g did not work for me.
cp2102 worked but flushing did not solve zigbee pairing issue.
Flushing back to bluetooth solved connectivity problem, but flushing through OTA "bricked" it again (shows temperature, but can't connect to HA).
Zigbee works fine for 11 other devices (4 older, 7 newer from same batch).
Any suggestions how to debug/fix it?
from z03mmc.
The fix workflow that I use to recover dead sensors:
- Use python script only, web flasher doesn't work for me
- Use
ea
command to clear all flash - Write (
wf
) final firmware, zigbee or ble, depends on what you need. If didn't work, start from (2)
Sometimes playing with timeouts in the script works, but it is not like something standard for all cases. I use timings that are in this repo, or you may try ones from pvvx's repositories.
from z03mmc.
Sorry to piggyback of this thread but here it goes:
After flashing the 1st sensor, i thought i would do them all, boy i was wrong. I managed to rip the P14 pad off the board while soldering.
Does someone have a schematic for where the P14 pad is connected to on the board.
Thank you.
from z03mmc.
@tovy14 It goes directly to the tlsr SoC, you can use a pinout image from the datasheet for 24-pin chip http://wiki.telink-semi.cn/doc/ds/DS_TLSR8251-E_Datasheet%20for%20Telink%20BLE+IEEE802.15.4%20Multi-Standard%20Wireless%20SoC%20TLSR8251.pdf , the pin number is 4.
Very much appreciated, thank you!
from z03mmc.
Related Issues (20)
- inconsistent F/W version HOT 2
- LYWSD03MMC B1.4 bricked HOT 6
- LYWSD03MMC-z HOT 10
- Error when trying to update the device through OTA HOT 1
- last version of the converter for LYWSD03MMC broken HOT 5
- Unresponsive issue HOT 1
- LYWSD03MMC not connecting to zigbee HOT 2
- I don't know HOT 1
- battery voltage? HOT 4
- Unexpected behaviour HOT 4
- Cannot re-pair device HOT 5
- Stuck during OTA flashing HOT 1
- LYWSD03MMC version 2.1.1_0159 HOT 1
- Problem with LYWSD03MMC and Zigbee2Mqtt HOT 1
- Add support for Ruuvi Tags (bluetooth) ?? HOT 3
- Зависают устройства если выключить хаб на несколько часов (Яндекс.станция)
- Bricked 2 devices w no reason HOT 1
- high battery consumption HOT 6
- LYWSD03MMC HW revision going blank after fw reset HOT 2
- Cannot discover Zigbee after flashing HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from z03mmc.