pvvx / ATC_MiThermometer

Custom firmware for the Xiaomi Thermometers and Telink Flasher
https://github.com/pvvx/pvvx.github.io/tree/master/ATC_MiThermometer
Other
2.87k stars 200 forks source link

Cannot seem to get it to work on version B1.9 #125

Closed bbosilje closed 2 years ago

bbosilje commented 2 years ago

When I try to flash it with the latest firmware in the repo, the display remains "frozen" with the last values it displayed with the stock firmware.

When I flash back to the original firmware on the web page, the display comes back with all the segments lit up (ie: 1888.8 E, 88 %, Bluetooth icon, battery icon and full face).

Screen Shot 2021-09-28 at 13 56 41

I am still able to communicate with the device through the flashing webpage, but nothing I do seems to change the display.

Am I doing something wrong or does this revision of the unit (B1.9) not work with the existing firmwares in this repo?

Toaster232 commented 2 years ago

I have the same problem with 2 unit's. Both have CMIIT ID: 2019DP8115 (On the back of the carton box) After installing de original software back on the unit. The display shows 88% and LOW battery icon and says the temp is 27c when looking at the ESPHome log.

vanMacG commented 2 years ago

My first thermometer works fine, so I ordered some more. With he new ones I have the same problem. After flashing a custom firmware (31, 32n, 32z) the display freezes. When putting the battery out and back in the display stays empty. But I'm able to connect with the webupdater. After flashing the original firmware back, the display is like the picture in first post.

Here are pictures of the packaging and the PCB: IMG_20210929_170646 IMG_20210929_170702 IMG_20210929_170729

vanMacG commented 2 years ago

Besides the display problem, the measurement also doesn't work. After sucessfully connecting with the webupdater, at the top of the page, it says: "Temp/Humi: waiting notify for data after connecting". When using GraphMemo after some time: "load 0 samples."

Maybe @atc1441 knows the new ones and can help...?

dvonessen commented 2 years ago

I also have a similar problem. Except, using the original FW doesn't bring back the LCD. Is there someone helping with this problem?

Regards

atc1441 commented 2 years ago

Comparing the old and new pcb we can see they use a new lcd controller ic.

So that means we need to adapt the display communication

https://img.mysku.me/uploads/pictures/05/59/35/2020/02/19/30f83a.jpg

vanMacG commented 2 years ago

Would better images of the chip help, so you can read the printing?

And besides the display, the measurement seems also broken...

atc1441 commented 2 years ago

Pictures would help to, mostly these chinese chips are not known/without datasheet but we can try

vanMacG commented 2 years ago

20211005_160546 I'm sorry for the image quality, I only have smartphone/tablet camera. I checked with a magnifying glass: MCBSLM01 V5K000EG3

Reimund-Koenig commented 2 years ago

Hello everybody,

there is a funny Information: Package of mine showed same date "2021.08" (see 3rd picture) but when I opened up my case, I realized that I have HW-B1.6 (2021-03) and not HW-B1.9 (2021-05). They change their HW very fast. Chip on the first picture has no description at all :-( TeLink chip on the 2nd picture is at least the same. 3rd Picture shows the package.

Question: Should I re-open https://github.com/pvvx/ATC_MiThermometer/issues/130 because it is a different HW? Or do we manage it in one issue, because the HW behaves the same?

IMG (1c) IMG (1b) IMG (1d)

Reimund-Koenig commented 2 years ago

Good morning,

I at least found a way to recover the Mi-Thermometer (screen and sensors).

Cheers Reimund

atc1441 commented 2 years ago

So that means they made a detection for what display controller they got in a device with just one firmware.

This is good as we can see how they detect it and copy it, as in the first model there was no way to read from the display controller just writing.

Can you maybe dump the firmware update file link? You need to be rooted if i remember correctly

atc1441 commented 2 years ago

Took a while to get it but here we go

Changed the MiHome plugin so it will alert with the firmware URL 😁

Screenshot_20211007-101413_Mi Home

New firmware attached as reference LYWSD03MMC_0130_upd_miaomiaoce.sensor_ht.t2.zip

atc1441 commented 2 years ago

Update and downgrade from an to 0130 works fine. So can be developed with now and reversed further

vanMacG commented 2 years ago

Sounds great. Unbricking the device with webupdater and the zip you provided here worked. If you need testers, let us know ;)

H4R0 commented 2 years ago

I got mixed batches where you order for example 4 sensors at once.

Half of them got bricked and I was able to unbrick them with the given stock firmware.

Note that for me not only display was not working but also temperature reports.

BLE communication was the only thing that still worked.

pvvx commented 2 years ago

So that means they made a detection for what display controller they got in a device with just one firmware.

Display controller on I2C: image

PS: I don't have new versions of devices yet :(

DeBuXer commented 2 years ago

Note that for me not only display was not working but also temperature reports.

BLE communication was the only thing that still worked.

Same issue here, only in my case it is also not possible to receive the settings from the device like explained here.

I got 6 of these new devices. So if I need to test something, let me know! :)

vanMacG commented 2 years ago

PS: I don't have new versions of devices yet :(

Do you need the vendor where I bought mine? V1.9. (German ebay, but shipping took 1 week...)

mariuszkorba commented 2 years ago

Thanks for all this info - it helped me reviving my two devices (both CMIIT id: 2019DP8115).

For what's worth, @atc1441 custom firmware (https://github.com/pvvx/ATC_MiThermometer/issues/125#issuecomment-937552241) worked for me, so it did the method @Reimund-Koenig described (https://github.com/pvvx/ATC_MiThermometer/issues/125#issuecomment-937472617)

Both sensors are now working happily with my Homes Assistant, though sadly using Xiaomi firmware and the Mi bind codes.

@atc1441 if you decide to update your .bin to work with these new devices, also count me in for any testing you might need 😄

atc1441 commented 2 years ago

Need to get my hands on one of the newer devices or best on both of them.

Then its quite simple to add them.

Will order some.

Just got a donation from O. So its only fair to invest that money back into it :)

atc1441 commented 2 years ago

Any best links for odering from germany ?

mariuszkorba commented 2 years ago

Nice one; how can I chip in as well? BTW. Great work, you and @pvvx 💪

I got mine devices from here: https://www.aliexpress.com/item/4000427410383.html, and they arrived, albeit to the UK, reasonably quickly.

Good luck with getting yours soon.

vanMacG commented 2 years ago

Any best links for odering from germany ?

I ordered mine here on ebay and got V1.9. But shipping takes a week...

atc1441 commented 2 years ago

@vanMacG ordered one there because of speed.

@mariuszkorba thanks as well A link is in my Repo https://github.com/atc1441/ATC_MiThermometer

Maybe someone can send me one as well? As there are two new versions and not known what some will get

DryTaste commented 2 years ago

@atc1441 I can send you a B1.6 one if needed.

rbarreiros commented 2 years ago

Got exactly the same problem, got the MCBSLM01 lcd controller, and the latest xiaomi firmware from @atc1441 doesn't work for me. I got 4 new ones, only did this to one of them, got other 3 running original firmware, is it possible to read the flash and dump the bin ?

Managed finally to connect to xiaomi home, added and downloaded latest firmware, it downloads a 0130 version also (same as @atc1441) but works, I suspect it may have been a problem flashing the firmware.....

MrTheoW commented 2 years ago

@atc1441 I got two spares laying here. Other two in this 4-pack are already in use without any hiccups. Will check the versions and contact you if it are the newer versions. Shouldn't take too long from the Netherlands to get it to you. Btw... You guys are awesome! Thanks for sharing this with us and for all the effort you guys are putting into it. 🙏

bjeanes commented 2 years ago

I experienced same thing and was able to fix the display by upgrading in Mi Home app, as suggested above. However, afterwards when trying to set a bindkey for use with stock firmware, Telink flasher outputs:

12:08:36: Searching for devices
12:08:39: Connecting to: LYWSD03MMC
12:08:47: NotFoundError: No Services matching UUID 00010203-0405-0607-0809-0a0b0c0d1912 found in Device.
12:08:47: Reconnect 1 from 5
12:08:47: NotFoundError: No Services matching UUID 00010203-0405-0607-0809-0a0b0c0d1912 found in Device.
12:08:47: Reconnect 2 from 5
12:08:47: NotFoundError: No Services matching UUID 00010203-0405-0607-0809-0a0b0c0d1912 found in Device.
12:08:47: Reconnect 3 from 5
12:08:47: NotFoundError: No Services matching UUID 00010203-0405-0607-0809-0a0b0c0d1912 found in Device.
12:08:47: Reconnect 4 from 5
12:08:47: NotFoundError: No Services matching UUID 00010203-0405-0607-0809-0a0b0c0d1912 found in Device.
12:08:47: Reconnect 5 from 5
12:08:47: NotFoundError: No Services matching UUID 00010203-0405-0607-0809-0a0b0c0d1912 found in Device.
12:08:47: Something went wrong, to many reconnect's

Does upgrading break the ability to read with stock firmware?

atc1441 commented 2 years ago

@MrTheoW Thank you. Lets wait a bit to see what version i get got the one on order and one being send to me so maybe this is already enough

bjeanes commented 2 years ago

If you're in Australia, I'm happy to send you one. But if not, it probably won't beat your order haha.

MrTheoW commented 2 years ago

Sorry, But the ones I have left are versions 1.4. image

RafaelSchridi commented 2 years ago

I got 3 V1.6 and oddly enough they don't brick themselves unless I reseat the battery. They can be reflashed but there are no measurements.

fschaer commented 2 years ago

I experienced same thing and was able to fix the display by upgrading in Mi Home app, as suggested above. However, afterwards when trying to set a bindkey for use with stock firmware, Telink flasher outputs:

12:08:36: Searching for devices
12:08:39: Connecting to: LYWSD03MMC
12:08:47: NotFoundError: No Services matching UUID 00010203-0405-0607-0809-0a0b0c0d1912 found in Device.
12:08:47: Reconnect 1 from 5
12:08:47: NotFoundError: No Services matching UUID 00010203-0405-0607-0809-0a0b0c0d1912 found in Device.
12:08:47: Reconnect 2 from 5
12:08:47: NotFoundError: No Services matching UUID 00010203-0405-0607-0809-0a0b0c0d1912 found in Device.
12:08:47: Reconnect 3 from 5
12:08:47: NotFoundError: No Services matching UUID 00010203-0405-0607-0809-0a0b0c0d1912 found in Device.
12:08:47: Reconnect 4 from 5
12:08:47: NotFoundError: No Services matching UUID 00010203-0405-0607-0809-0a0b0c0d1912 found in Device.
12:08:47: Reconnect 5 from 5
12:08:47: NotFoundError: No Services matching UUID 00010203-0405-0607-0809-0a0b0c0d1912 found in Device.
12:08:47: Something went wrong, to many reconnect's

Does upgrading break the ability to read with stock firmware?

@bjeanes got the same issue : just cliqued on "clear log", then again on connect and issue disappeared. I maybe reloaded the page or manually disconnected the device from bluetooth before retrying...

bjeanes commented 2 years ago

I can't get rid of it. I get the error on https://atc1441.github.io/TelinkFlasher.html as well as https://pvvx.github.io/ATC_MiThermometer/TelinkMiFlasher.html (with this one device - other 5 are fine).

I've rebooted the computer, reset the sensor, taken battery out and back. It's not bricked as it still is updating temp/humidity and advertises on BLE, but the flashers can't seem to work with it :(

bjeanes commented 2 years ago

So out of curiosity, I tried a different computer and it was able to connect to that device and let me activate a bindkey. Not sure why my primary computer consistently fails to connect. Maybe some poisoned cache somewhere...

jovannig commented 2 years ago

I bought 4 of these devices from aliexpress. On the first I flashed the firmware with ATC_Thermometer.bin file. The procedure was ok, but when I disconnected the battery and connect it again the screen is blank and I cannot use it anymore. However the device is reachable via bluetooth and seen as a ATC_XXXX device. On another device I did the same and of course the same issue happened. Then I tried to flash the original firmware to the device (d4135e135443ba86e403ecb2af2bf0af_upd_miaomiaoce.sensor_ht.t2.bin file, found on this page). What happened next is the device is bricked, It is not discoverable anymore via bluetooth and the screen is blank. I now have two other new devices to use but I don’t want to brick them too. I hope to find a solution very soon...

Protoncek commented 2 years ago

You can flash bricked devices via UART, they are not hopelessly dead...

TimeTravel-0 commented 2 years ago

Just to confirm:

I got 3 devices labeled (on box) 2021.08

  1. flashed ATC_Thermometer32z.bin firmware = frozen display, no measurements, BLE works.
  2. Removed and re-inserted battery = empty display
  3. needed to switch from Chrome on Debian with BLE dongle to another device / Chrome on Android (I was unable to connect to the devices from Chrome on Debian after initial flash, did not try reboot but unplug/replug of USB BLE adapter)
  4. updated to stock firmware Original_OTA_Xiaomi_LYWSD03MMC_v1.0.0_0109.bin = empty/frozen display but BLE works.
  5. updated to LYWSD03MMC_0130_upd_miaomiaoce.sensor_ht.t2.zip = works again

Attached: PCB top and bottom of CHMLmini_TLW_V1.6 202103 HW: B1.6 b-1-6

A quick multimeter test indicates: The two i2c pins connect to the temphum sensor only, not to the new display controller (no marking / label). The test point names near the display controller (SCK, SDA) are a hint that this revision uses SPI (?).

From pictures: The production marking of 1.4 is 2021-13 (week 13 is 03/21) and design date of 2020-12 The production marking of 1.6 is 2021-23 (week 23 is 06/21) and design date of 2021-03 The production marking of 1.9 is 2021-31 (week 31 is 08/21) and design date of 2021-05

probed around the board with the logic analyzer: P7 looks like a SPI MOSI or I2C SDA, P11 looks like a MISO. PSDA/PSCK start to toggle as soon as the first data is sent on P7 Data on P7 / P11 repeats every ~6.9 seconds. latrace1 latrace2

Inspecting this a bit closer... there is only 1 connected pin, and it is connected to pin 1 of the controller which supports UART. Bit time fits with 38400 baud UART and parsing as UART data seems reasonable... is this UART? Did they just add a 2nd microcontroller to drive the display? b-1-6-2 after initial power-on (all segments active): uart-1 a few seconds later, display updates to a reading (I dont know what, display not attached): uart-2

00 00 00 00 AA seems to be the header, 55 the end of packet marker ; after the AA seems to be the control data, possibly 1 = segment switched on? next to the 55 seems to be some kind of check sum as it is 00 in the FF FF FF... packet and something else in the "real data" packet. 6 data bytes provide 6*8 = 48 bits, which should fit all the LCD segments. This is just an educated guess and needs to be confirmed...

I can provide logic analyzer traces of B1.6 or provide a B1.6 unit (shipping in Germany) if anyone is interested.

Is it worth the effort for B1.6 hardware or should I just (try to) get newer B1.9 hardware? I assume the rapid design changes are due to chip shortage, so it might be a good idea to support B1.6 as well in case they start to produce B1.6 again. I'll try to capture more info soon to provide enough data to figure out the checksum and map the segments to the bits of the 6 bytes.

As this issue is about B1.9 - where should B1.6 info go?

Edit: Regarding the checksum: bitwise XOR of 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF bytes --> 0x00 bitwise XOR of 0xD3 0xBE 0x15 0xA5 0xF6 0xBF bytes --> 0x94

This means it is possible to feed own UART data to the B1.6 display controller and figure out which segment maps to which bit in the 6 bytes.

alxzndr commented 2 years ago

Same issue here with the B1.6 version. Thanks for all the effort in trying to fix this!

Reimund-Koenig commented 2 years ago

I bought 4 of these devices from aliexpress. On the first I flashed the firmware with ATC_Thermometer.bin file. The procedure was ok, but when I disconnected the battery and connect it again the screen is blank and I cannot use it anymore. However the device is reachable via bluetooth and seen as a ATC_XXXX device. On another device I did the same and of course the same issue happened. Then I tried to flash the original firmware to the device (d4135e135443ba86e403ecb2af2bf0af_upd_miaomiaoce.sensor_ht.t2.bin file, found on this page). What happened next is the device is bricked, It is not discoverable anymore via bluetooth and the screen is blank. I now have two other new devices to use but I don’t want to brick them too. I hope to find a solution very soon...

To recover devices over the air use xiaomi app as described in: https://github.com/pvvx/ATC_MiThermometer/issues/125#issuecomment-937472617

jovannig commented 2 years ago

Good morning,

I at least found a way to recover the Mi-Thermometer (screen and sensors).

  • Connect though it with pvvx TelinkMiFlasher
  • Click Original-FW
  • Click Flash to Device
  • Go to the Xiaomi Home App
  • Connect your device (still possible)
  • Go to Settings and select "Firmware Update"
  • Done --> You can use your device again :)

Cheers Reimund

I tried but on my page I don't see any "Original Firmware" to click. The only thing I can do is to download the original firmware and flash it. But I don't know where to find the firmware file.

atc1441 commented 2 years ago

Just got in a few B1.6 version Thermometers and hooked one first up to a Logic Analyzer as well so that one can be started on now the B1.6 version, lets see what the other ordered one will bring :)

thanks for the donation to M4

Sensor, not really usefull: MiThermometer_B1 6

jovannig commented 2 years ago

Good morning, I at least found a way to recover the Mi-Thermometer (screen and sensors).

  • Connect though it with pvvx TelinkMiFlasher
  • Click Original-FW
  • Click Flash to Device
  • Go to the Xiaomi Home App
  • Connect your device (still possible)
  • Go to Settings and select "Firmware Update"
  • Done --> You can use your device again :)

Cheers Reimund

I tried but on my page I don't see any "Original Firmware" to click. The only thing I can do is to download the original firmware and flash it. But I don't know where to find the firmware file.

Ok, I just made it! Thanks, I'll wait for a solution!

TimeTravel-0 commented 2 years ago

Just got in a few B1.6 version Thermometers and hooked one first up to a Logic Analyzer as well so that one can be started on now the B1.6 version, lets see what the other ordered one will bring :)

thanks for the donation to M4

Sensor, not really usefull: MiThermometer_B1 6

Marking is similar to Sensirion SHT4x. Package is similar. Pinout fits. https://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/2_Humidity_Sensors/Datasheets/Sensirion_Humidity_Sensors_SHT4x_Datasheet.pdf

I2C trace shows: address of sensor on my B1.6 is 0x44. Fits the SHT4x. CRC algorithm of SHT4x fits the data from the B1.6 sensor. Formula to get measurement values from raw bytes calculates reasonable temperature and humidity for me.

"run measurement" command is 0x44 0xFD, which fits the SHT4x.

Run measurement: run-meas

Get results: get-res 0x65 0x9A calculates to 24,45 °C ; CRC with help of http://www.sunshine2k.de/coding/javascript/crc/crc_js.html is 0x41, which is correct 0x77 0x8D calculates to 52,4 % rel. humidity ; CRC with help of link above is 0x22, which is correct

atc1441 commented 2 years ago

@TimeTravel-0 perfekt. Looks very good :)

pvvx commented 2 years ago

I have made several orders in different stores and I am awaiting receipt. Hopefully new versions will come ... When I receive new versions in a few days, I will build support. There is nothing complicated here. The main thing is that the new version HW is at hand...

bjeanes commented 2 years ago

I ordered from https://www.aliexpress.com/item/1005001626975979.html and the 7 (of 10) which I have set up were all v1.9 hardware. The other 3 may also be, but I haven't opened the box.

S0krates23 commented 2 years ago

Maybe someone can send me one as well? As there are two new versions and not known what some will get

Sure, in Berlin? Tell me where, got 4 here.

atc1441 commented 2 years ago

Maybe someone can send me one as well? As there are two new versions and not known what some will get

Sure, in Berlin? Tell me where, got 4 here.

Near Hamburg, got the B1.6 Version now so only if you may got the B1.9 version it is needed anymore :)

S0krates23 commented 2 years ago

unfortunaly i am unable to open the screws. very small torx needed -.- can somebody tell which one exactly?