The thermostat just shows "UPD" and there is no way to return to the operating mode. How can I complete the update when I didn't pair the device before or deleted the device from the app?

3 Answers 3


The official statement is that if you have no calor BT app that is currently paired, you are lost and should return the device to the dealer as broken.

However, there is a way out - the following steps are written for a Linux environment but probably can be adapted to other OSes:

  1. Install a current (!) VirtualBox and VirtualBox Extension Pack for USB support
  2. Blacklist btusb module and possibly more specific device drivers like ath3k if it applies to your system to keep the Bluetooth USB device unoccupied (revert this later!); give chmod a+rw permission to the USB device file under /dev/bus/usb/xxx/yyy, see lsusb
  3. Install RemixOS in a VirtualBox VM, add a USB device filter to expose your Bluetooth chip to RemixOS
  4. Install calor BT on RemixOS, run it at least once
  5. Determine the device Bluetooth address: Open the device by unscrewing the four screws, then gently pulling the turning knob outwards, remove the cover; locate the "ADDRESS" QR code printed on the front of the circuit board; scan the QR code to retrieve the Bluetooth adress in form M001A22XXYYZZ (I had to take a picture, crop it and then run the QR scanner on the image); the Bluetooth address then is 00:1A:22:XX:YY:ZZ; replace the cover, again gently pulling the turning knob outwards, turn it to make it fit the turn encoder; screw the cover
  6. Manually set up the calor BT configuration to address the bricked device. Save this as container.json, replacing all XX:YY:ZZ by the address determined above: {"clients":{},"devices":{"00:1A:22:XX:YY:ZZ":{"availableFirmwareVersion":null,"firmwareVersion":null,"groupId":"17f51411-4be0-4155-98f6-9a03bbde5681","groups":[],"id":"00:1A:22:XX:YY:ZZ","label":"Device","lastStatusUpdate":0,"lowBat":false,"unreach":false,"updateState":null,"operationLockActive":false,"temperatureOffset":0,"valvePosition":null,"type":"HEATING_THERMOSTAT"}},"groups":{"17f51411-4be0-4155-98f6-9a03bbde5681":{"channels":null,"devices":["00:1A:22:XX:YY:ZZ"],"homeId":null,"id":"17f51411-4be0-4155-98f6-9a03bbde5681","label":"Room","lastStatusUpdate":0,"lowBat":null,"metaGroupId":null,"unreach":null,"activeProfile":null,"actualTemperature":null,"boostDuration":0,"boostMode":false,"controlMode":"AUTOMATIC","maxTemperature":29.5,"minTemperature":5,"nextSwitchPoint":null,"profiles":null,"setPointTemperature":17,"windowOpen":null,"windowOpenTemperature":12,"type":"HEATING"}},"home":{"absenceEndTime":"","absenceType":"NOT_ABSENT","availableAPVersion":null,"clients":[],"connected":false,"currentAPVersion":null,"deviceUpdateStrategy":null,"ecoDuration":null,"ecoTemperature":0,"groups":["17f51411-4be0-4155-98f6-9a03bbde5681"],"id":null,"lastReadyForUpdateTimestamp":0,"location":null,"nonAbsenceGroups":[],"pinAssigned":false,"powerMeterCurrency":null,"powerMeterUnitPrice":0,"timeZoneId":"","updateState":"UP_TO_DATE","dutyCycle":null},"metaGroups":{},"weather":{"temperature":0,"weatherCondition":"UNKNOWN","weatherDayTime":"DAY"},"homeGroup":null,"inboxGroup":null} Maybe use http://www.jsoneditoronline.org/ to edit this.
  7. Now, install this configuration inside RemixOS: make sure the VM is shut down
  8. Mount the RemixOS VM image, first making the VM image available as a block device (using qemu-nbd from qemu-tools): modprobe nbd qemu-nbd -c /dev/nbd0 --partition 1 <path to RemixOS.vdi>
  9. Now mount it: mount /dev/nbd0 /mnt
  10. Copy container.json to /mnt/android-2016-06-30/data/data/de.eq3.ble.android/app_data/ (might vary depending on RemixOS version)
  11. Unmount the RemixOS image: umount /mnt qemu-nbd -d /dev/nbd0
  12. Boot up RemixOS; run calor BT; go to "Room", then "Device", then "Update firmware"
  13. Firmware should be transferred (showing moving bars next to "UPD" on the device), then rebooted, device is then going to "InS" mode, turn it off and on again to enter date setup, etc.

If this fails during firmware transfer: Keep trying, set the VirtualBox USB mode to 3.0 - I had to try really hard to get this done.

  • 2
    Just want to add my two cents: In case the app doesn't load the configuration, check the user and group parameters of the created file with ls -al and adapt them e.g. chown u0_a72:u0_a72 container.json This bogged my mind for half an hour! ;)
    – gismo141
    Jan 11, 2017 at 22:08
  • @gismo141 Ah, didn't run into this one! But it seems, you managed to use my instructions successfully? :-) Jan 11, 2017 at 23:35
  • Oh yes thank you very much! It was a little hard to get RemixOS running but it worked. As well I manipulated the file in the VM (there is a terminal emulator installed in RemixOS and you can easily become the superuser with 'su' and edit everything directly. Needed some Linux skills but I unbricked that damn thing ;)
    – gismo141
    Jan 15, 2017 at 21:47
  • @gismo141 Really, you could get root on RemixOS? Somehow I failed that and only read complicated guides about "rooting" RemixOS, that's why I went the raw qemu-nbd route. Glad, I could save your devices from eternal brickage! Jan 16, 2017 at 10:00
  • Very good documentation! Worked fine for me, but I still cannot connect the thermostat. The thermostat shows UPD, but the app says, cannot connect, device not in range. Bluetooth is working fine. Any Idea?
    – markus
    Sep 19, 2017 at 19:30

NOTE: Two years have passed since the original post and it's possible that this trick only works with newer devices

I have just tried the following trick that worked:

  1. remove one battery
  2. press and hold the dial
  3. put the battery back
  4. hold the dial for some 15 seconds
  5. release the dial, start update from the "Calor" app

Good luck!


When I tried to update my thermostat the update process failed at ~10%. Luckily I still had the app installed and paired but would consistently fail between 0-25%.

The solution for me was to disable 3G-Network, Disable WiFi and go .. outside .. ~100m away from my home. There I could consistently get ~80-95% .. and finally after half an hour it updated.

I can only assume that my mobile/the thermostat or whatever combination is very suseptible to transmission disturbances or something like this.

Not the answer you're looking for? Browse other questions tagged or ask your own question.