firmware icon indicating copy to clipboard operation
firmware copied to clipboard

Bluetooth Proxy Ready-Made Project aborting

Open izenn opened this issue 1 year ago • 8 comments

using the web interface i uploaded the bluetooth-proxy to my device and it goes into a boot/abort loop. I've used this device and cable before for this project, i was going to update it to the current version before i put it back in service. I've also downloaded the YAML and compiled/uploaded it with esphome on the cli via serial as well as the esphome dashboard as an OTA update and got the same results

hardware is an esp32 d1 mini

[14:06:14]E (11474) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
[14:06:14]E (11474) task_wdt:  - loopTask (CPU 1)
[14:06:14]E (11474) task_wdt: Tasks currently running:
[14:06:14]E (11474) task_wdt: CPU 0: IDLE0
[14:06:14]E (11474) task_wdt: CPU 1: IDLE1
[14:06:14]E (11474) task_wdt: Aborting.
[14:06:14]
[14:06:14]abort() was called at PC 0x401372c4 on core 0
[14:06:14]
[14:06:14]
[14:06:14]Backtrace: 0x40082bfa:0x3ffbe3f0 0x40091ec9:0x3ffbe410 0x40097ed6:0x3ffbe430 0x401372c4:0x3ffbe4a0 0x400835f5:0x3ffbe4c0 0x401c644b:0x3ffbc780 0x40137a15:0x3ffbc7a0 0x400932a0:0x3ffbc7c0
WARNING Found stack trace! Trying to decode it
WARNING Decoded 0x40082bfa: panic_abort at /Users/adam/.platformio/packages/framework-espidf/components/esp_system/panic.c:408
WARNING Decoded 0x40091ec9: esp_system_abort at /Users/adam/.platformio/packages/framework-espidf/components/esp_system/esp_system.c:137
WARNING Decoded 0x40097ed6: abort at /Users/adam/.platformio/packages/framework-espidf/components/newlib/abort.c:46
WARNING Decoded 0x401372c4: task_wdt_isr at /Users/adam/.platformio/packages/framework-espidf/components/esp_system/task_wdt.c:176 (discriminator 3)
WARNING Decoded 0x400835f5: _xt_lowint1 at /Users/adam/.platformio/packages/framework-espidf/components/freertos/port/xtensa/xtensa_vectors.S:1118
WARNING Decoded 0x401c644b: cpu_ll_waiti at /Users/adam/.platformio/packages/framework-espidf/components/hal/esp32/include/hal/cpu_ll.h:183
 (inlined by) esp_pm_impl_waiti at /Users/adam/.platformio/packages/framework-espidf/components/esp_pm/pm_impl.c:853
WARNING Decoded 0x40137a15: esp_vApplicationIdleHook at /Users/adam/.platformio/packages/framework-espidf/components/esp_system/freertos_hooks.c:63
WARNING Decoded 0x400932a0: prvIdleTask at /Users/adam/.platformio/packages/framework-espidf/components/freertos/tasks.c:4099

yaml:

substitutions:
  name: esp32-bluetooth-proxy
  friendly_name: Bluetooth Proxy

esphome:
  name: ${name}
  friendly_name: ${friendly_name}
  min_version: 2024.6.0
  name_add_mac_suffix: false
  project:
    name: esphome.bluetooth-proxy
    version: "24.7.4.1"

esp32:
  board: esp32dev
  framework:
    type: esp-idf

wifi:
  ssid: Internal
  password: "password"

api:
  encryption:
    key: key

logger:
improv_serial:

ota:
  - platform: esphome
    id: ota_esphome
  - platform: http_request
    id: ota_http_request

update:
  - platform: http_request
    id: update_http_request
    name: Firmware
    source: https://firmware.esphome.io/bluetooth-proxy/esp32-generic/manifest.json

http_request:

dashboard_import:
  package_import_url: github://esphome/firmware/bluetooth-proxy/esp32-generic.yaml@main

esp32_ble_tracker:
  scan_parameters:
    # We currently use the defaults to ensure Bluetooth
    # can co-exist with WiFi In the future we may be able to
    # enable the built-in coexistence logic in ESP-IDF
    active: true

bluetooth_proxy:
  active: true

button:
  - platform: safe_mode
    id: button_safe_mode
    name: Safe Mode Boot

  - platform: factory_reset
    id: factory_reset_btn
    name: Factory reset

izenn avatar Jul 06 '24 19:07 izenn

I'm experiencing the same issue with the Voice Assistant project after updating to the latest version containing this PR. Not sure if it's important but my IoT VLAN has no access to Internet...

tomasdeml avatar Jul 07 '24 14:07 tomasdeml

i just stripped the http OTA stuff out of the yaml and it is working now. Here's my yaml:

substitutions:
  name: esp32-bluetooth-proxy
  friendly_name: Bluetooth Proxy

esphome:
  name: ${name}
  friendly_name: ${friendly_name}
  min_version: 2024.6.0
  name_add_mac_suffix: false
  project:
    name: esphome.bluetooth-proxy
    version: "24.7.4.1"

esp32:
  board: esp32dev
  framework:
    type: esp-idf

wifi:
  ssid: Internal
  password: "password"

api:
  encryption:
    key: key

logger:
improv_serial:

ota:
  - platform: esphome
    id: ota_esphome

dashboard_import:
  package_import_url: github://esphome/firmware/bluetooth-proxy/esp32-generic.yaml@main
  import_full_config: false

esp32_ble_tracker:
  scan_parameters:
    # We currently use the defaults to ensure Bluetooth
    # can co-exist with WiFi In the future we may be able to
    # enable the built-in coexistence logic in ESP-IDF
    active: true

bluetooth_proxy:
  active: true

button:
  - platform: safe_mode
    id: button_safe_mode
    name: Safe Mode Boot

  - platform: factory_reset
    id: factory_reset_btn
    name: Factory reset

izenn avatar Jul 07 '24 14:07 izenn

just as a note -- i use this to do the initial flash, but then when i add to the esphome web interface rather than clicking install, i click skip then copy/paste the yaml into the config so that future updates will use the correct settings (but there's probably a better way to do that)

izenn avatar Jul 07 '24 20:07 izenn

When validate it, it says:

Component ota.http_request requires component http_request.
No quick fixes available

screenshot: image

Maybe this has to do with the new way of listing in one of the latest updates, but this time I can't get it right.

This format seems to be validated OK, but don't know it that is right!?

ota:
- platform: esphome
  id: ota_esphome
  password: ba5214c7c802ea8c5ad44ffdieldoddodn
    - platform: http_request
      id: ota_http_request

Floriszz avatar Jul 16 '24 19:07 Floriszz

remove

    - platform: http_request
      id: ota_http_request

also, you're going to want to change your password since you just posted it publically

izenn avatar Jul 16 '24 19:07 izenn

Hi @izenn, does http_request not have a function for the 'Update:' part? Or is that the mistake that it is actually copied double while it is already in the 'update:' part? btw. I already changed last characters in the password to show it here. But thank you for the tip😉

After delete those lines, I get this:

`Failed config

update.http_request: [source C:\temp\ESP\esphome-web-75a2f0.yaml-v2.yml:36]

  Component update.http_request requires 'platform: http_request' in component 'ota'.
  platform: http_request
  id: update_http_request
  name: Firmware
  source: https://firmware.esphome.io/bluetooth-proxy/esp32-generic/manifest.json

Floriszz avatar Jul 16 '24 19:07 Floriszz

Ok, found the right format! Indeed it has to do with the new 'list requirements' in yaml for esphome, which is more stringent with nesting/indends. Since 'Update:' is reliant on 'ota:' you should not have a different list indent.

ota:
- platform: esphome
  id: ota_esphome
  password: ba5214c7c802ea8c5ad44ff374dcf362
- platform: http_request
  id: ota_http_request

update:
  - platform: http_request
    id: update_http_request
    name: Firmware Update
    source: https://firmware.esphome.io/bluetooth-proxy/esp32-generic/manifest.json

Floriszz avatar Jul 16 '24 20:07 Floriszz

what it seems is that if you try to deploy on a device that does not have internet access but does have network access it will abort. if the device has full internet access then the ota/http_request portion is fine to be in there since it is able to hit the source url (and therefore not timing out) and the system will not go into the abort loop

izenn avatar Jul 16 '24 20:07 izenn

I also get this message, even trying @Floriszz exact code and formatting...

Component ota.http_request requires component http_request. platform: http_request id: ota_http_request

ota:
- platform: esphome
  id: ota_esphome
  password: xxxxx
- platform: http_request
  id: ota_http_request

update:
  - platform: http_request
    id: update_http_request
    name: Firmware Update
    source: https://firmware.esphome.io/bluetooth-proxy/esp32-generic/manifest.json

button:
  - platform: template
  #copy all firmware files to /config/www
    name: "Update Firmware"
    id: firmware_update_button
    on_press:
          then:
            - lambda: |-
                id(firmware_update_flag) = true; 
                id(status_msg).publish_state("Firmware Update Started");
                id(firmware_update_button).publish_state("Firmware Update Started");
            - ota.http_request.flash:
                md5_url: http://192.168.1.250/cst_new.md5
                url: http://192.168.1.250/cst_new.ota.bin

Has anyone cracked this?

jazzmonger avatar Feb 02 '25 18:02 jazzmonger

If you are taking control and writing and compiling your own configurations, you should not have the http_request/update components in there as that means if there is an update it will override your locally compiled firmware.

The take control process for the latest bluetooth-proxies configurations has this sorted and does not include any http_request code if you choose to take control.

jesserockz avatar Apr 17 '25 05:04 jesserockz