GL-S10 OTA Failure, even with safe boot
Without Safe Boot:
[1B][0;36m[D][ota:143]: Starting OTA Update from ::FFFF:C0A8:475...[1B][0m
[1B][0;36m[D][esp32_ble_tracker:173]: Stopping scan.[1B][0m
[1B][0;37m[V][ota:174]: OTA features is 0x01[1B][0m
[1B][0;37m[V][ota:257]: OTA size is 1507872 bytes[1B][0m
[D][Updater.cpp:132] begin(): OTA Partition: app1
[1B][0;37m[V][ota:274]: Update: Binary MD5 is 18ab0e86e0f7b15de30cafd466cb3f03[1B][0m
[1B][0;36m[D][ota:312]: OTA in progress: 0.1%[1B][0m
E (59533) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
E (59533) task_wdt: - loopTask (CPU 1)
E (59533) task_wdt: Tasks currently running:
E (59533) task_wdt: CPU 0: IDLE0
E (59533) task_wdt: CPU 1: IDLE1
E (59533) task_wdt: Aborting.
abort() was called at PC 0x401b779c on core 0
With Safe Boot:
[1B][0;36m[D][button:013]: 'Safe Mode Boot' Pressed.[1B][0m
[1B][0;32m[I][safe_mode.button:014]: Restarting device in safe mode...[1B][0m
[1B][0;32m[I][ota:439]: Device will enter safe mode on next boot.[1B][0m
[1B][0;36m[D][esp32.preferences:113]: Saving 1 preferences to flash...[1B][0m
[1B][0;37m[V][esp32.preferences:125]: sync: key: 233825507, len: 4[1B][0m
[1B][0;36m[D][esp32.preferences:142]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed[1B][0m
[1B][0;32m[I][app:134]: Rebooting safely...[1B][0m
[1B][0;37m[V][api.connection:986]: Cannot send message because of TCP buffer space[1B][0m
ets Jun 8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8
[1B][0;32m[I][logger:243]: Log initialized[1B][0m
[1B][0;35m[C][status_led:014]: Setting up Status LED...[1B][0m
[1B][0;32m[I][ota:463]: Safe mode has been entered manually[1B][0m
[1B][0;36m[D][esp32.preferences:113]: Saving 1 preferences to flash...[1B][0m
[1B][0;37m[V][esp32.preferences:125]: sync: key: 233825507, len: 4[1B][0m
[1B][0;36m[D][esp32.preferences:142]: Saving 1 preferences to flash: 0 cached, 1 written, 0 failed[1B][0m
[1B][0;32m[I][app:029]: Running through setup()...[1B][0m
[1B][0;37m[V][app:030]: Sorting components by setup priority...[1B][0m
[1B][0;35m[C][ethernet:039]: Setting up Ethernet...[1B][0m
[D][WiFiGeneric.cpp:374] _eventCallback(): Event: 21 - ETH_START
[1B][0;37m[V][ethernet:192]: [Ethernet event] ETH started (num=21)[1B][0m
[1B][0;32m[I][ethernet:092]: Starting ethernet connection[1B][0m
[D][WiFiGeneric.cpp:374] _eventCallback(): Event: 23 - ETH_CONNECTED
[1B][0;37m[V][ethernet:192]: [Ethernet event] ETH connected (num=23)[1B][0m
[D][WiFiGeneric.cpp:374] _eventCallback(): Event: 25 - ETH_GOT_IP
[D][WiFiGeneric.cpp:455] _eventCallback(): ETH IP: 192.168.4.231, MASK: 255.255.255.0, GW: 192.168.4.1
[1B][0;37m[V][ethernet:192]: [Ethernet event] ETH Got IP (num=25)[1B][0m
[1B][0;32m[I][ethernet:103]: Connected via Ethernet![1B][0m
[1B][0;35m[C][ethernet:264]: IP Address: 192.168.4.231[1B][0m
[1B][0;35m[C][ethernet:265]: Hostname: 'gl-s10-bt-proxy-d62580'[1B][0m
[1B][0;35m[C][ethernet:266]: Subnet: 255.255.255.0[1B][0m
[1B][0;35m[C][ethernet:267]: Gateway: 192.168.4.1[1B][0m
[1B][0;35m[C][ethernet:278]: DNS1: 206.225.75.225[1B][0m
[1B][0;35m[C][ethernet:279]: DNS2: 206.225.75.226[1B][0m
[1B][0;35m[C][ethernet:282]: MAC Address: 70:B8:F6:D6:25:83[1B][0m
[1B][0;35m[C][ethernet:283]: Is Full Duplex: YES[1B][0m
[1B][0;35m[C][ethernet:284]: Link Up: YES[1B][0m
[1B][0;35m[C][ethernet:285]: Link Speed: 100[1B][0m
[1B][0;35m[C][ota:089]: Over-The-Air Updates:[1B][0m
[1B][0;35m[C][ota:090]: Address: gl-s10-bt-proxy-d62580.local:3232[1B][0m
[1B][0;32m[I][app:062]: setup() finished successfully![1B][0m
[1B][0;32m[I][ota:484]: Waiting for OTA attempt.[1B][0m
[1B][0;32m[I][app:102]: ESPHome version 2022.9.4 compiled on Oct 7 2022, 22:29:48[1B][0m
[1B][0;32m[I][app:104]: Project esphome.bluetooth-proxy version 1.0[1B][0m
[1B][0;35m[C][status_led:019]: Status LED:[1B][0m
[1B][0;35m[C][status_led:020]: Pin: GPIO32[1B][0m
[1B][0;35m[C][logger:275]: Logger:[1B][0m
[1B][0;35m[C][logger:276]: Level: VERBOSE[1B][0m
[1B][0;35m[C][logger:277]: Log Baud Rate: 115200[1B][0m
[1B][0;35m[C][logger:278]: Hardware UART: UART0[1B][0m
[1B][0;35m[C][ethernet:146]: Ethernet:[1B][0m
[1B][0;35m[C][ethernet:264]: IP Address: 192.168.4.231[1B][0m
[1B][0;35m[C][ethernet:265]: Hostname: 'gl-s10-bt-proxy-d62580'[1B][0m
[1B][0;35m[C][ethernet:266]: Subnet: 255.255.255.0[1B][0m
[1B][0;35m[C][ethernet:267]: Gateway: 192.168.4.1[1B][0m
[1B][0;35m[C][ethernet:278]: DNS1: 206.225.75.225[1B][0m
[1B][0;35m[C][ethernet:279]: DNS2: 206.225.75.226[1B][0m
[1B][0;35m[C][ethernet:282]: MAC Address: 70:B8:F6:D6:25:83[1B][0m
[1B][0;35m[C][ethernet:283]: Is Full Duplex: YES[1B][0m
[1B][0;35m[C][ethernet:284]: Link Up: YES[1B][0m
[1B][0;35m[C][ethernet:285]: Link Speed: 100[1B][0m
[1B][0;35m[C][ethernet:148]: Power Pin: GPIO5[1B][0m
[1B][0;35m[C][ethernet:149]: MDC Pin: 23[1B][0m
[1B][0;35m[C][ethernet:150]: MDIO Pin: 18[1B][0m
[1B][0;35m[C][ethernet:151]: Type: IP101[1B][0m
[1B][0;35m[C][mdns:100]: mDNS:[1B][0m
[1B][0;35m[C][mdns:101]: Hostname: gl-s10-bt-proxy-d62580[1B][0m
[1B][0;37m[V][mdns:102]: Services:[1B][0m
[1B][0;37m[V][mdns:104]: - _http, _tcp, 80[1B][0m
[1B][0;37m[V][mdns:106]: TXT: version = 2022.9.4[1B][0m
[1B][0;35m[C][ota:089]: Over-The-Air Updates:[1B][0m
[1B][0;35m[C][ota:090]: Address: gl-s10-bt-proxy-d62580.local:3232[1B][0m
[1B][0;36m[D][ota:143]: Starting OTA Update from ::FFFF:C0A8:475...[1B][0m
[1B][0;37m[V][ota:174]: OTA features is 0x01[1B][0m
[1B][0;37m[V][ota:257]: OTA size is 1507872 bytes[1B][0m
[D][Updater.cpp:132] begin(): OTA Partition: app1
[1B][0;37m[V][ota:274]: Update: Binary MD5 is 67d609bb4710a5e6307520ef3fde478c[1B][0m
[1B][0;36m[D][ota:312]: OTA in progress: 0.1%[1B][0m
[1B][0;36m[D][ota:312]: OTA in progress: 0.6%[1B][0m
[1B][0;36m[D][ota:312]: OTA in progress: 1.0%[1B][0m
[1B][0;36m[D][ota:312]: OTA in progress: 1.3%[1B][0m
E (72321) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
E (72321) task_wdt: - loopTask (CPU 1)
E (72321) task_wdt: Tasks currently running:
E (72321) task_wdt: CPU 0: IDLE0
E (72321) task_wdt: CPU 1: IDLE1
E (72321) task_wdt: Aborting.
abort() was called at PC 0x401b779c on core 0
ELF file SHA256: 0000000000000000
Backtrace: 0x4008f94c:0x3ffbfed0 0x4008fbc9:0x3ffbfef0 0x401b779c:0x3ffbff10 0x4008de85:0x3ffbff30 0x401e3bf7:0x3ffbc100 0x401b9177:0x3ffbc120 0x400923ed:0x3ffbc140 0x40090c3e:0x3ffbc160
Rebooting...
I have been testing this today and it seems like the client is sending 50% of the OTA firmware very quickly and the device cannot keep up and eventually times out the watchdog when it gets stuck. No solution as of yet but this issue should be moved to the main ESPHome issue tracker.
The only difference I can think of so far compared to other boards I have is the ethernet driver
Thanks for the confirmation and move!
Following on from https://github.com/esphome/bluetooth-proxies/issues/39, even if safe boot is used, I cannot update the GL-S10 using OTA.
I have a revision 2.1 board. I have flashed the initial firmware using the webflash tool and now trying to adopt the device into ESPHome and do the initial OTA. The process will not get beyond single-digit percentage without timing out.
Steps to reproduce: Flash with intitial binary Attempt to adopt into ESPHome OTA times out Repeat using the safe boot button in HA OTA times out
INFO Uploading /data/gl-s10-bt-proxy-9ad9b0/.pioenvs/gl-s10-bt-proxy-9ad9b0/firmware.bin (1493552 bytes) Uploading: [=== ] 5% ERROR Error sending data: timed out
I've seen OTA fail on other ESPHome projects due to the flash size being too high to allow the OTA binary - do these stats look ok in that respect;
RAM: [== ] 16.7% (used 54592 bytes from 327680 bytes) Flash: [======== ] 81.4% (used 1493450 bytes from 1835008 bytes)
To add another data point, OTA is incredibly flakey for me as well, but will eventually succeed after numerous retries. The device won't hold a stable API connection to HA though with frequent drops.
https://github.com/esphome/issues/issues/3690
If you would ping the device, you could see the issue. I very sure that the new IDF/Arduino framework version would fix it
Because I'm incredibly lazy and don't want to get the device back out for a reflash, I've just been pounding the OTA with a loop until it seems to work:
from esphome import espota2
while True:
out = espota2.run_ota('192.168.4.111', 3232, '', 'gl-s10-bt-proxy-111111.bin')
if out == 1:
continue
else:
break
Hope this helps someone else. Latest versions of ESPHome seem to be more stable so the upgrade is worth it, but I just didn't want to mess with the hardware again.
Interestingly enough manually setting my switch port that was connected to the device to 10Mb rather than 100Mb autoneg. allowed me to OTA with no issue.
The device is also causing CRC errors on the switch. Ive tried different cables and it does not change anything.
Interestingly enough manually setting my switch port that was connected to the device to 10Mb rather than 100Mb autoneg. allowed me to OTA with no issue.
The device is also causing CRC errors on the switch. Ive tried different cables and it does not change anything.
Same, after setting 10FDX manually, OTA worked on first attempt.
The device is also causing CRC errors on the switch. Ive tried different cables and it does not change anything.
Yeah I had to actually disable RSTP on my UniFi switch port to which my GL-S10 was connected or it would block the port thinking it was looping.
I also cannot OTA, and it seems to reboot itself every 15 seconds or so. Not sure if Bluetooth or Ethernet related, but I do have a lot of advertisements nearby so the LED flashes very rapidly.
Hardware revision v2.1
I had a bit of mess about a couple of weeks ago and have had my 2.1 revision device running fine since (OTA and availability) by:
- using the latest ESP-IDF framework (compile from https://github.com/trvrnrth/esphome/tree/gls10, set framework to
esp-idf) - disabling the LED blink on advertisement (comment out
on_ble_advertiseautomation) - using the default
esp32_ble_trackerscan parameters (comment outintervalandwindow)
I've not spent any time since digging into exactly what impact each of those changes has individually but hopefully this information can help the overall investigation/resolution.
Thanks for the update @trvrnrth. Can you share a bit information how we can compile from your Github? Can we use external_components for that? Or should we use source under the framework?
Having similar trouble. Tried setting 10FDX manually.... Haven't tried the compiled version above, but with defaults getting massive packet loss, connection drops, etc.
@trvrnrth Can you post your yaml?
@gerard33 I'm guessing you're using the home assistant add-on. If you install the dev version you should be able to specify an esphome_fork of trvrnrth:gls10 but I've never actually tried as I just compile locally for dev testing.
@efaden The only changes are as I describe but here you go.
@gerard33 I'm guessing you're using the home assistant add-on. If you install the dev version you should be able to specify an
esphome_forkoftrvrnrth:gls10but I've never actually tried as I just compile locally for dev testing.@efaden The only changes are as I describe but here you go.
Thanks. Is there a way to specify the fork on only the few devices? Can you change the fork in the yaml? Can't seem to find a way.
@trvrnrth I indeed use the HA add-on. I have installed the dev version and specified your fork. I got an error during compiling, so I forked the latest dev branch from esphome github and made your changes there. Then compiling went okay.
When changing the framework to esp-idf in the yaml code however I get an error that the ethernet feature is only available for Arduino. How did you handle this?
Screenshot

@trvrnrth Upgraded to what you suggested.... seems to hold connection with HA better, but still getting tons of loss if I ping it. And it also won't OTA. Gets part way and fails.
@gerard33 The dev branch in your fork does not appear to include all the changes in the branch I tested with. At a glance you seem to have only pulled in a single commit to bump versions.
Thanks, I will have a look at your other commits and update my branch accordingly.
Update: I missed the Enable ethernet for esp-idf commit indeed 😏
After adding that the yaml is valid and I will update it now.
Mine is still barely reliable. Getting the bluetooth data, but can't get OTA or ping stability or anything.
Was having exactly the same proble, ping packet loss about 20-25% and unable to flash OTA. I followed a tip in this thread and set the switchport fixed to 10/full. This extremely reduces packet loss (now 1-2%) and I able to do an OTA flash. So I would guess there is something with the ethernet driver ?
This device is referred to as "The Best Home Assistant Bluetooth Proxy" ! How can that be, when everyone seems to have nothing but trouble to get it working?
Isn't there a single success story out there?
I'm with you there.... I have mine out of service until there is a fix
On Tue, Dec 6, 2022, 16:02 oywino @.***> wrote:
This device is referred to as "The Best Home Assistant Bluetooth Proxy" ! How can that be, when everyone seems to have nothing but trouble to get it working?
Isn't there a single success story out there?
— Reply to this email directly, view it on GitHub https://github.com/esphome/issues/issues/3682#issuecomment-1340000720, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADAEABBHVY3RROD7GI5ASLDWL6SUXANCNFSM6AAAAAARC4C77Y . You are receiving this because you were mentioned.Message ID: @.***>
Just to shift the odds. Mine has been working like a charm ever since i set speed and duplex to fixed as suggested earlier on in the comments.
Looking for success stories on an issue tracker sounds very counterproductive.
Just to shift the odds. Mine has been working like a charm ever since i set speed and duplex to fixed as suggested earlier on in the comments.
Looking for success stories on an issue tracker sounds very counterproductive.
Likewise, I've set the port on my UniFi switch to 10 meg and it's been solid since.
Powering with Poe or USB?
On Wed, Dec 7, 2022, 09:14 DJBenson @.***> wrote:
Just to shift the odds. Mine has been working like a charm ever since i set speed and duplex to fixed as suggested earlier on in the comments.
Looking for success stories on an issue tracker sounds very counterproductive.
Likewise, I've set the port on my UniFi switch to 10 meg and it's been solid since.
— Reply to this email directly, view it on GitHub https://github.com/esphome/issues/issues/3682#issuecomment-1341029913, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADAEABDGVUHNEJ2ET3MHVGTWMCLVNANCNFSM6AAAAAARC4C77Y . You are receiving this because you were mentioned.Message ID: @.***>
PoE
Interesting. I'll try that again. But didn't seem to change anything.
10 full or half duplex?
On Wed, Dec 7, 2022, 09:29 DJBenson @.***> wrote:
PoE
— Reply to this email directly, view it on GitHub https://github.com/esphome/issues/issues/3682#issuecomment-1341048830, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADAEABCR2OTZWZMI7SCWCBLWMCNLBANCNFSM6AAAAAARC4C77Y . You are receiving this because you were mentioned.Message ID: @.***>

Alright.... I'll try that again.
On Wed, Dec 7, 2022, 09:38 DJBenson @.***> wrote:
[image: image] https://user-images.githubusercontent.com/1013909/206207775-62eaf929-daca-4ca1-82c5-c1cbb7f77221.png
— Reply to this email directly, view it on GitHub https://github.com/esphome/issues/issues/3682#issuecomment-1341062510, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADAEABAVVKLHLRW7BT4MP6TWMCOPJANCNFSM6AAAAAARC4C77Y . You are receiving this because you were mentioned.Message ID: @.***>