ESP32 開發問題排查

本頁按症狀整理排查入口。每條建議都來自韌體原始碼、上游文件或站內已核對的頁面;沒有依據的經驗性說法不收錄。使用類問題(配網、啟用、綁定)請先看首次啟動和常見問題。

一、編譯與環境

症狀檢查處理
編譯報 ESP-IDF 相關錯誤idf.py --version韌體要求 ESP-IDF v6.0.1 或更高,推薦 v6.1;不支援 IDF 5.x,詳見 ESP-IDF 開發環境搭建
ESP32-S31 變體編譯失敗IDF 版本該晶片的變體需要 ESP-IDF 6.1 或以上,自行編譯時推薦 release/v6.1 分支
找不到板型或變體名名稱拼寫先執行 python3 scripts/build.py --list-boards 檢視準確的板目錄與變體名,再用 python3 scripts/build.py <板目錄> --name <變體名> 建置
切換板子後配置異常本地建置狀態scripts/build.py 會改寫 sdkconfig 和建置狀態,不要假定舊的建置目錄還對應上一個目標,重新用指令碼建置
板子定義重複或缺失DECLARE_BOARD一次建置必須恰好匯出一個 DECLARE_BOARD(...),參見自訂開發板指南
手工改過生成檔案後行為奇怪build/、managed_components/、sdkconfig*、main/assets/lang_config.h這些是生成物或第三方輸出,不要手工修改,恢復後重新建置

二、燒錄

  • 預編譯韌體把合併映象寫入位址 0x0,步驟見韌體下載與安裝。
  • 燒錄失敗或擦除失敗時,先把開發板從麵包板上取下,單獨連線電腦再試。
  • 序列埠名稱因系統而異:Linux 常見為 /dev/ttyACM0 或 /dev/ttyUSB0,macOS 常見為 /dev/cu.usbmodem*,Windows 為 COMx;必要時用 -p <序列埠> 指定。
  • 部分開發板有專用的 Flash 參數說明,見上游儲存庫中該板目錄下的 README。

三、沒有聲音或無法錄音

按下面的順序排查:

  1. 接線:對照硬體搭建指南的引腳表逐根核對,上電前用萬用表確認 GND 與 3.3V 之間沒有短路。
  2. 板級宣告:板級 config.h 中的麥克風通道宣告(M 或 MR)必須與編解碼器回傳的交織 PCM 一致;R 通道只能放回放參考,不能當作第二個麥克風(見上游 main/audio/README.md)。
  3. I2S 模式:Simplex 與 Duplex 的引腳不同,改用其中一種時要同時改 config.h 裡的引腳定義。
  4. 取樣率:多數板級配置為輸入 16 kHz、輸出 24 kHz,自訂板子需要與編解碼器匹配。

用 Audio Debugger 抓取音訊

韌體可以把採集到的音訊透過 UDP 發到電腦,用來判斷問題出在採集還是後面的環節:

  1. 在 menuconfig 開啟 USE_AUDIO_DEBUGGER(預設關閉),並把 AUDIO_DEBUG_UDP_SERVER 設為電腦的 IP:埠(預設 192.168.2.100:8000)。
  2. 在電腦上執行上游指令碼,它監聽 UDP 8000 埠並寫入 WAV 檔案:
python3 scripts/audio_debug_server.py --samplerate 16000 --channels 2

--samplerate 預設 16000,--channels 預設 2,需要與你抓取的資料格式一致。

四、無法喚醒

  • 沒有 PSRAM 的板子:預設不啟用本機喚醒詞,請用按鍵對話或外接喚醒模組,見ESP32 丐版。
  • 晶片不匹配:AFE 喚醒詞和 MultiNet 自訂喚醒詞只支援帶 PSRAM 的 ESP32-S3 / P4 / S31,C3、C5、C6 以及帶 PSRAM 的 ESP32 使用無 AFE 的 WakeNet,見晶片支援與儲存規格。
  • 自訂喚醒詞不靈敏:CUSTOM_WAKE_WORD_THRESHOLD 範圍 1-99,數值越小越靈敏,預設 20;中文喚醒詞要寫成用空格分隔的拼音。
  • Assets 喚醒詞模型:見自訂 Assets 指南中的校驗與版本提示。

五、聯網、啟用與升級

六、assets 資源問題

日誌含義
No assets partition found / Assets partition is disabled分區表沒有 assets 分區
校驗和不匹配assets.bin 損壞或寫入偏移不對
The assets version N is not supported, please upgrade the firmware索引版本高於韌體支援的版本
Assets file size ... is larger than partition size檔案超過分區大小

處理方法見自訂 Assets 指南。

七、反饋問題時請提供

  • 韌體版本、板目錄與變體名(例如 bread-compact-wifi),以及晶片型號;
  • ESP-IDF 版本(idf.py --version 的輸出);
  • 完整的序列埠日誌,從啟動到出錯的部分;
  • 復現步驟,以及是否在實體硬體上驗證過。

可以到上游 GitHub Issues 反饋韌體問題。

相關文檔

對照來源:78/xiaozhi-esp32 v2.5.2 的 AGENTS.md、main/audio/README.md、main/Kconfig.projbuild、main/assets.cc、scripts/audio_debug_server.py。