ESPHome Flashing over Ethernet (Tubes-zw)

Running latest ESPHome builder in Docker. 2026.4.1.

I was getting this “ESP does not have enough space” error when trying to flash a device over ethernet.

So, I trimmed down my config and tried to install again and now it reports:

ERROR All specified devices ['OTA'] could not be resolved. Is the device connected to the network? If you know the IP, set 'use_address' in your network config.

But, I’m providing the IP address:

ethernet:
  use_address: 192.168.0.28

And the device is there (and still working with z-wave):

ping 192.168.0.28
PING 192.168.0.28 (192.168.0.28): 56 data bytes
64 bytes from 192.168.0.28: icmp_seq=0 ttl=255 time=103.859 ms
64 bytes from 192.168.0.28: icmp_seq=1 ttl=255 time=5.547 ms
^C

And the ESPHome webserver is showing up at that IP.

Full config
esphome:
  name: tubeszb-black
  name_add_mac_suffix: false
  friendly_name: Tubeszb Black Hub

api:
  encryption:
    key: O0e1Mzc/r1bIFkZHppKb6E4pcEP/mPyffpH4v5PFuMU=


#packages:
#  tubezb.zw: github://tube0013/tube_gateways/models/current/tubeszb-zw-kit/tubeszb-zw.yaml

  
esp32:
  board: esp32-poe
  framework:
    type: esp-idf
    advanced:
      include_builtin_idf_components:
        - esp_http_client
        - esp_crt_bundle
    sdkconfig_options:
      CONFIG_LWIP_MAX_SOCKETS: "16"
      CONFIG_PM_ENABLE: "n"
      # Prevent IDF from trying to power-down UART in light sleep, which causes
      # uart_param_config to return ESP_ERR_NOT_SUPPORTED on some targets
      CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP: "n"
      CONFIG_UART_ISR_IN_IRAM: "y"

ethernet:
  use_address: 192.168.0.28
  type: LAN8720
  mdc_pin: GPIO23
  mdio_pin: GPIO18
  clk:
    pin: GPIO17
    mode: CLK_OUT
  phy_addr: 0
  power_pin: GPIO12


# Enable logging
logger:
  level: DEBUG

you’ll need the OTA component in your yaml I guess?

Ah, of course.

Adding

ota:
  - platform: esphome

Now I get:

INFO ESPHome 2026.4.1
INFO Reading configuration /config/tubeszb-zw.yaml...
...
...
INFO Connected to 192.168.0.28
INFO Uploading /config/.esphome/build/tubeszb-black/.pioenvs/tubeszb-black/firmware.bin (431936 bytes)
ERROR Error receiving acknowledge version: [Errno 104] Connection reset by peer
WARNING Failed to upload to ['192.168.0.28']

Assuming I’m looking at the correct original source or here, I don’t see an ota password configured. Could there be some version requirement in the existing firmware that is causing that? The error message is a bit confusing.

By the way, doesn’t it seem odd that use_address, which says how to connect, is in the wifi or ethernet config, which configure the device? The hostname (also used to connect) is set in esphome block, so it seems like it should be there or in ota config.

You will have to connect via serial once after adding the OTA to your YAML. Once the device has a firmware that accepts OTA you can do the updates via Wi-Fi or wired Ethernet whichever way you connect.

Thanks @EBME2 and @Krivatri, all good now.

In case anyone finds this thread, that package uses an deprecated setting, so I overrode it like this to suppress the warning:

packages:
  tubezb.zw: github://tube0013/tube_gateways/models/current/tubeszb-zw-kit/tubeszb-zw.yaml

ethernet:
  clk_mode: !remove
  clk:
    mode: CLK_OUT
    pin: GPIO17
1 Like