Note that I removed the local, static, stale copy of wolfSSL. See details on fetching into a GitHub directory, either directly from wolfSSL or from my fork, or a fork of your own. This allows easy contributions upstream as well as easily updating wolfSSL.
Here are instructions to test from the gojimmypi forks:
# set TEST_DIR to fully qualified path:
# export TEST_DIR=~/yourdir
export TEST_DIR=/mnt/c/test-homekit
cd $TEST_DIR
mkdir test-homekit
cd test-homekit
# get a copy of the gojimmypi fork of wolfSSL (see PR)
git clone https://github.com/gojimmypi/wolfssl.git wolfssl-gojimmypi
cd wolfssl-gojimmypi
git checkout PR-Apple-Homekit-SRP-fix
cd ..
# if wolfSSL was fetched to `wolfssl` or 'wolfssl-$USER` or `wolfssl-master`
# then cmake would find it if in parent directory of example
# since it is not, we set the WOLFSSL_ROOT source code directory an environment variable:
export WOLFSSL_ROOT=$TEST_DIR/wolfssl-gojimmypi
# get a copy of the gojimmypi esp32-homekit-demo fork (see PR)
git clone --recursive https://github.com/gojimmypi/esp32-homekit-demo.git esp32-homekit-demo-gojimmypi
cd ./esp32-homekit-demo-gojimmypi
git remote add upstream https://github.com/AchimPieters/esp32-homekit-demo.git
git checkout PR-wolfssl
# Windows users may need:
git config core.fileMode false
cd ./examples/led
# Set path for your ESP-IDF, shown here for v5.2 in WSL for VisualGDB
WRK_IDF_PATH=/mnt/c/SysGCC/esp32/esp-idf/v5.2
. ${WRK_IDF_PATH}/export.sh
idf.py set-target esp32c2
idf.py menuconfig
idf.py build
A variety of issues are noted:
Watchdog
The ESP32-C2 is relatively slow; the watchdog timer needed to be increased.
Currently the setting is 60 seconds, but can be adjusted as desired or turned off.
Suggestion to remove non-components
I see these warnings during build:
-- Component directory /mnt/c/workspace/esp32-homekit-demo-gojimmypi/components/esp-idf does not contain a CMakeLists.txt file. No component will be added
-- Component directory /mnt/c/workspace/esp32-homekit-demo-gojimmypi/components/esp32-library does not contain a CMakeLists.txt file. No component will be added
Homekit ESP32 Device Bug
Occasionally after deleting a device, when I'd reflash and try to re-add, I'd get this message at startup:
>>> HomeKit: Found admin pairing with CD52A808-E26A-45C1-AE40-296B389AD1D9, disabling pair setup
With that message, the ESP32 was not listed as a device to add. I needed to idf.py erase-flash -p /dev/ttyS79 -b 115200 to fix.
Homekit App Bug
It seems to be a Homekit app bug on the iPhone. I'm also not able to delete a device that's not online.
New testAll script
Edit the sdkconfig.defaults to ensure all the targets have the appropriate WiFi SSID and password. (probably don't want to check in to GitHub). See pattern for including parent my_private_config.h.
Need to fix wolfSSL setting and user settings files.
Find all instances of #include <user_settings.h> and remove them.
Find all instances of #include <wolfssl/wolfcrypt/settings.h> and ensure they appear before any other wolfSSL includes.
Find all instances of a wolfSSL include, and ensure there's a #include <wolfssl/wolfcrypt/settings.h> in each file or header.
See
components/homekit/src/crypto.h
components/homekit/src/crypto.c
components/homekit/src/server.c.c
Consider replacing the settings.h include with this block:
/* wolfSSL */
/* Always include wolfcrypt/settings.h before any other wolfSSL file. */
/* Reminder: settings.h pulls in user_settings.h; don't include it here. */
#ifdef WOLFSSL_USER_SETTINGS
#include <wolfssl/wolfcrypt/settings.h>
#ifndef WOLFSSL_ESPIDF
#warning "Problem with wolfSSL user_settings."
#warning "Check components/wolfssl/include"
#endif
#include <wolfssl/wolfcrypt/port/Espressif/esp32-crypt.h>
#else
/* Define WOLFSSL_USER_SETTINGS project wide for settings.h to include */
/* wolfSSL user settings in ./components/wolfssl/include/user_settings.h */
#error "Missing WOLFSSL_USER_SETTINGS in CMakeLists or Makefile:\
CFLAGS +=-DWOLFSSL_USER_SETTINGS"
#endif
ESP8266 Makefiles (via VisualGDB)
There are some makefiles included for building ESP8266, but there are missing files for the rest of the project.
See No rule to make target 'component-homekit-build', needed by 'component-main-build'. Stop. in log, below.
I didn't chase them down.
Run "C:\SysGCC\esp8266\usr\bin\bash.exe --login -c "export IDF_PATH=/rtos-sdk/v3.4 && export BATCH_BUILD=1 && export PATH=/mingw32/bin:/usr/bin:/opt/xtensa-lx106-elf/bin:$PATH && export -n PYTHONHOME && export LANG=en_US && cd /C/workspace/esp32-homekit-demo-gojimmypi/examples/led && make -j20 BUILD_DIR_BASE='/C/workspace/esp32-homekit-demo-gojimmypi/examples/led/build/Debug' SDKCONFIG='/C/workspace/esp32-homekit-demo-gojimmypi/examples/led/sdkconfig-debug' V=0"" in directory "" on local computer
C:\SysGCC\esp8266\usr\bin\bash.exe --login -c "export IDF_PATH=/rtos-sdk/v3.4 && export BATCH_BUILD=1 && export PATH=/mingw32/bin:/usr/bin:/opt/xtensa-lx106-elf/bin:$PATH && export -n PYTHONHOME && export LANG=en_US && cd /C/workspace/esp32-homekit-demo-gojimmypi/examples/led && make -j20 BUILD_DIR_BASE='/C/workspace/esp32-homekit-demo-gojimmypi/examples/led/build/Debug' SDKCONFIG='/C/workspace/esp32-homekit-demo-gojimmypi/examples/led/sdkconfig-debug' V=0"
Python requirements from C:/SysGCC/esp8266/rtos-sdk/v3.4/requirements.txt are satisfied.
GENCONFIG
App "homekit-demo" version: 18d6239-dirty
make: *** No rule to make target 'component-homekit-build', needed by 'component-main-build'. Stop.
make: *** Waiting for unfinished jobs....
Building partitions from /rtos-sdk/v3.4/components/partition_table/partitions_singleapp.csv...
CC build/Debug/bootloader/main/bootloader_start.o
CC build/Debug/bootloader/bootloader_support/src/bootloader_random.o
CC build/Debug/bootloader/log/log.o
CC build/Debug/bootloader/bootloader_support/src/flash_encrypt.o
CC build/Debug/bootloader/bootloader_support/src/bootloader_sha.o
CC build/Debug/bootloader/spi_flash/src/spi_flash.o
CC build/Debug/bootloader/esp8266/source/ets_printf.o
CC build/Debug/bootloader/spi_flash/src/spi_flash_raw.o
CC build/Debug/bootloader/esp8266/source/crc.o
CC build/Debug/bootloader/spi_flash/port/port.o
CC build/Debug/bootloader/esp8266/source/esp_fast_boot.o
CC build/Debug/bootloader/bootloader_support/src/esp_image_format.o
CC build/Debug/bootloader/bootloader_support/src/flash_partitions.o
CC build/Debug/bootloader/bootloader_support/src/secure_boot_signatures.o
CC build/Debug/bootloader/bootloader_support/src/bootloader_clock.o
AR build/Debug/bootloader/main/libmain.a
AR build/Debug/bootloader/log/liblog.a
CC build/Debug/bootloader/bootloader_support/src/secure_boot.o
CC build/Debug/bootloader/bootloader_support/src/bootloader_common.o
AR build/Debug/bootloader/esp8266/libesp8266.a
AR build/Debug/bootloader/spi_flash/libspi_flash.a
CC build/Debug/bootloader/bootloader_support/src/bootloader_utility.o
CC build/Debug/bootloader/bootloader_support/src/bootloader_init.o
CC build/Debug/bootloader/bootloader_support/src/efuse.o
CC build/Debug/bootloader/bootloader_support/src/flash_qio_mode.o
CC build/Debug/bootloader/bootloader_support/src/bootloader_flash.o
AR build/Debug/bootloader/bootloader_support/libbootloader_support.a
LD build/Debug/bootloader/bootloader.elf
esptool.py v2.4.0
-------------------------------------------------------------
Command exited with code 2
Executable: C:\SysGCC\esp8266\usr\bin\bash.exe
Arguments: --login -c "export IDF_PATH=/rtos-sdk/v3.4 && export BATCH_BUILD=1 && export PATH=/mingw32/bin:/usr/bin:/opt/xtensa-lx106-elf/bin:$PATH && export -n PYTHONHOME && export LANG=en_US && cd /C/workspace/esp32-homekit-demo-gojimmypi/examples/led && make -j20 BUILD_DIR_BASE='/C/workspace/esp32-homekit-demo-gojimmypi/examples/led/build/Debug' SDKCONFIG='/C/workspace/esp32-homekit-demo-gojimmypi/examples/led/sdkconfig-debug' V=0"
Directory:
Command-line action failed
========== Project Build Summary ==========
wolfssl_ESP8266 built in 00:19
========== Build: 0 Succeeded, 1 Failed, 0 Skipped ==========
ESP8266 cmake
I'm not sure the ESP8266 is an option at this time.
This PR addresses wolfSSL SRP issues for the ESP32-C2 as noted in wolfssl issue #7210.
TL;DR: working on 6 different ESP32 devices!
The changes in wolfssl PR #7505 are required and can be found in gojimmypi/wolfssl/tree/PR-Apple-Homekit-SRP-fix.
Note that I removed the local, static, stale copy of wolfSSL. See details on fetching into a GitHub directory, either directly from wolfSSL or from my fork, or a fork of your own. This allows easy contributions upstream as well as easily updating wolfSSL.
Here are instructions to test from the
gojimmypi
forks:A variety of issues are noted:
Watchdog
The ESP32-C2 is relatively slow; the watchdog timer needed to be increased.
Currently the setting is 60 seconds, but can be adjusted as desired or turned off.
Suggestion to remove non-components
I see these warnings during build:
Homekit ESP32 Device Bug
Occasionally after deleting a device, when I'd reflash and try to re-add, I'd get this message at startup:
With that message, the ESP32 was not listed as a device to add. I needed to
idf.py erase-flash -p /dev/ttyS79 -b 115200
to fix.Homekit App Bug
It seems to be a Homekit app bug on the iPhone. I'm also not able to delete a device that's not online.
New testAll script
Edit the
sdkconfig.defaults
to ensure all the targets have the appropriate WiFi SSID and password. (probably don't want to check in to GitHub). See pattern for including parentmy_private_config.h
.Need to fix wolfSSL setting and user settings files.
Find all instances of
#include <user_settings.h>
and remove them.Find all instances of
#include <wolfssl/wolfcrypt/settings.h>
and ensure they appear before any other wolfSSL includes.Find all instances of a wolfSSL include, and ensure there's a
#include <wolfssl/wolfcrypt/settings.h>
in each file or header.See
components/homekit/src/crypto.h
components/homekit/src/crypto.c
components/homekit/src/server.c.c
Consider replacing the
settings.h
include with this block:ESP8266 Makefiles (via VisualGDB)
There are some makefiles included for building ESP8266, but there are missing files for the rest of the project.
See
No rule to make target 'component-homekit-build', needed by 'component-main-build'. Stop.
in log, below.I didn't chase them down.
ESP8266 cmake
I'm not sure the ESP8266 is an option at this time.
There are a variety of missing dependencies in the homekit, including
bt
,openthread
,esp_partition
. I didn't chase them down.There's also an optional wolfSSL feature for
esp_timer
anddriver
that's not available on the ESP8266: