Update gl-s10-6803dc with ESPHome 2025.2.2 or later

Has anyone had any luck updating their GL.iNet GL-S10 to the latest version ie. v2025.2.2 ? Mine is on v2024.7.3
Please share steps you did. TIA

Update gl-s10-6803dc with ESPHome 2025.2.2 or later
Warning ⸱ Reported by ESPHome
To improve Bluetooth reliability and performance, we highly recommend updating gl-s10-6803dc with ESPHome 2025.2.2 or later. When updating the device from ESPHome earlier than 2022.12.0, it is recommended to use a serial cable instead of an over-the-air update to take advantage of the new partition scheme.

Yes, no problem. Just did esphome run as usual - OTA update.

I’m running HA on standalone hardware so I never used esphome run.
I assume you’re using Docker? If you or anyone else can point me in the right direction on how to update properly I would appreciate it!

No, not using Docker. You can install and run ESPHome on any desktop and update devices from there - it’s generally much faster than doing it through HA. You can also run the ESPHome dashboard on your desktop if that’s your preference.

I would suggest you show what you tried and where it failed.

Ok, so I have ESPHome installed on my desktop computer. How do I connect GL-S10 to start the update process? USB?
Currently its connected via Ethernet to the HA.

See here: The Best Home Assistant Bluetooth Proxy: GL.iNet GL-S10 | Blakadder's Smarthome Shenanigans

BTW you can ignore the comment “Newer revisions using the IP101PHY chip have issues” - with the correct config this is not true.

Obviously you should use the config you have previously used. How did you originally flash it?

Oh, and you should just be able to flash it via OTA from the command line anyway, that’s what I did.

I believe that’s guide I used. It has been a while. Can you list the steps you did with OTA from the command line? You did had device in flash mode connected with TX, RX and GND pins?

OTA just needs a network connection, and that the device has previously been flashed with ESPHome, both of which you apparently have.

The command I used is just what I showed previously:

esphome run somefilename.yaml

There are no other steps, other than installing ESPHome which you said you have done.

I’m not sure why you’re reluctant to show what you tried, and where it failed, but that’s going to be the most effective way of getting help diagnosing your problem.

Similar situation. I’m getting the same error/warning about needing to upgrade to 2025.2.2. When I got to the ESPHome integration page, it shows the device is on 2025.2.1, and that the firmware is “Up-to-date” and no way to check for updates, and the details page claims it check for updates 30 minutes ago. The error first appeared 1 week ago.

Did firmware 2025.2.2 get pulled? but not before the error message got triggered?

Ok. This is what I’ve tried. S-10 is connected via ethernet and on the same network. I saved yaml from here GL-iNet GL-S10 | devices.esphome.io in s10.yaml and when I run this is what I get:

C:\Users\johnny\Documents\S10>esphome version
Version: 2025.2.2

C:\Users\johnny\Documents\S10>esphome run s10.yaml
INFO ESPHome 2025.2.2
INFO Reading configuration s10.yaml...
WARNING GPIO5 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins
WARNING GPIO12 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins
WARNING GPIO15 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins
Failed config

At least one platform must be specified for 'ota'; add 'platform: esphome' for original OTA functionality


What yaml setting did you use?

I’m glad that it’s not just me.

So did you do that?

Finally, I was able to update it using OTA, and now I’m on ESPHome 2025.2.2!!!
Thank you for sticking around!

So, if another soul stumbles upon this issue, here’s what I did:

.

  • Install Git for Windows:

  • Go to https://git-scm.com/download/

  • Download the Windows installer

  • Run the installer with default options

  • Important: When installing, make sure to select:

  • “Git from the command line and also from 3rd-party software”

  • “Use the OpenSSL library”

  • “Checkout Windows-style, commit Unix-style line endings”

  • Verify Git installation:

  • Close and reopen your Command Prompt with Admin rights
    run git --version

  • You should see something like git version 2.x.x

I added:

ota:
  platform: esphome

to s10.yaml and here’s the entire V2.1

substitutions:
  name: gl-s10-bt-proxy
  friendly_name: Bluetooth Proxy

esphome:
  name: ${name}
  friendly_name: ${friendly_name}
  name_add_mac_suffix: true
  project:
    name: gl-s10.bluetooth-proxy
    version: "2.1"
  # turn on Power LED when esphome boots
  on_boot:
    then:
      - output.turn_on: power_led

esp32:
  board: esp32doit-devkit-v1
  framework:
    type: esp-idf

# Configuration fo V2.3 hardware revision
ethernet:
  type: IP101
  mdc_pin: GPIO23
  mdio_pin: GPIO18
  clk_mode: GPIO0_IN
  phy_addr: 1
  power_pin: GPIO5

api:
logger:
ota:
  platform: esphome
dashboard_import:
  package_import_url: github://blakadder/bluetooth-proxies/gl-s10_v2.yaml@main

esp32_ble_tracker:
  scan_parameters:
    interval: 1100ms
    window: 1100ms
    active: true
#
# The LED is disabled for ESPHome 2023.6.0+ since we do not
# decode the advertising packets on device anymore, and adding
# the LED blink would force the device to decode the packets
# just to blink the LED.
#
# Bluetooth LED blinks when receiving Bluetooth advertising
#  on_ble_advertise:
#    then:
#      - output.turn_on: bluetooth_led
#      - delay: 0.5s
#      - output.turn_off: bluetooth_led

bluetooth_proxy:
  active: true

button:
  - platform: safe_mode
    name: Safe Mode Boot
    entity_category: diagnostic

## DEVICE SPECIFIC CONFIGURATION
# network LED (white one) configured as status led
status_led:
  pin:
    number: GPIO32
    inverted: true

# button on the side labeled RESET
binary_sensor:
  - platform: gpio
    pin:
      number: GPIO33
      inverted: true
    name: "Reset Button"

# output settings for LED's marked Power and Bluetooth
# power LED use: see code line 15
# bluetooth LED use: see code line 60
output:
  - platform: gpio
    pin: GPIO14
    inverted: true
    id: power_led
  - platform: gpio
    pin: GPIO12
    inverted: true
    id: bluetooth_led

# since these pins are broken out inside and labeled as I2C pins they're configured here
i2c:
  sda: 15
  scl: 13
  scan: true

I had to create folder inside Downloads:

cd C:\Users\johnny\Downloads
mkdir esphome
cd esphome
mkdir .esphome
mkdir .esphome\build
mkdir .esphome\build\gl-s10-bt-proxy
mkdir .esphome\storage
type nul > .gitignore
echo {} > .esphome\storage\s10.yaml.json

My network could not resolve gl-s10-bt-proxy.local

.........
Scanning dependencies...
No dependencies
Building in release mode
Retrieving maximum program size .pioenvs\gl-s10-bt-proxy\firmware.elf
Checking size .pioenvs\gl-s10-bt-proxy\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [=         ]  12.9% (used 42188 bytes from 327680 bytes)
Flash: [=====     ]  54.3% (used 995509 bytes from 1835008 bytes)
============================================= [SUCCESS] Took 21.17 seconds =============================================
INFO Successfully compiled program.
INFO Resolving IP address of gl-s10-bt-proxy.local in mDNS
INFO Resolving IP address of gl-s10-bt-proxy.local
ERROR Error resolving IP address of gl-s10-bt-proxy.local. Is it connected to WiFi?
ERROR (If this error persists, please set a static IP address: https://esphome.io/components/wifi.html#manual-ips)
ERROR Error resolving IP address: Error resolving address with mDNS: Did not respond. Maybe the device is offline., [Errno 11001] getaddrinfo failed


C:\Users\johnny\Downloads\esphome>ping gl-s10-bt-proxy.local
Ping request could not find host gl-s10-bt-proxy.local. Please check the name and try again.

C:\Users\johnny\Downloads\esphome>

So I had to add Local DNS entrie into AdGuard:

After that I was able to ping:

C:\Users\johnny\Downloads\esphome>ping gl-s10-bt-proxy.local

Pinging gl-s10-bt-proxy.local [192.168.1.243] with 32 bytes of data:
Reply from 192.168.1.243: bytes=32 time=7ms TTL=64
Reply from 192.168.1.243: bytes=32 time=2ms TTL=64
Reply from 192.168.1.243: bytes=32 time=4ms TTL=64
Reply from 192.168.1.243: bytes=32 time=2ms TTL=64

Ping statistics for 192.168.1.243:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 2ms, Maximum = 7ms, Average = 3ms

C:\Users\johnny\Downloads\esphome>

After that, running the update command finally completed without errors.

C:\Users\johnny\Downloads\esphome>esphome run s10.yaml

......................
Scanning dependencies...
No dependencies
Building in release mode
Retrieving maximum program size .pioenvs\gl-s10-bt-proxy\firmware.elf
Checking size .pioenvs\gl-s10-bt-proxy\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [=         ]  12.9% (used 42188 bytes from 327680 bytes)
Flash: [=====     ]  54.3% (used 995509 bytes from 1835008 bytes)
============================================= [SUCCESS] Took 7.99 seconds =============================================
INFO Successfully compiled program.
INFO Resolving IP address of gl-s10-bt-proxy.local in mDNS
INFO Resolving IP address of gl-s10-bt-proxy.local
INFO Connecting to :: port 3232...
ERROR Connecting to :: port 3232 failed: [WinError 10049] The requested address is not valid in its context
INFO Connecting to 192.168.1.243 port 3232...
INFO Connected to 192.168.1.243
INFO Uploading C:\Users\johnny\Downloads\esphome\.esphome\build\gl-s10-bt-proxy\.pioenvs\gl-s10-bt-proxy\firmware.bin (1002080 bytes)
Uploading: [============================================================] 100% Done...

INFO Upload took 3.59 seconds, waiting for result...
INFO OTA successful
INFO Successfully uploaded program.
INFO Starting log output from gl-s10-bt-proxy.local using esphome API
INFO Successfully connected to gl-s10-bt-proxy @ 192.168.1.243 in 7.043s
INFO Successful handshake with gl-s10-bt-proxy-6803dc @ 192.168.1.243 in 0.019s
[18:07:50][I][app:100]: ESPHome version 2025.2.2 compiled on Mar 13 2025, 17:45:09
[18:07:50][I][app:102]: Project gl-s10.bluetooth-proxy version 2.1
[18:07:50][C][status_led:019]: Status LED:
[18:07:50][C][status_led:020]:   Pin: GPIO32
[18:07:50][C][logger:177]: Logger:
[18:07:50][C][logger:178]:   Max Level: DEBUG
[18:07:50][C][logger:179]:   Initial Level: DEBUG
[18:07:50][C][logger:181]:   Log Baud Rate: 115200
[18:07:50][C][logger:182]:   Hardware UART: UART0
[18:07:50][C][i2c.idf:079]: I2C Bus:
[18:07:50][C][i2c.idf:080]:   SDA Pin: GPIO15
...............

Also, S-10 was connected via ethernet to my POE switch during the OTA update and thanks to @clydebarrow reply I learned that OTA updates are possible :slight_smile: