Compiling ESP32 S3 Box 3 fails and gives: Failed config Font is missing 791 glyphs

Just installed the new ESPHome 2024.11.00
Home Assistant : 2024.11.2

Updating my ESP32 S3 Box 3 fails:
INFO ESPHome 2024.11.0
INFO Reading configuration /config/esphome/esp32-s3-box-3-054618.yaml...
INFO Updating https://github.com/esphome/esphome.git@pull/5230/head
INFO Updating https://github.com/jesserockz/esphome-components.git@None
WARNING GPIO0 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

font: [source /data/packages/dec89df9/esp32-s3-box-3/esp32-s3-box-3.yaml:618]
  
  Font Figtree@300@[email protected] is missing 791 glyphs:
      ũ (b'\\u0169')
      ơ (b'\\u01a1')
      ư (b'\\u01b0')
      Ά (b'\\u0386')
      Έ (b'\\u0388')
      Ό (b'\\u038c')
      ΐ (b'\\u0390')
      Α (b'\\u0391')
      Β (b'\\u0392')
      Γ (b'\\u0393')
      and 781 more.
  - file: 
      type: gfonts
      family: Figtree

Anyone a clue where to begin searching?

2 Likes

Without your yaml, no clue.

You’re right, but my yaml is just a wrap around the one from github, so not very interesting

substitutions:
  name: esp32-s3-box-3-054618
  friendly_name: ESP32 S3 Box 3 Living
packages:
  esphome.voice-assistant: github://esphome/wake-word-voice-assistants/esp32-s3-box-3/esp32-s3-box-3.yaml@main
esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: !secret api_Esp32-s3-box-3_encryption_key

ota:
  - platform: esphome
    password: !secret ota_Esp32-s3-box-3_password
    
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  # for hidden ssids, this must be true
  fast_connect: true  

  # the normal nameofyourdevice.local isn't working, so take the hardcoded way
  manual_ip:
    static_ip: xxx.xxx.xxx.xxx
    gateway: xxx.xxx.xxx.xxx
    subnet: 255.255.255.0

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32-S3-Box-3 Fallback Hotspot"
    password: "verysecret"

captive_portal:

This code in the github yaml gives the error:

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
  - file:
      type: gfonts
      family: Figtree
      weight: 300
    glyphs: ${allowed_characters}
    id: font_timer
    size: 30

with

  # These unique 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{|}°²³µ¿ÁÂÄÅÉÖÚßàáâãäåæçèéêëìíîðñòóôõöøùúûüýþāăąćčďĐđēėęěğĮįıļľŁłńňőřśšťũūůűųźŻżŽžơưșțΆΈΌΐΑΒΓΔΕΖΗΘΚΜΝΠΡΣΤΥΦάέήίαβγδεζηθικλμνξοπρςστυφχψωϊόύώАБВГДЕЖЗИКЛМНОПРСТУХЦЧШЪЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяёђєіїјљњћאבגדהוזחטיכלםמןנסעפץצקרשת،ءآأإئابةتجحخدذرزسشصضطظعغفقكلمنهوىيٹپچڈکگںھہیےংকচতধনফবযরলশষস়ািু্చయలిెొ్ംഅആഇഈഉഎഓകഗങചജഞടഡണതദധനപഫബഭമയരറലളവശസഹാിീുൂെേൈ്ൺൻർൽൾაბგდევზთილმნოპრსტუფქყშჩცძჭხạảấầẩậắặẹẽếềểệỉịọỏốồổỗộớờởợụủứừửữựỳ—、一上不个中为主乾了些亮人任低佔何作供依侧係個側偵充光入全关冇冷几切到制前動區卧厅厨及口另右吊后吗启吸呀咗哪唔問啟嗎嘅嘛器圍在场執場外多大始安定客室家密寵对將小少左已帘常幫幾库度庫廊廚廳开式後恆感態成我戲戶户房所扇手打执把拔换掉控插摄整斯新明是景暗更最會有未本模機檯櫃欄次正氏水沒没洗活派温測源溫漏潮激濕灯為無煙照熱燈燥物狀玄现現瓦用發的盞目着睡私空窗立笛管節簾籬紅線红罐置聚聲脚腦腳臥色节著行衣解設調請謝警设调走路車车运連遊運過道邊部都量鎖锁門閂閉開關门闭除隱離電震霧面音頂題顏颜風风食餅餵가간감갔강개거게겨결경고공과관그금급기길깥꺼껐꼽나난내네놀누는능니다닫담대더데도동됐되된됨둡드든등디때떤뜨라래러렇렌려로료른를리림링마많명몇모무문물뭐바밝방배변보부불블빨뽑사산상색서설성세센션소쇼수스습시신실싱아안않알았애야어얼업없었에여연열옆오온완외왼요운움워원위으은을음의이인일임입있작잠장재전절정제져조족종주줄중줘지직진짐쪽차창천최추출충치침커컴켜켰쿠크키탁탄태탬터텔통트튼티파팬퍼폰표퓨플핑한함해했행혀현화활후휴힘,?"

Should this change be the reason? [font] Add support for "glyphsets" by paravoid · Pull Request #7429 · esphome/esphome · GitHub

I see that I am not the only one with this problem: Error when adopting the ESP32-S3-BOX-3B into Esphome · Issue #33 · esphome/wake-word-voice-assistants · GitHub

1 Like

I’m having exactly the same problem. At least this month it failed to build. Last month the .00 version caused my S3 Box to boot loop. At least this month I just have to wait for a fix, instead of manually installing an old version of ESPHome to downgrade the firmware on my S3 Box. I hope there’s a fix soon.

The fix is to not request glyphs that aren’t in the font. Just remove the lines like:

    glyphs: ${allowed_characters}

Or change the allowed characters to ones that are in the font.

[edited]

There are some issues around this, need to consider a better fix for the longer term. I’ll raise an issue for it.

Actually it turns out that the Figtree font only contains Latin characters anyway, so it’s pointless asking for any of the other languages.

So just removing the glyphs: key is the solution.

Hi there,

I use exactly the same yaml and it was working for several months until ESPHome 2024.11.0 update.

So is the yaml the real problem or the update that broke something that was working before?

BR
René

The yaml was requesting glyphs that were not in the font, so even though it appeared to be enabling all those characters, a substantial number would not have displayed if included in text. The recent update now regards this as a a build time error, since an inspection of the yaml would suggest you could use all those listed non-Latin characters, yet if they were used they would not have displayed. That’s misleading.

So the yaml was wrong, the error was previously ignored, now it’s not. So yes, that’s a breaking change.

Can someone please tell me how to fix this. I do not have the code in my yaml, but instead points to the github package.

substitutions:
  name: esphome-web-deviceX
  friendly_name: NabuX
packages:
  esphome.voice-assistant: github://esphome/firmware/voice-assistant/esp32-s3-box-3.yaml@main
esphome:
  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}
api:
  encryption:
    key: blah-blah-blah

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

Do I need to take this code from the Github package and paste it into the Yaml instead and correct it there?

Edit: Ok, so I did just that, paste the code from the github package into my yaml, make the required mods (removed the three “gryphs” statements) - but now I get this error:

The device is not currently online, and I am doing an Offline-complie, aka Download the .BIN firmware - so I do not expect the device to be online for this, correct?

Any help are highly apprecaited.
Thanks.

1 Like

I’m seeing the same behavior referencing the package on github.

So, the code at github://esphome/wake-word-voice-assistants/esp32-s3-box-3/esp32-s3-box-3.yaml@main was corrected, but esphome must use a cached version because still the same error
How to delete this cached version? How to force to download a new version?

I’ve tried also this in my yaml file to try to force to download the new version:

packages:
  esphome.voice-assistant:
    url: https://github.com/esphome/wake-word-voice-assistants
    files: esp32-s3-box-3/esp32-s3-box-3.yaml
    ref: main
    refresh: 1s

I think it does that, but than it fails further on (a different error than above):

INFO ESPHome 2024.11.0
INFO Reading configuration /config/esphome/esp32-s3-box-3-054618.yaml...
INFO Updating https://github.com/esphome/wake-word-voice-assistants@main
INFO Updating https://github.com/esphome/esphome.git@pull/5230/head
INFO Updating https://github.com/jesserockz/esphome-components.git@None
WARNING GPIO0 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 Found and merged multiple configurations for ota platform esphome port(s) [3232]
INFO Generating C++ source...
INFO Updating https://github.com/jesserockz/esp32-s3-box-3-board.git@main
INFO Updating https://github.com/espressif/[email protected]
INFO Updating submodules (components/esp-sr, components/esp-adf-libs) for https://github.com/espressif/[email protected]
Traceback (most recent call last):
  File "/usr/local/bin/esphome", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/esphome/esphome/__main__.py", line 1036, in main
    return run_esphome(sys.argv)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/__main__.py", line 1023, in run_esphome
    rc = POST_CONFIG_ACTIONS[args.command](args, config)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/__main__.py", line 503, in command_run
    exit_code = write_cpp(config)
                ^^^^^^^^^^^^^^^^^
  File "/esphome/esphome/__main__.py", line 213, in write_cpp
    return write_cpp_file()
           ^^^^^^^^^^^^^^^^
  File "/esphome/esphome/__main__.py", line 231, in write_cpp_file
    writer.write_cpp(code_s)
  File "/esphome/esphome/writer.py", line 341, in write_cpp
    copy_src_tree()
  File "/esphome/esphome/writer.py", line 307, in copy_src_tree
    copy_files()
  File "/esphome/esphome/components/esp32/__init__.py", line 733, in copy_files
    shutil.copytree(
  File "/usr/lib/python3.11/shutil.py", line 561, in copytree
    return _copytree(entries=entries, src=src, dst=dst, symlinks=symlinks,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/shutil.py", line 515, in _copytree
    raise Error(errors)
shutil.Error: [('/data/idf_components/b0ad5728/components/esp-sr/docs/myapp/bin/python', '/data/build/esp32-s3-box-3-054618/components/esp-sr/docs/myapp/bin/python', "[Errno 17] File exists: 'python3' -> '/data/build/esp32-s3-box-3-054618/components/esp-sr/docs/myapp/bin/python'"), ('/data/idf_components/b0ad5728/components/esp-sr/docs/myapp/bin/python3', '/data/build/esp32-s3-box-3-054618/components/esp-sr/docs/myapp/bin/python3', "[Errno 17] File exists: '/usr/bin/python3' -> '/data/build/esp32-s3-box-3-054618/components/esp-sr/docs/myapp/bin/python3'"), ('/data/idf_components/b0ad5728/components/esp-sr/docs/myapp/lib64', '/data/build/esp32-s3-box-3-054618/components/esp-sr/docs/myapp/lib64', "[Errno 17] File exists: 'lib' -> '/data/build/esp32-s3-box-3-054618/components/esp-sr/docs/myapp/lib64'")]

I see a very similar error after making the same change

I added an audio: statement to my code and the compile is working.

Thank you!

Today, an update of ESPHome 2024.11.1 and probably a refresh of the cache for the github package.
Everything compiles now without any error and without any change of my wrapping yaml code.

It is a great shame that this change breaks even the esphome’s own yaml configs. How about coordinating things a bit better guys?

Oh, wait. You mean this is NOT “made in …” ?
LOL

Well, clearly nobody using that yaml config tested out the beta version.

gift-horse

Reverted back to 2024.10.0 from backups, solved my issues with the x-missing glyphs:

You have 2024.10.0 installed. Click update to update to version 2024.11.2

Today, an update of ESPHome 2024.11.1 and probably a refresh of the cache for the github package.
What does "refresh of the cache for GitHub package mean … is this the solution?

In my yaml file, a github yaml is used. See one of my first messages.

packages:
  esphome.voice-assistant: github://esphome/wake-word-voice-assistants/esp32-s3-box-3/esp32-s3-box-3.yaml@main

This github yaml was corrected by the author to avoid the error, but this github yaml is also cached on your system.
So the correction was at first instance, not seen by my installation because of the cached version. This cached version was taken instead of the new one.