Open huuub opened 1 month ago
Same here, the unit enters a reboot loop. It seems to give up after a while and set up a local AP instead.
[C][wifi:038]: Setting up WiFi...
[D][esp-idf:000]: I (374) wifi:
[D][esp-idf:000]: wifi driver task: 3ffd9650, prio:23, stack:6656, core=0
[D][esp-idf:000]:
[D][esp-idf:000][wifi]: I (1605) system_api: Base MAC address is not set
[D][esp-idf:000][wifi]: I (1615) system_api: read default base MAC address from EFUSE
[D][esp-idf:000][wifi]: I (1628) wifi:
[D][esp-idf:000][wifi]: wifi firmware version: 1fd20f4
[D][esp-idf:000][wifi]:
[D][esp-idf:000][wifi]: I (1645) wifi:
[D][esp-idf:000][wifi]: wifi certification version: v7.0
[D][esp-idf:000][wifi]:
[D][esp-idf:000][wifi]: I (1656) wifi:
[D][esp-idf:000][wifi]: config NVS flash: enabled
[D][esp-idf:000][wifi]:
[D][esp-idf:000][wifi]: I (1676) wifi:
[D][esp-idf:000][wifi]: config nano formating: disabled
[D][esp-idf:000][wifi]:
[D][esp-idf:000][wifi]: I (1687) wifi:
[D][esp-idf:000][wifi]: Init data frame dynamic rx buffer num: 32
[D][esp-idf:000][wifi]:
[D][esp-idf:000][wifi]: I (1707) wifi:
[D][esp-idf:000][wifi]: Init static rx mgmt buffer num: 5
[D][esp-idf:000][wifi]:
[D][esp-idf:000][wifi]: I (1727) wifi:
[D][esp-idf:000][wifi]: Init management short buffer num: 32
[D][esp-idf:000][wifi]:
[D][esp-idf:000][wifi]: I (1738) wifi:
[D][esp-idf:000][wifi]: Init dynamic tx buffer num: 32
[D][esp-idf:000][wifi]:
[D][esp-idf:000][wifi]: I (1758) wifi:
[D][esp-idf:000][wifi]: Init static rx buffer size: 1600
[D][esp-idf:000][wifi]:
[D][esp-idf:000][wifi]: I (1779) wifi:
[D][esp-idf:000][wifi]: Init static rx buffer num: 10
[D][esp-idf:000][wifi]:
[D][esp-idf:000][wifi]: I (1799) wifi:
[D][esp-idf:000][wifi]: Init dynamic rx buffer num: 32
[D][esp-idf:000][wifi]:
[D][esp-idf:000]: I (1810) wifi_init: rx ba win: 6
[D][esp-idf:000]: I (1820) wifi_init: tcpip mbox: 32
[D][esp-idf:000]: I (1830) wifi_init: udp mbox: 6
[D][esp-idf:000]: I (1830) wifi_init: tcp mbox: 6
[D][esp-idf:000]: I (1840) wifi_init: tcp tx win: 5760
[D][esp-idf:000]: I (1840) wifi_init: tcp rx win: 5760
[D][esp-idf:000]: I (1850) wifi_init: tcp mss: 1440
[D][esp-idf:000]: I (1861) wifi_init: WiFi IRAM OP enabled
[D][esp-idf:000]: I (1861) wifi_init: WiFi RX IRAM OP enabled
[C][wifi:051]: Starting WiFi...
[C][wifi:052]: Local MAC: 64:B7:08:A0:78:98
[D][esp-idf:000][wifi]: I (1883) phy_init: phy_version 4791,2c4672b,Dec 20 2023,16:06:06
[D][esp-idf:000][wifi]: I (1966) wifi:
[D][esp-idf:000][wifi]: mode : softAP (64:b7:08:a0:78:99)
[D][esp-idf:000][wifi]:
[D][esp-idf:000][wifi]: I (1968) wifi:
[D][esp-idf:000][wifi]: Total power save buffer number: 16
[D][esp-idf:000][wifi]:
[D][esp-idf:000][wifi]: I (1972) wifi:
[D][esp-idf:000][wifi]: Init max length of beacon: 752/752
[D][esp-idf:000][wifi]:
[D][esp-idf:000][wifi]: I (1992) wifi:
[D][esp-idf:000][wifi]: Init max length of beacon: 752/752
[D][esp-idf:000][wifi]:
[C][wifi:253]: Setting up AP...
[C][wifi:255]: AP SSID: 'm5stack-atom-echo-a07898'
[C][wifi:256]: AP Password: ''
[D][esp-idf:000][wifi]: I (2025) wifi:
[D][esp-idf:000][wifi]: Total power save buffer number: 16
[D][esp-idf:000][wifi]:
[C][wifi:265]: IP Address: 192.168.4.1
[D][esp-idf:000][wifi]: I (2046) wifi:
[D][esp-idf:000][wifi]: mode : sta (64:b7:08:a0:78:98) + softAP (64:b7:08:a0:78:99)
[D][esp-idf:000][wifi]:
[D][esp-idf:000][wifi]: I (2064) wifi:
[D][esp-idf:000][wifi]: enable tsf
[D][esp-idf:000][wifi]:
I suspect this is related to the many reported issues with ESPHome 2024.5.x, since the unit gets installed with 2024.5.0:
I (739) cpu_start: Project name: m5stack-atom-echo
I (745) cpu_start: App version: 2024.5.0
I (750) cpu_start: Compile time: May 20 2024 05:18:45
the same occurs on Atom
I needed to pin esp-idf to v4.4.6. Then the microphone didn't work. I’m unsure what change fixed that but I think the revert to ESPHome 2024.4.x. I now have a working version with on-device hot word working, mic, Wi-Fi, everything working. See my repository
Flashed via web esp home on the first click on Configure Wi-Fi it might give an error but try again it always worked the second time for me.
the same occurs on Atom
I was going to reply the same thing. I tried to manually installed the YAML with ESPHome 2024.5.2 but it failed as well.
This may be fixed with the latest 2024.5.5 release. At least it is fixed for me after a month of trying workarounds.
Specifically https://github.com/esphome/esphome/pull/6855
Same problem with a new S3 Box 3 here, as told in 1st post.
After the first WiFi fail, I tried manual install, which ended up with the infamous "See what went wrong".
The following installation dump went on for a while and then the UI lost connection, because my HA host rebooted without further notice.
The second attempt also ended up with my machine rebooting. Scary!
I will not touch this thing again any time soon.
It is working on my esp32-s3-box3 with a manual IP address assignment. It wasn't working before.
I did clean build files before this. I'll grab my config file and post it here in a bit.
Meh. That S3 Box sitting on my desk was burning a hole in my eyes, so I installed it again with the prefab image provided HERE.
Instead of the promised WiFi dialog, I ended up with the box showing a sad red house and a "No WiFi" message
So I tried Improv Wi-Fi to set the WiFi credentials via BLE, and it worked.
Then I had a box showing a sad red house saying "HA not found", indicating that it shoudl be adpoted in HA.
Lo and behold: it actually showed up in HA ESPhome dashboard.
Unfortunately, adopting requires recompiling. I gave it another try, same result: my HA host rebooted.
The reason might be equipment/performance related, perhaps my ODroid is just to weak for this kind of work.
So I ended up installing Python and ESPHome on my Windows PC, which should be a lot more powerful than the little ODroid.
Didn't work either, just another obstacle...
Here's my ESP32-S3-BOX3 config that is working for voice assistant
---
substitutions:
name: esp32-s3-box-3
friendly_name: ESP32 S3 Box 3
loading_illustration_file: https://github.com/esphome/firmware/raw/main/voice-assistant/casita/loading_320_240.png
idle_illustration_file: https://github.com/esphome/firmware/raw/main/voice-assistant/casita/idle_320_240.png
listening_illustration_file: https://github.com/esphome/firmware/raw/main/voice-assistant/casita/listening_320_240.png
thinking_illustration_file: https://github.com/esphome/firmware/raw/main/voice-assistant/casita/thinking_320_240.png
replying_illustration_file: https://github.com/esphome/firmware/raw/main/voice-assistant/casita/replying_320_240.png
error_illustration_file: https://github.com/esphome/firmware/raw/main/voice-assistant/casita/error_320_240.png
micro_wake_word_model: hey_jarvis
loading_illustration_background_color: "000000"
idle_illustration_background_color: "000000"
listening_illustration_background_color: "FFFFFF"
thinking_illustration_background_color: "FFFFFF"
replying_illustration_background_color: "FFFFFF"
error_illustration_background_color: "000000"
voice_assist_idle_phase_id: "1"
voice_assist_listening_phase_id: "2"
voice_assist_thinking_phase_id: "3"
voice_assist_replying_phase_id: "4"
voice_assist_not_ready_phase_id: "10"
voice_assist_error_phase_id: "11"
voice_assist_muted_phase_id: "12"
# These unqiue characters have been extracted from every test file of every language available on https://github.com/home-assistant/intents (14 March 2024)
allowed_characters: " !#%'()+,-./0123456789:;<>?@ABCDEFGHIJKLMNOPQRSTUVWYZ[]_abcdefghijklmnopqrstuvwxyz{|}°²³µ¿ÁÂÄÅÉÖÚßàáâãäåæçèéêëìíîðñòóôõöøùúûüýþāăąćčďĐđēėęěğĮįıļľŁłńňőřśšťũūůűųźŻżŽžơưșțΆΈΌΐΑΒΓΔΕΖΗΘΚΜΝΠΡΣΤΥΦάέήίαβγδεζηθικλμνξοπρςστυφχψωϊόύώАБВГДЕЖЗИКЛМНОПРСТУХЦЧШЪЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяёђєіїјљњћאבגדהוזחטיכלםמןנסעפץצקרשת،ءآأإئابةتجحخدذرزسشصضطظعغفقكلمنهوىيٹپچڈکگںھہیےংকচতধনফবযরলশষস়ািু্చయలిెొ్ംഅആഇഈഉഎഓകഗങചജഞടഡണതദധനപഫബഭമയരറലളവശസഹാിീുൂെേൈ്ൺൻർൽൾაბგდევზთილმნოპრსტუფქყშჩცძჭხạảấầẩậắặẹẽếềểệỉịọỏốồổỗộớờởợụủứừửữựỳ—、一上不个中为主乾了些亮人任低佔何作供依侧係個側偵充光入全关冇冷几切到制前動區卧厅厨及口另右吊后吗启吸呀咗哪唔問啟嗎嘅嘛器圍在场執場外多大始安定客室家密寵对將小少左已帘常幫幾库度庫廊廚廳开式後恆感態成我戲戶户房所扇手打执把拔换掉控插摄整斯新明是景暗更最會有未本模機檯櫃欄次正氏水沒没洗活派温測源溫漏潮激濕灯為無煙照熱燈燥物狀玄现現瓦用發的盞目着睡私空窗立笛管節簾籬紅線红罐置聚聲脚腦腳臥色节著行衣解設調請謝警设调走路車车运連遊運過道邊部都量鎖锁門閂閉開關门闭除隱離電震霧面音頂題顏颜風风食餅餵가간감갔강개거게겨결경고공과관그금급기길깥꺼껐꼽나난내네놀누는능니다닫담대더데도동됐되된됨둡드든등디때떤뜨라래러렇렌려로료른를리림링마많명몇모무문물뭐바밝방배변보부불블빨뽑사산상색서설성세센션소쇼수스습시신실싱아안않알았애야어얼업없었에여연열옆오온완외왼요운움워원위으은을음의이인일임입있작잠장재전절정제져조족종주줄중줘지직진짐쪽차창천최추출충치침커컴켜켰쿠크키탁탄태탬터텔통트튼티파팬퍼폰표퓨플핑한함해했행혀현화활후휴힘,?"
esphome:
name: ${name}
friendly_name: ${friendly_name}
name_add_mac_suffix: true
platformio_options:
board_build.flash_mode: dio
project:
name: esphome.voice-assistant
version: "1.0"
min_version: 2023.11.5
on_boot:
priority: 600
then:
- script.execute: draw_display
- delay: 30s
- if:
condition:
lambda: return id(init_in_progress);
then:
- lambda: id(init_in_progress) = false;
- script.execute: draw_display
esp32:
board: esp32s3box
flash_size: 16MB
framework:
type: esp-idf
sdkconfig_options:
CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240: "y"
CONFIG_ESP32S3_DATA_CACHE_64KB: "y"
CONFIG_ESP32S3_DATA_CACHE_LINE_64B: "y"
CONFIG_AUDIO_BOARD_CUSTOM: "y"
CONFIG_ESP32_S3_BOX_3_BOARD: "y"
components:
- name: esp32_s3_box_3_board
source: github://jesserockz/esp32-s3-box-3-board@main
refresh: 0s
psram:
mode: octal
speed: 80MHz
external_components:
- source: github://pr#5230
components: esp_adf
refresh: 0s
api:
on_client_connected:
- script.execute: draw_display
on_client_disconnected:
- script.execute: draw_display
ota:
logger:
hardware_uart: USB_SERIAL_JTAG
dashboard_import:
package_import_url: github://esphome/firmware/voice-assistant/esp32-s3-box-3.yaml@main
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# ...
manual_ip:
# Set this to the IP of the ESP
static_ip: 10.0.42.38
# Set this to the IP address of the router. Often ends with .1
gateway: 10.0.42.1
# The subnet of the network. 255.255.255.0 works for most home networks.
subnet: 255.255.255.0
dns1: 10.0.42.1
dns2: 1.1.1.3
domain: !secret dns_suffix
ap:
on_connect:
- script.execute: draw_display
- delay: 10s # Gives time for improv results to be transmitted
- ble.disable:
on_disconnect:
- script.execute: draw_display
- ble.enable:
improv_serial:
esp32_improv:
authorizer: none
button:
- platform: factory_reset
id: factory_reset_btn
name: Factory reset
binary_sensor:
- platform: gpio
pin:
number: GPIO1
inverted: true
name: "Mute"
disabled_by_default: true
entity_category: diagnostic
- platform: gpio
pin:
number: GPIO0
mode: INPUT_PULLUP
inverted: true
name: Top Left Button
disabled_by_default: true
entity_category: diagnostic
on_multi_click:
- timing:
- ON for at least 10s
then:
- button.press: factory_reset_btn
output:
- platform: ledc
pin: GPIO47
id: backlight_output
light:
- platform: monochromatic
id: led
name: LCD Backlight
entity_category: config
output: backlight_output
restore_mode: RESTORE_DEFAULT_ON
default_transition_length: 250ms
esp_adf:
board: esp32s3box3
microphone:
- platform: esp_adf
id: box_mic
speaker:
- platform: esp_adf
id: box_speaker
voice_assistant:
id: va
microphone: box_mic
speaker: box_speaker
use_wake_word: true
noise_suppression_level: 2
auto_gain: 31dBFS
volume_multiplier: 2.0
vad_threshold: 3
on_listening:
- lambda: id(voice_assistant_phase) = ${voice_assist_listening_phase_id};
- text_sensor.template.publish:
id: text_request
state: "..."
- text_sensor.template.publish:
id: text_response
state: "..."
- script.execute: draw_display
on_stt_vad_end:
- lambda: id(voice_assistant_phase) = ${voice_assist_thinking_phase_id};
- script.execute: draw_display
on_stt_end:
- text_sensor.template.publish:
id: text_request
state: !lambda return x;
- script.execute: draw_display
on_tts_start:
- text_sensor.template.publish:
id: text_response
state: !lambda return x;
on_tts_stream_start:
- lambda: id(voice_assistant_phase) = ${voice_assist_replying_phase_id};
- script.execute: draw_display
on_tts_stream_end:
- lambda: id(voice_assistant_phase) = ${voice_assist_idle_phase_id};
- script.execute: draw_display
on_error:
- if:
condition:
lambda: return !id(init_in_progress);
then:
- lambda: id(voice_assistant_phase) = ${voice_assist_error_phase_id};
- script.execute: draw_display
- delay: 1s
- if:
condition:
switch.is_off: mute
then:
- lambda: id(voice_assistant_phase) = ${voice_assist_idle_phase_id};
else:
- lambda: id(voice_assistant_phase) = ${voice_assist_muted_phase_id};
- script.execute: draw_display
on_client_connected:
- if:
condition:
switch.is_off: mute
then:
- wait_until:
not: ble.enabled
- voice_assistant.start_continuous:
- lambda: id(voice_assistant_phase) = ${voice_assist_idle_phase_id};
else:
- lambda: id(voice_assistant_phase) = ${voice_assist_muted_phase_id};
- lambda: id(init_in_progress) = false;
- script.execute: draw_display
on_client_disconnected:
- lambda: id(voice_assistant_phase) = ${voice_assist_not_ready_phase_id};
- script.execute: draw_display
script:
- id: draw_display
then:
- if:
condition:
lambda: return !id(init_in_progress);
then:
- if:
condition:
wifi.connected:
then:
- if:
condition:
api.connected:
then:
- lambda: |
switch(id(voice_assistant_phase)) {
case ${voice_assist_listening_phase_id}:
id(s3_box_lcd).show_page(listening_page);
id(s3_box_lcd).update();
break;
case ${voice_assist_thinking_phase_id}:
id(s3_box_lcd).show_page(thinking_page);
id(s3_box_lcd).update();
break;
case ${voice_assist_replying_phase_id}:
id(s3_box_lcd).show_page(replying_page);
id(s3_box_lcd).update();
break;
case ${voice_assist_error_phase_id}:
id(s3_box_lcd).show_page(error_page);
id(s3_box_lcd).update();
break;
case ${voice_assist_muted_phase_id}:
id(s3_box_lcd).show_page(muted_page);
id(s3_box_lcd).update();
break;
case ${voice_assist_not_ready_phase_id}:
id(s3_box_lcd).show_page(no_ha_page);
id(s3_box_lcd).update();
break;
default:
id(s3_box_lcd).show_page(idle_page);
id(s3_box_lcd).update();
}
else:
- display.page.show: no_ha_page
- component.update: s3_box_lcd
else:
- display.page.show: no_wifi_page
- component.update: s3_box_lcd
else:
- display.page.show: initializing_page
- component.update: s3_box_lcd
switch:
- platform: template
name: Display conversation
id: display_conversation
optimistic: true
restore_mode: RESTORE_DEFAULT_ON
entity_category: config
- platform: template
name: Mute
id: mute
optimistic: true
restore_mode: RESTORE_DEFAULT_OFF
entity_category: config
on_turn_off:
- if:
condition:
lambda: return !id(init_in_progress);
then:
- lambda: id(va).set_use_wake_word(true);
- lambda: id(voice_assistant_phase) = ${voice_assist_idle_phase_id};
- if:
condition:
not:
- voice_assistant.is_running
then:
- voice_assistant.start_continuous
- script.execute: draw_display
on_turn_on:
- if:
condition:
lambda: return !id(init_in_progress);
then:
- voice_assistant.stop
- lambda: id(va).set_use_wake_word(false);
- lambda: id(voice_assistant_phase) = ${voice_assist_muted_phase_id};
- script.execute: draw_display
globals:
- id: init_in_progress
type: bool
restore_value: false
initial_value: "true"
- id: voice_assistant_phase
type: int
restore_value: false
initial_value: ${voice_assist_not_ready_phase_id}
image:
- file: ${error_illustration_file}
id: casita_error
resize: 320x240
type: RGB24
use_transparency: true
- file: ${idle_illustration_file}
id: casita_idle
resize: 320x240
type: RGB24
use_transparency: true
- file: ${listening_illustration_file}
id: casita_listening
resize: 320x240
type: RGB24
use_transparency: true
- file: ${thinking_illustration_file}
id: casita_thinking
resize: 320x240
type: RGB24
use_transparency: true
- file: ${replying_illustration_file}
id: casita_replying
resize: 320x240
type: RGB24
use_transparency: true
- file: ${loading_illustration_file}
id: casita_initializing
resize: 320x240
type: RGB24
use_transparency: true
- file: https://github.com/esphome/firmware/raw/main/voice-assistant/error_box_illustrations/error-no-wifi.png
id: error_no_wifi
resize: 320x240
type: RGB24
use_transparency: true
- file: https://github.com/esphome/firmware/raw/main/voice-assistant/error_box_illustrations/error-no-ha.png
id: error_no_ha
resize: 320x240
type: RGB24
use_transparency: true
font:
- file:
type: gfonts
family: Figtree
weight: 300
italic: true
glyphs: ${allowed_characters}
id: font_request
size: 15
- file:
type: gfonts
family: Figtree
weight: 300
glyphs: ${allowed_characters}
id: font_response
size: 15
text_sensor:
- id: text_request
platform: template
on_value:
lambda: |-
if(id(text_request).state.length()>32) {
std::string name = id(text_request).state.c_str();
std::string truncated = esphome::str_truncate(name.c_str(),31);
id(text_request).state = (truncated+"...").c_str();
}
- id: text_response
platform: template
on_value:
lambda: |-
if(id(text_response).state.length()>32) {
std::string name = id(text_response).state.c_str();
std::string truncated = esphome::str_truncate(name.c_str(),31);
id(text_response).state = (truncated+"...").c_str();
}
color:
- id: idle_color
hex: ${idle_illustration_background_color}
- id: listening_color
hex: ${listening_illustration_background_color}
- id: thinking_color
hex: ${thinking_illustration_background_color}
- id: replying_color
hex: ${replying_illustration_background_color}
- id: loading_color
hex: ${loading_illustration_background_color}
- id: error_color
hex: ${error_illustration_background_color}
spi:
clk_pin: 7
mosi_pin: 6
display:
- platform: ili9xxx
id: s3_box_lcd
model: S3BOX
data_rate: 40MHz
cs_pin: 5
dc_pin: 4
reset_pin:
number: 48
inverted: true
update_interval: never
pages:
- id: idle_page
lambda: |-
it.fill(id(idle_color));
it.image((it.get_width() / 2), (it.get_height() / 2), id(casita_idle), ImageAlign::CENTER);
- id: listening_page
lambda: |-
it.fill(id(listening_color));
it.image((it.get_width() / 2), (it.get_height() / 2), id(casita_listening), ImageAlign::CENTER);
- id: thinking_page
lambda: |-
it.fill(id(thinking_color));
it.image((it.get_width() / 2), (it.get_height() / 2), id(casita_thinking), ImageAlign::CENTER);
if (id(display_conversation).state) {
it.filled_rectangle(20 , 20 , 280 , 30 , Color::WHITE );
it.rectangle(20 , 20 , 280 , 30 , Color::BLACK );
it.printf(30, 25, id(font_request), Color::BLACK, "%s", id(text_request).state.c_str());
}
- id: replying_page
lambda: |-
it.fill(id(replying_color));
it.image((it.get_width() / 2), (it.get_height() / 2), id(casita_replying), ImageAlign::CENTER);
if (id(display_conversation).state) {
it.filled_rectangle(20 , 20 , 280 , 30 , Color::WHITE );
it.rectangle(20 , 20 , 280 , 30 , Color::BLACK );
it.filled_rectangle(20 , 190 , 280 , 30 , Color::WHITE );
it.rectangle(20 , 190 , 280 , 30 , Color::BLACK );
it.printf(30, 25, id(font_request), Color::BLACK, "%s", id(text_request).state.c_str());
it.printf(30, 195, id(font_response), Color::BLACK, "%s", id(text_response).state.c_str());
}
- id: error_page
lambda: |-
it.fill(id(error_color));
it.image((it.get_width() / 2), (it.get_height() / 2), id(casita_error), ImageAlign::CENTER);
- id: no_ha_page
lambda: |-
it.image((it.get_width() / 2), (it.get_height() / 2), id(error_no_ha), ImageAlign::CENTER);
- id: no_wifi_page
lambda: |-
it.image((it.get_width() / 2), (it.get_height() / 2), id(error_no_wifi), ImageAlign::CENTER);
- id: initializing_page
lambda: |-
it.fill(id(loading_color));
it.image((it.get_width() / 2), (it.get_height() / 2), id(casita_initializing), ImageAlign::CENTER);
- id: muted_page
lambda: |-
it.fill(Color::BLACK);
Thanks! Didn't work, though. Same as before.
The No-WiFi thing seems to boil down to a bug in Improv-WiFi.
The serial variant doesn't seem to work at all, but I can use the BT variant after flashing the prefab binary.
I seem to have fixed the crash problem.
After adding compile_process_limit: 1
to the esphome:
section, I could successfully update my S3 Box 3.
The process took quite a while, but it worked.
That should go in the FAQ.
I bought 2 devices and following ESP32-S3-BOX voice assistant - Home Assistant (home-assistant.io) the step to add the wifi never comes. I tried :
SYMPTOM The installation wizard never shows the dialog to connect to the Wi-Fi, but directly returns to the screen with Install Voice Assistant.
REMEDY Disconnect the USB cable connecting the ESP32-S3-BOX-3 and connect it again.
this 20 times but nothing changes. Resetting etc etc...
So unless someone knows a solution is there an alternative way to install this? Copy the yamlfile or something? I cant find a good tutorial for that? I would appreciate some help...