Can't get ESPHome devices to update firmware

Try updating your devices from the esphome web interface so you can watch the serial debug logs to see what is going wrong.

1 Like

Don’t you have displays, fonts, images on these 3 devices?

Do you mean by connecting them to a computer? I have these sensors in difficult to reach places, it will have to be through wifi i’m afraid. Or is that not what you are suggesting?
Otherwise I don’t think I know what you mean by web interface

No you can update OTA (over the air) from the esphome web interface and it will show you a log of what is going on.

Okay, thanks for explaining that. I didn’t know about that anymore. I once installed them and they work fine, so don’t have to go there.
I tried update all from the top of the screen. They all fail, and the message is the same for all three. Here I quote the message for one of them:

Updating /config/esphome/esphome-web-681dce.yaml ------------------------------------------------------------ INFO ESPHome 2023.7.0 INFO Reading configuration /config/esphome/esphome-web-681dce.yaml… INFO Generating C++ source… INFO Compiling app… Processing esphome-web-681dce (board: esp01_1m; framework: arduino; platform: platformio/[email protected]) -------------------------------------------------------------------------------- HARDWARE: ESP8266 80MHz, 80KB RAM, 1MB Flash Dependency Graph |-- ESPAsyncTCP-esphome @ 1.2.3 |-- ESPAsyncWebServer-esphome @ 2.1.0 |-- DNSServer @ 1.1.1 |-- ESP8266WiFi @ 1.0 |-- ESP8266mDNS @ 1.2 Compiling /data/esphome-web-681dce/.pioenvs/esphome-web-681dce/src/esphome/components/api/api_pb2.cpp.o xtensa-lx106-elf-g++: fatal error: Killed signal terminated program cc1plus compilation terminated. *** [/data/esphome-web-681dce/.pioenvs/esphome-web-681dce/src/esphome/components/api/api_pb2.cpp.o] Error 1 ========================= [FAILED] Took 57.59 seconds ========================= ===== [ERROR] /config/esphome/esphome-web-681dce.yaml ===== ======================== [SUMMARY] ======================== - /config/esphome/co2-slaapkamer.yaml: FAILED - /config/esphome/co2-woonkamer.yaml: FAILED - /config/esphome/esphome-web-681dce.yaml: FAILED

DOWNLOAD LOGSCLOSE

Now try what I asked you to do (just for one of them) and post the log. It may be more verbose.

And post your YAML from one device, just to be sure.

I’m not entirely certain, but it looks like you aren’t using the logger component. This would be good to see what’s happening.

I don’t have the option visible to update only one. I don’t see the update available button in the individual devices.

Here is the yaml for one of them:

esphome:

name: co2-slaapkamer

esp8266:

board: d1_mini

Enable logging

logger:

Enable Home Assistant API

api:

ota:

password: “xxxxxxxxxxxxxxxxxxxxxxxxxx”

wifi:

ssid: XXXXXXXXXXXXX

password: xxxxxxxxxxxxx

manual_ip:

static_ip: 192.168.0.126

gateway: 192.168.0.1

subnet: 255.255.255.0

Enable fallback hotspot (captive portal) in case wifi connection fails

ap:

ssid: "Co2-Slaapkamer Fallback Hotspot"

password: "xxxxxxxxxxx"

captive_portal:

uart:

rx_pin: GPIO14

tx_pin: GPIO12

baud_rate: 9600

i2c:

sda: 4

scl: 5

scan: True

sensor:

  • platform: mhz19

    co2:

    name: “Slaapkamer-CO2”

    temperature:

    name: “Slaapkamer-CO2-Temperatuur”

    update_interval: 60s

    automatic_baseline_calibration: false

  • platform: bme280

    address: 0x76

    temperature:

    name: “Slaapkamer-Temperatuur”

    oversampling: 16x

    pressure:

    name: “Slaapkamer-Luchtdruk”

    humidity:

    name: “Slaapkamer-Humidity”

    update_interval: 60s

it doesn’t show since you already tried once (it doesn’t actually check the device, but the version of the compiled files)
Just use the 3 dots and hit ‘install’ :wink:

And while at the 3 dots, maybe use the ‘clean build files’ option as well?

1 Like

Tried it, but didn’t help. First did install and after that I also did the clean option. After that another trial to update, but no joy either.

1 Like

Please take a look at the forum rules, we can’t really work with unformatted text. :wink: It is necessary to format code or logs, as YAML is very picky about indentation. Without formatting you loose these indentations and so we loose the ability to check for errors. :slight_smile:

See here:

Despite what others here are guessing, from the logs one can see, that it doesn’t compile correctly, meaning your firmware isn’t even made, so there is nothing to update the device, as there is no correct firmware. :wink:

So first things first:

  • Have you done a restart of ESPHome after the update to 2023.7.0?
  • If not, restart the Add-on (not HA)
  • Open any system tool you might have, to see the CPU load. Leave this tool window open.
  • Go to one of the devices, click the three dot menu and click “install”
  • It’d be best, if you could have both windows open now, one for the CPU load, the other of ESPHome. See, if you are hitting a 100% CPU load and report back.
  • If the CPU load stays at a reasonable value (even 100% is ok for a very short time period), check your internet connection. Is HA and therefor the ESPHome Add-on having troubles with downloading things? Eg. if you have a weather provider, does it update?
  • Please report back with your hardware and versions of software. Eg. what computer are you using, a Pi, something else, we need to know that.
  • If nothing of the above checks out, re-install the ESPHome Add-on, but not without doing a backup before and ideally with saving the ESPHome configuration files (the devices YAML). It makes things easier if something goes wrong.

Report back what happened! :slight_smile:

1 Like

when searched on forum, you’ll find this:

and another option mentioned in the same thread

2 Likes

Nifty idea to search for the error! :+1: :slight_smile: Should have thought about that. :rofl: :rofl:

But that’s the direction I was thinking. ESPHome has gotten quite power hungry, and I can remember before upgrading from a Pi4 to an Intel i5, my CPU load was near 100% and RAM was always an issue (while compiling). :slight_smile:

Stopping the addons did the trick. I had a window open with the CPU/Memory load. Before stopping the addons, the memory percentage was at 88% or so. I don’t have a lot of addons, and most of them don’t need much, but the MariaDB addon eats around 15%. So, definately a RAM issue I would say.

I can explain it or myself too now. I never had any issues with updating the ESP’s. However, a few months ago, I started using MariaDB because I switched from storage on an SD card to an SSD. So, with previous updates of the ESP’s my memory wasn’t used as much by MariaDB yet.

Thanks for all the help guys, problem solved!

Sorry about the lack of formatting. I have no idea how to post it with the ```` signs. It gave a suggestion, but that looked even worse

I’m sorry, really, if formatting wouldn’t be that important, I wouldn’t have said something. :slight_smile:

Just to note, there are some methods to compile on your local machine, but all of them involve more or less technical knowledge, as you’d need to install another ESPHome instance just for compilation. :slight_smile: That’s the “last resort” alternative, if the HA/ESPHome instance isn’t going to compile. :slight_smile:

1 Like

Wow. That’s one to remember. Good find.

1 Like

I did exactly this, to off-load the compiles from my HA environment. I didn’t think it involved all that much technical knowledge. I installed the app on my Windows laptop, just like any other Windows app.

Admittedly, it’s all command-line from there. So if that sort of thing scares you maybe you’re better off avoiding it. But to me it was totally worth it. Now I can do my ESPHome development, with lots of re-compiling, never worrying about impacting my production HA system.

1 Like

Just as a side note, I had the same issue a few days ago (Update available → seems to update but jumps back to available after some time) and solved it by cleaning the build via ESPHome Dashboards and installing via OTA to the device again. This builds the files with the new version.
On one device I had to “install” multiple times due to the connection gets terminated by power saving measurements.
Now they get updated perfectly again via HA update procedures.