build: initial re-work of the ci pipeline
What changed, and why it matters
This commit is a housekeeping rework of the project's continuous-integration (CI) build and test pipeline. It renames build stages, splits the GitLab CI configuration into smaller files, generates CI test configurations from developer configs, removes a substitute test device, and adds a release-staging script. There is no change to the wallet firmware's security logic, cryptography, or user-facing behavior.
No security action required. Treat as normal build-system maintenance. Reviewers may optionally verify that the generated CI configs still enable the intended security options (secure boot, flash encryption, reproducible builds, stack checks) and that the release signing script uses the expected non-production key for dev artifacts.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The commit refactors .gitlab-ci.yml and moves most job definitions into included files under gitlab/. It introduces a build_test stage whose configs are derived from configs/sdkconfig_dev_*.defaults by appending CONFIG_DEBUG_UNATTENDED_CI=y, CONFIG_HEAP_POISONING_COMPREHENSIVE=y, and CONFIG_LOG_DEFAULT_LEVEL_NONE=y. It removes the TTGO T-Display S3 CI substitute device and its gcov config, renames sdkconfig_jade_v2s3* to sdkconfig_jade_v2*, adds sdkconfig_qemu_psram_unamalgamated.defaults, and updates ci_flash.sh and qemu_ci_flash.sh to use a configurable build directory. A new gitlab/stage_release.sh collates production and development build artifacts and signs dev images with the in-tree release/scripts/devfw.sh key. The only runtime-config change visible in the diff is CONFIG_COMPILER_STACK_CHECK_MODE_ALL=y replacing STRONG in sdkconfig_jade_noradio.defaults and sdkconfig_jade_v1_1_noradio.defaults, which is a hardening move, not a vulnerability.
Changed components
.gitlab-ci.ymlgitlab/*.ymlgitlab/stage_release.shci_flash.shmain/qemu/qemu_ci_flash.shconfigs/sdkconfig_*.defaultsproduction/sdkconfig_*.defaultsREADME.mdtools/check_default_configs.shtools/flock.shInspect captured patch +1584 / −2274
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index bfd6af3..2659e1a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,58 +4,47 @@ variables:
GIT_SUBMODULE_UPDATE_FLAGS: --jobs 4
stages:
- - format
- - build
+ - build_prod
+ - build_dev
+ - build_test
- test
- - deploy
+ - flash
+ - release
+ - build_diy
image: blockstream/verde@sha256:9171360dae48d3fba7c0f36ab5eb45e2529d178a603e89197cb08fb123ca619e
-test_bip85_rsa_key_gen:
- tags:
- - ga
- stage: format
- script:
- - . $HOME/esp/esp-idf/export.sh
- - (cd tools/bip85_rsa_key_gen && ./test.sh)
- - git diff --exit-code
-
-test_format:
- tags:
- - ga
- stage: format
- script:
- - . $HOME/esp/esp-idf/export.sh
- - ./format.sh
- - idf.py reconfigure
- - git diff --exit-code
-
-test_configs:
- tags:
- - ga
- stage: format
- script:
- - ./tools/check_default_configs.sh
- - git diff --exit-code
-
-.test_build_template:
- tags:
- - ga
- stage: build
+include:
+ - gitlab/prod_fw.yml
+ - gitlab/python.yml
+ - gitlab/apidocs.yml
+ - gitlab/test_fw.yml
+ - gitlab/dev_fw.yml
+ - gitlab/test.yml
+ - gitlab/flash.yml
+ - gitlab/release.yml
+ - gitlab/diy_fw.yml
+
+#
+# Jade FW build template
+#
+
+.build_template:
+ tags: [ ga ]
+ needs: []
artifacts:
expire_in: 2 weeks
when: on_success
paths:
- - build*/jade.bin
- - build*/*_fw.bin
- - build*/*_fw.bin.hash
- - build*/index.json
- - build*/ota_data_initial.bin
- - build*/bootloader/bootloader.bin
- - build*/partition_table/partition-table.bin
- - build*/sdkconfig
- - build*/bsdiff.h
- - build*/bsdiff.c
+ - $CI_JOB_NAME/jade.bin
+ - $CI_JOB_NAME/*_fw.bin
+ - $CI_JOB_NAME/*_fw.bin.hash
+ - $CI_JOB_NAME/index.json
+ - $CI_JOB_NAME/ota_data_initial.bin
+ - $CI_JOB_NAME/bootloader/bootloader.bin
+ - $CI_JOB_NAME/partition_table/partition-table.bin
+ - $CI_JOB_NAME/sdkconfig
+ - $CI_JOB_NAME/bsdiff.*
script:
- . $HOME/esp/esp-idf/export.sh
- idf.py all size-components size
@@ -63,501 +52,6 @@ test_configs:
- ./tools/fwprep.py build/jade.bin build
- ./tools/mkindex.py build $(basename $(ls build/*_fw.bin) | cut -d'_' -f1)
- cp sdkconfig build/
- - cp components/esp32_bsdiff/bsdiff.h build/
- - cp components/esp32_bsdiff/bsdiff.c build/
-
-test_build_qemu:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_qemu.defaults sdkconfig.defaults
- after_script:
- - mv build build_display_qemu
-
-test_build_qemu_psram:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_qemu_psram.defaults sdkconfig.defaults
- after_script:
- - mv build build_display_qemu_psram
-
-test_build_qemu_psram_unamalgamated:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_qemu_psram.defaults sdkconfig.defaults
- - echo "CONFIG_AMALGAMATED_BUILD=n" >>sdkconfig.defaults
- after_script:
- - mv build build_display_qemu_psram_unamalgamated
-
-prod_build_jade:
- before_script:
- - cp production/sdkconfig_jade_prod.defaults sdkconfig.defaults
- extends: .test_build_template
- after_script:
- - mv build build_prod
-
-prod_build_jade_noradio:
- before_script:
- - cp production/sdkconfig_jade_noradio_prod.defaults sdkconfig.defaults
- extends: .test_build_template
- after_script:
- - mv build build_noradio_prod
-
-prod_build_jade_v1_1:
- before_script:
- - cp production/sdkconfig_jade_v1_1_prod.defaults sdkconfig.defaults
- extends: .test_build_template
- after_script:
- - mv build build_v1_1_prod
-
-prod_build_jade_v1_1_noradio:
- before_script:
- - cp production/sdkconfig_jade_v1_1_noradio_prod.defaults sdkconfig.defaults
- extends: .test_build_template
- after_script:
- - mv build build_v1_1_noradio_prod
-
-prod_build_jade_v2:
- before_script:
- - cp production/sdkconfig_jade_v2s3_prod.defaults sdkconfig.defaults
- extends: .test_build_template
- after_script:
- - mv build build_v2_prod
-
-prod_build_jade_v2_noradio:
- before_script:
- - cp production/sdkconfig_jade_v2s3_noradio_prod.defaults sdkconfig.defaults
- extends: .test_build_template
- after_script:
- - mv build build_v2_noradio_prod
-
-smoketest_build_jade_v1_1:
- before_script:
- - cp production/sdkconfig_jade_v1_1_smoketest.defaults sdkconfig.defaults
- extends: .test_build_template
- after_script:
- - mv build build_v1_1_smoketest
-
-smoketest_build_jade_v2:
- before_script:
- - cp production/sdkconfig_jade_v2s3_smoketest.defaults sdkconfig.defaults
- extends: .test_build_template
- after_script:
- - mv build build_v2_smoketest
-
-test_build_jade_ci:
- before_script:
- - cp configs/sdkconfig_jade_ci.defaults sdkconfig.defaults
- extends: .test_build_template
- after_script:
- - mv build build_jade_ci
-
-test_build_jade_v1_1_ci:
- before_script:
- - cp configs/sdkconfig_jade_v1_1_ci.defaults sdkconfig.defaults
- extends: .test_build_template
- after_script:
- - mv build build_jade_v1_1_ci
-
-test_build_jade_v2_ci:
- before_script:
- - cp configs/sdkconfig_jade_v2s3_ci.defaults sdkconfig.defaults
- extends: .test_build_template
- after_script:
- - mv build build_jade_v2_ci
-
-test_build_jade:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_jade.defaults sdkconfig.defaults
- after_script:
- - mv build build_jade
-
-test_build_jade_v1_1:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_jade_v1_1.defaults sdkconfig.defaults
- after_script:
- - mv build build_jade_v1_1
-
-test_build_jade_v2:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_jade_v2s3.defaults sdkconfig.defaults
- after_script:
- - mv build build_jade_v2
-
-test_build_jade_ndebug:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_jade_ndebug.defaults sdkconfig.defaults
- after_script:
- - mv build build_jade_ndebug
-
-test_build_jade_v1_1_ndebug:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_jade_v1_1_ndebug.defaults sdkconfig.defaults
- after_script:
- - mv build build_jade_v1_1_ndebug
-
-test_build_jade_v2_ndebug:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_jade_v2s3_ndebug.defaults sdkconfig.defaults
- after_script:
- - mv build build_jade_v2_ndebug
-
-test_build_display_m5fire:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_display_m5fire.defaults sdkconfig.defaults
- after_script:
- - mv build build_display_m5fire
-
-test_build_display_m5blackgray:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_display_m5blackgray.defaults sdkconfig.defaults
- after_script:
- - mv build build_display_m5blackgray
-
-test_build_display_m5core2:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_display_m5core2.defaults sdkconfig.defaults
- after_script:
- - mv build build_display_m5core2
-
-test_build_display_m5stickcplus:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_display_m5stickcplus.defaults sdkconfig.defaults
- after_script:
- - mv build build_display_m5stickcplus
-
-test_build_display_m5stickcplus2:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_display_m5stickcplus2.defaults sdkconfig.defaults
- after_script:
- - mv build build_display_m5stickcplus2
-
-test_build_display_m5cores3:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_display_m5cores3.defaults sdkconfig.defaults
- after_script:
- - mv build build_display_m5cores3
-
-test_build_display_twatchs3:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_display_ttgo_twatchs3.defaults sdkconfig.defaults
- after_script:
- - mv build build_display_twatchs3
-
-test_build_display_ttgo_tdisplay:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_display_ttgo_tdisplay.defaults sdkconfig.defaults
+ - cp components/esp32_bsdiff/bsdiff.* build/
after_script:
- - mv build build_display_ttgo_tdisplay
-
-test_build_display_ttgo_tdisplays3:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_display_ttgo_tdisplays3.defaults sdkconfig.defaults
- after_script:
- - mv build build_display_ttgo_tdisplays3
-
-test_build_display_ttgo_tdisplays3procamera:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_display_ttgo_tdisplays3procamera.defaults sdkconfig.defaults
- after_script:
- - mv build build_display_ttgo_tdisplays3procamera
-
-test_build_display_ttgo_tdisplays3_ci:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_display_ttgo_tdisplays3_ci.defaults sdkconfig.defaults
- after_script:
- - mv build build_display_ttgo_tdisplays3_ci
-
-test_build_diycam_esp32-cam:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_diycam_esp32-cam.defaults sdkconfig.defaults
- after_script:
- - mv build build_diycam_esp32-cam
-
-test_build_diycam_esp32-wrover-cam:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_diycam_esp32-wrover-cam.defaults sdkconfig.defaults
- after_script:
- - mv build build_diycam_esp32-wrover-cam
-
-test_build_diycam_tcameraplus:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_diycam_tcameraplus.defaults sdkconfig.defaults
- after_script:
- - mv build build_diycam_tcameraplus
-
-test_build_waveshare_touch_lcd2:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_display_waveshares3_touch_lcd2.defaults sdkconfig.defaults
- after_script:
- - mv build build_waveshare_touch_lcd2
-
-test_build_jade_noblobs_ci:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_jade_noradio_ci.defaults sdkconfig.defaults
- after_script:
- - mv build build_jade_noblobs_ci
-
-test_build_jade_v1_1_noblobs_ci:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_jade_v1_1_noradio_ci.defaults sdkconfig.defaults
- after_script:
- - mv build build_jade_v1_1_noblobs_ci
-
-test_build_jade_v2_noblobs_ci:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_jade_v2s3_noradio_ci.defaults sdkconfig.defaults
- after_script:
- - mv build build_jade_v2_noblobs_ci
-
-test_build_jade_noblobs:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_jade_noradio.defaults sdkconfig.defaults
- after_script:
- - mv build build_jade_noblobs
-
-test_build_jade_v1_1_noblobs:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_jade_v1_1_noradio.defaults sdkconfig.defaults
- after_script:
- - mv build build_jade_v1_1_noblobs
-
-test_build_jade_v2_noblobs:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_jade_v2s3_noradio.defaults sdkconfig.defaults
- after_script:
- - mv build build_jade_v2_noblobs
-
-test_build_jade_noblobs_ndebug:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_jade_noradio_ndebug.defaults sdkconfig.defaults
- after_script:
- - mv build build_jade_noblobs_ndebug
-
-test_build_jade_v1_1_noblobs_ndebug:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_jade_v1_1_noradio_ndebug.defaults sdkconfig.defaults
- after_script:
- - mv build build_jade_v1_1_noblobs_ndebug
-
-test_build_jade_v2_noblobs_ndebug:
- extends: .test_build_template
- before_script:
- - cp configs/sdkconfig_jade_v2s3_noradio_ndebug.defaults sdkconfig.defaults
- after_script:
- - mv build build_jade_v2_noblobs_ndebug
-
-test_flash_qemu:
- stage: deploy
- tags:
- - ga
- needs:
- - test_build_qemu
- before_script:
- - mv build_display_qemu build
- script:
- - ./main/qemu/make-flash-img.sh
- - ./main/qemu/qemu_ci_flash.sh
-
-test_flash_qemu_psram:
- stage: deploy
- tags:
- - ga
- needs:
- - test_build_qemu_psram
- before_script:
- - mv build_display_qemu_psram build
- script:
- - ./main/qemu/make-flash-img.sh
- - ./main/qemu/qemu_ci_flash.sh
-
-test_flash_qemu_psram_unamalgamated:
- stage: deploy
- tags:
- - ga
- needs:
- - test_build_qemu_psram_unamalgamated
- before_script:
- - mv build_display_qemu_psram_unamalgamated build
- script:
- - ./main/qemu/make-flash-img.sh
- - ./main/qemu/qemu_ci_flash.sh
-
-.test_flash_artifact_template:
- stage: deploy
- tags:
- - esp32flasher
- script:
- - cp build*/sdkconfig ./
- - ./ci_flash.sh
-
-.test_flash_artifact_template_v1_1:
- stage: deploy
- tags:
- - esp32flasher_v1_1
- script:
- - cp build*/sdkconfig ./
- - ./ci_flash.sh
-
-.test_flash_artifact_template_s3:
- stage: deploy
- tags:
- - esp32s3flasher
- variables:
- IDF_TOOLS_PATH: "/home/gitlab-runner/.idf/54"
- script:
- - cp build*/sdkconfig ./
- - . $HOME/esp/esp-idf-5.4/export.sh
- - ./ci_flash.sh esp32s3
-
-test_flash_artifact:
- extends: .test_flash_artifact_template
- needs:
- - test_build_jade_ci
- before_script:
- - mv build_jade_ci build
- allow_failure: true
-
-test_flash_artifacts3:
- extends: .test_flash_artifact_template_s3
- needs:
- - test_build_display_ttgo_tdisplays3_ci
- before_script:
- - mv build_display_ttgo_tdisplays3_ci build
-
-# gcov support is non-functional at present
-#test_gcov:
-# # for now this only works on s3
-# tags:
-# - esp32s3flasher
-# stage: build
-# variables:
-# IDF_TOOLS_PATH: "/home/gitlab-runner/.idf/54"
-# script:
-# - cp configs/sdkconfig_display_ttgo_tdisplays3_gcov_ci.defaults sdkconfig.defaults
-# - . $HOME/esp/esp-idf-5.4/export.sh
-# - idf.py all size-components size
-# - ./tools/fwprep.py build/jade.bin build
-# - ./tools/mkindex.py build $(basename $(ls build/*_fw.bin) | cut -d'_' -f1)
-# - cp sdkconfig build/
-# - cp components/esp32_bsdiff/bsdiff.h build/
-# - cp components/esp32_bsdiff/bsdiff.c build/
-# - cp build*/sdkconfig ./
-# - ./ci_flash.sh esp32s3
-# artifacts:
-# expire_in: 2 weeks
-# when: on_success
-# paths:
-# - build*/coverage_report/*
-# allow_failure: true
-
-test_flash_artifact_ota_delta:
- stage: deploy
- tags:
- - esp32flasher
- needs:
- - test_build_jade_ci
- - test_build_jade_noblobs_ci
- before_script:
- - mv build_jade_noblobs_ci build_noblobs
- - mv build_jade_ci build
- script:
- - ./ota_delta_ci.sh
- allow_failure: true
-
-test_flash_artifact_ota_delta_v1_1:
- stage: deploy
- tags:
- - esp32flasher_v1_1
- needs:
- - test_build_jade_v1_1_ci
- - test_build_jade_v1_1_noblobs_ci
- before_script:
- - mv build_jade_v1_1_noblobs_ci build_noblobs
- - mv build_jade_v1_1_ci build
- script:
- - ./ota_delta_ci.sh
-
-test_flash_artifact_noblobs:
- extends: .test_flash_artifact_template
- needs:
- - test_build_jade_noblobs_ci
- before_script:
- - mv build_jade_noblobs_ci build
- allow_failure: true
-
-test_flash_artifact_v1_1:
- extends: .test_flash_artifact_template_v1_1
- needs:
- - test_build_jade_v1_1_ci
- before_script:
- - mv build_jade_v1_1_ci build
-
-test_flash_artifact_noblobs_v1_1:
- extends: .test_flash_artifact_template_v1_1
- needs:
- - test_build_jade_v1_1_noblobs_ci
- before_script:
- - mv build_jade_v1_1_noblobs_ci build
-
-build_jadepy_wheel:
- tags:
- - ga
- stage: build
- artifacts:
- expire_in: 14 days
- name: jadepy
- when: on_success
- paths:
- - dist
- script:
- - cd $CI_PROJECT_DIR
- - apt install -yqq python3-venv
- - virtualenv -p python3 venv
- - source venv/bin/activate
- - pip install build
- - python -m build
- - deactivate
- - rm -rf venv
-
-build_api_docs:
- tags:
- - ga
- stage: build
- artifacts:
- expire_in: 14 days
- name: jade-apidocs
- when: on_success
- paths:
- - apidocs.tar.gz
- script:
- - (cd docs && make html)
- - (cd docs/_build && tar czf ../../apidocs.tar.gz html/)
+ - mv build $CI_JOB_NAME
diff --git a/README.md b/README.md
index 37ad37e..fc63272 100644
--- a/README.md
+++ b/README.md
@@ -192,6 +192,7 @@ cd /jade
rm -fr sdkconfig
cp configs/sdkconfig_qemu.defaults sdkconfig.defaults
idf.py all
+cp components/esp32_bsdiff/bsdiff.* build/
apt-get update -qq && apt-get install virtualenv -yqq
virtualenv -p python3 ./venv3
source ./venv3/bin/activate
diff --git a/ci_flash.sh b/ci_flash.sh
index a7e48d0..ff53f3f 100755
--- a/ci_flash.sh
+++ b/ci_flash.sh
@@ -12,19 +12,20 @@ if [[ -z ${JADESERIALPORT} ]]; then
fi
TARGET_CHIP=${1:-esp32}
+BUILD_DIR=${2:-build}
if [ "$TARGET_CHIP" = "esp32" ]; then
python ${IDF_PATH}/components/esptool_py/esptool/esptool.py --chip ${TARGET_CHIP} --port ${JADESERIALPORT} --baud 2000000 --before default_reset erase_flash
- python ${IDF_PATH}/components/esptool_py/esptool/esptool.py --chip ${TARGET_CHIP} --port ${JADESERIALPORT} --baud 2000000 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 40m --flash_size detect 0xE000 build/ota_data_initial.bin 0x1000 build/bootloader/bootloader.bin 0x10000 build/jade.bin 0x9000 build/partition_table/partition-table.bin
+ python ${IDF_PATH}/components/esptool_py/esptool/esptool.py --chip ${TARGET_CHIP} --port ${JADESERIALPORT} --baud 2000000 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 40m --flash_size detect 0xE000 ${BUILD_DIR}/ota_data_initial.bin 0x1000 ${BUILD_DIR}/bootloader/bootloader.bin 0x10000 ${BUILD_DIR}/jade.bin 0x9000 ${BUILD_DIR}/partition_table/partition-table.bin
else
python ${IDF_PATH}/components/esptool_py/esptool/esptool.py --chip ${TARGET_CHIP} --port ${JADESERIALPORT} --baud 460800 --before default_reset erase_flash
- python ${IDF_PATH}/components/esptool_py/esptool/esptool.py --chip ${TARGET_CHIP} --port ${JADESERIALPORT} --baud 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 80m --flash_size 8MB 0x0 build/bootloader/bootloader.bin 0x20000 build/jade.bin 0x8000 build/partition_table/partition-table.bin 0x1a000 build/ota_data_initial.bin
+ python ${IDF_PATH}/components/esptool_py/esptool/esptool.py --chip ${TARGET_CHIP} --port ${JADESERIALPORT} --baud 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 80m --flash_size 8MB 0x0 ${BUILD_DIR}/bootloader/bootloader.bin 0x20000 ${BUILD_DIR}/jade.bin 0x8000 ${BUILD_DIR}/partition_table/partition-table.bin 0x1a000 ${BUILD_DIR}/ota_data_initial.bin
fi
sleep 1
-if fgrep -qs "CONFIG_APPTRACE_GCOV_ENABLE=y" build/sdkconfig sdkconfig; then
+if fgrep -qs "CONFIG_APPTRACE_GCOV_ENABLE=y" ${BUILD_DIR}/sdkconfig sdkconfig; then
cleanup() {
killall -9 openocd || true
}
@@ -60,7 +61,7 @@ source ~/venv3/bin/activate
pip install --require-hashes -r requirements.txt
# NOTE: tools/fwprep.py should have run in the build step and produced the compressed firmware file
-FW_FULL=$(ls build/*_fw.bin)
+FW_FULL=$(ls ${BUILD_DIR}/*_fw.bin)
python jade_ota.py --push-mnemonic --log=INFO --serialport=${JADESERIALPORT} --fwfile=${FW_FULL}
sleep 5
@@ -69,7 +70,7 @@ python -c "from jadepy import JadeAPI; jade = JadeAPI.create_serial(device=\"${J
python test_jade.py --log=INFO --serialport=${JADESERIALPORT}
# check if gcov is enabled and run collection tool
-if fgrep -qs "CONFIG_APPTRACE_GCOV_ENABLE=y" build/sdkconfig sdkconfig; then
+if fgrep -qs "CONFIG_APPTRACE_GCOV_ENABLE=y" ${BUILD_DIR}/sdkconfig sdkconfig; then
./tools/gcov/generate_report.sh
killall -9 openocd || true
fi
diff --git a/configs/sdkconfig_dev_jade.defaults b/configs/sdkconfig_dev_jade.defaults
new file mode 100644
index 0000000..970e7d9
--- /dev/null
+++ b/configs/sdkconfig_dev_jade.defaults
@@ -0,0 +1,106 @@
+CONFIG_ADC_CAL_EFUSE_TP_ENABLE=n
+CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=n
+CONFIG_ADC_CAL_LUT_ENABLE=n
+CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y
+CONFIG_APP_REPRODUCIBLE_BUILD=y
+CONFIG_BF20A6_SUPPORT=n
+CONFIG_BF3005_SUPPORT=n
+CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
+CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
+CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
+CONFIG_BOOTLOADER_WDT_ENABLE=n
+CONFIG_BTDM_CTRL_BLE_MAX_CONN=1
+CONFIG_BTDM_CTRL_FULL_SCAN_SUPPORTED=n
+CONFIG_BT_ENABLED=y
+CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517
+CONFIG_BT_NIMBLE_ENABLED=y
+CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11
+CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=5632
+CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
+CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y
+CONFIG_BT_NIMBLE_NVS_PERSIST=y
+CONFIG_BT_NIMBLE_ROLE_BROADCASTER=n
+CONFIG_BT_NIMBLE_ROLE_CENTRAL=n
+CONFIG_BT_NIMBLE_ROLE_OBSERVER=n
+CONFIG_BT_NIMBLE_SM_LEGACY=n
+CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j"
+CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
+CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
+CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
+CONFIG_COMPILER_OPTIMIZATION_SIZE=y
+CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
+CONFIG_COMPILER_WARN_WRITE_STRINGS=y
+CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=y
+CONFIG_ESP32_REV_MIN_3=y
+CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO=y
+CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
+CONFIG_ESP_COEX_SW_COEXIST_ENABLE=n
+CONFIG_ESP_CONSOLE_NONE=y
+CONFIG_ESP_DEBUG_OCDAWARE=n
+CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
+CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
+CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=n
+CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
+CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
+CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y
+CONFIG_ESP_TASK_WDT_INIT=n
+CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
+CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
+CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=0
+CONFIG_ESP_WIFI_MGMT_SBUF_NUM=6
+CONFIG_ESP_WIFI_NVS_ENABLED=n
+CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=2
+CONFIG_ETH_USE_ESP32_EMAC=n
+CONFIG_ETH_USE_SPI_ETHERNET=n
+CONFIG_FATFS_ALLOC_PREFER_EXTRAM=n
+CONFIG_FATFS_PER_FILE_CACHE=n
+CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2048
+CONFIG_FREERTOS_INTERRUPT_BACKTRACE=n
+CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
+CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2560
+CONFIG_GC032A_SUPPORT=n
+CONFIG_GC2145_SUPPORT=n
+CONFIG_HTTPD_ERR_RESP_NO_DELAY=n
+CONFIG_LOG_DEFAULT_LEVEL_NONE=y
+CONFIG_LWIP_DHCPS=n
+CONFIG_LWIP_IPV6=n
+CONFIG_LWIP_NETIF_LOOPBACK=n
+CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=n
+CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
+CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=n
+CONFIG_MBEDTLS_HARDWARE_MPI=n
+CONFIG_MBEDTLS_HAVE_TIME=n
+CONFIG_MBEDTLS_PEM_PARSE_C=n
+CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=n
+CONFIG_MBEDTLS_SSL_ALPN=n
+CONFIG_MBEDTLS_SSL_RENEGOTIATION=n
+CONFIG_MBEDTLS_X509_CRL_PARSE_C=n
+CONFIG_MBEDTLS_X509_CSR_PARSE_C=n
+CONFIG_MQTT_PROTOCOL_311=n
+CONFIG_MQTT_TRANSPORT_SSL=n
+CONFIG_NEWLIB_NANO_FORMAT=y
+CONFIG_NT99141_SUPPORT=n
+CONFIG_OV3660_SUPPORT=n
+CONFIG_OV5640_SUPPORT=n
+CONFIG_OV7670_SUPPORT=n
+CONFIG_OV7725_SUPPORT=n
+CONFIG_PARTITION_TABLE_CUSTOM=y
+CONFIG_PARTITION_TABLE_OFFSET=0x9000
+CONFIG_SC030IOT_SUPPORT=n
+CONFIG_SCCB_CLK_FREQ=200000
+CONFIG_SPIFFS_CACHE=n
+CONFIG_SPIFFS_GC_MAX_RUNS=1
+CONFIG_SPIFFS_MAX_PARTITIONS=1
+CONFIG_SPIFFS_PAGE_CHECK=n
+CONFIG_SPIFFS_USE_MAGIC=n
+CONFIG_SPIFFS_USE_MTIME=n
+CONFIG_SPIRAM=y
+CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
+CONFIG_SPIRAM_BANKSWITCH_ENABLE=n
+CONFIG_SPIRAM_MEMTEST=n
+CONFIG_UART_ISR_IN_IRAM=y
+CONFIG_UNITY_ENABLE_DOUBLE=n
+CONFIG_UNITY_ENABLE_FLOAT=n
+CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=n
+CONFIG_VFS_SUPPORT_IO=n
+CONFIG_WS_TRANSPORT=n
diff --git a/configs/sdkconfig_dev_jade_noradio.defaults b/configs/sdkconfig_dev_jade_noradio.defaults
new file mode 100644
index 0000000..69e4454
--- /dev/null
+++ b/configs/sdkconfig_dev_jade_noradio.defaults
@@ -0,0 +1,94 @@
+CONFIG_ADC_CAL_EFUSE_TP_ENABLE=n
+CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=n
+CONFIG_ADC_CAL_LUT_ENABLE=n
+CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y
+CONFIG_APP_NO_BLOBS=y
+CONFIG_APP_REPRODUCIBLE_BUILD=y
+CONFIG_BF20A6_SUPPORT=n
+CONFIG_BF3005_SUPPORT=n
+CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
+CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
+CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
+CONFIG_BOOTLOADER_WDT_ENABLE=n
+CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
+CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
+CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
+CONFIG_COMPILER_OPTIMIZATION_SIZE=y
+CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
+CONFIG_COMPILER_WARN_WRITE_STRINGS=y
+CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=y
+CONFIG_ESP32_REV_MIN_3=y
+CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO=y
+CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
+CONFIG_ESP_CONSOLE_NONE=y
+CONFIG_ESP_DEBUG_OCDAWARE=n
+CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
+CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
+CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=n
+CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
+CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
+CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y
+CONFIG_ESP_TASK_WDT_INIT=n
+CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
+CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
+CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=0
+CONFIG_ESP_WIFI_IRAM_OPT=n
+CONFIG_ESP_WIFI_MGMT_SBUF_NUM=6
+CONFIG_ESP_WIFI_NVS_ENABLED=n
+CONFIG_ESP_WIFI_RX_IRAM_OPT=n
+CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=2
+CONFIG_ETH_USE_ESP32_EMAC=n
+CONFIG_ETH_USE_SPI_ETHERNET=n
+CONFIG_FATFS_ALLOC_PREFER_EXTRAM=n
+CONFIG_FATFS_PER_FILE_CACHE=n
+CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2048
+CONFIG_FREERTOS_INTERRUPT_BACKTRACE=n
+CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
+CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2560
+CONFIG_GC032A_SUPPORT=n
+CONFIG_GC2145_SUPPORT=n
+CONFIG_HTTPD_ERR_RESP_NO_DELAY=n
+CONFIG_LOG_DEFAULT_LEVEL_NONE=y
+CONFIG_LWIP_DHCPS=n
+CONFIG_LWIP_IPV6=n
+CONFIG_LWIP_NETIF_LOOPBACK=n
+CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=n
+CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
+CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=n
+CONFIG_MBEDTLS_ECP_RESTARTABLE=y
+CONFIG_MBEDTLS_HARDWARE_MPI=n
+CONFIG_MBEDTLS_HAVE_TIME=n
+CONFIG_MBEDTLS_PEM_PARSE_C=n
+CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=n
+CONFIG_MBEDTLS_SSL_ALPN=n
+CONFIG_MBEDTLS_SSL_RENEGOTIATION=n
+CONFIG_MBEDTLS_X509_CRL_PARSE_C=n
+CONFIG_MBEDTLS_X509_CSR_PARSE_C=n
+CONFIG_MQTT_PROTOCOL_311=n
+CONFIG_MQTT_TRANSPORT_SSL=n
+CONFIG_NEWLIB_NANO_FORMAT=y
+CONFIG_NT99141_SUPPORT=n
+CONFIG_OV3660_SUPPORT=n
+CONFIG_OV5640_SUPPORT=n
+CONFIG_OV7670_SUPPORT=n
+CONFIG_OV7725_SUPPORT=n
+CONFIG_PARTITION_TABLE_CUSTOM=y
+CONFIG_PARTITION_TABLE_OFFSET=0x9000
+CONFIG_SC030IOT_SUPPORT=n
+CONFIG_SCCB_CLK_FREQ=200000
+CONFIG_SPIFFS_CACHE=n
+CONFIG_SPIFFS_GC_MAX_RUNS=1
+CONFIG_SPIFFS_MAX_PARTITIONS=1
+CONFIG_SPIFFS_PAGE_CHECK=n
+CONFIG_SPIFFS_USE_MAGIC=n
+CONFIG_SPIFFS_USE_MTIME=n
+CONFIG_SPIRAM=y
+CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
+CONFIG_SPIRAM_BANKSWITCH_ENABLE=n
+CONFIG_SPIRAM_MEMTEST=n
+CONFIG_UART_ISR_IN_IRAM=y
+CONFIG_UNITY_ENABLE_DOUBLE=n
+CONFIG_UNITY_ENABLE_FLOAT=n
+CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=n
+CONFIG_VFS_SUPPORT_IO=n
+CONFIG_WS_TRANSPORT=n
diff --git a/configs/sdkconfig_dev_jade_v1_1.defaults b/configs/sdkconfig_dev_jade_v1_1.defaults
new file mode 100644
index 0000000..705077b
--- /dev/null
+++ b/configs/sdkconfig_dev_jade_v1_1.defaults
@@ -0,0 +1,107 @@
+CONFIG_ADC_CAL_EFUSE_TP_ENABLE=n
+CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=n
+CONFIG_ADC_CAL_LUT_ENABLE=n
+CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y
+CONFIG_APP_REPRODUCIBLE_BUILD=y
+CONFIG_BF20A6_SUPPORT=n
+CONFIG_BF3005_SUPPORT=n
+CONFIG_BOARD_TYPE_JADE_V1_1=y
+CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
+CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
+CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
+CONFIG_BOOTLOADER_WDT_ENABLE=n
+CONFIG_BTDM_CTRL_BLE_MAX_CONN=1
+CONFIG_BTDM_CTRL_FULL_SCAN_SUPPORTED=n
+CONFIG_BT_ENABLED=y
+CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517
+CONFIG_BT_NIMBLE_ENABLED=y
+CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11
+CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=5632
+CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
+CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y
+CONFIG_BT_NIMBLE_NVS_PERSIST=y
+CONFIG_BT_NIMBLE_ROLE_BROADCASTER=n
+CONFIG_BT_NIMBLE_ROLE_CENTRAL=n
+CONFIG_BT_NIMBLE_ROLE_OBSERVER=n
+CONFIG_BT_NIMBLE_SM_LEGACY=n
+CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j"
+CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
+CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
+CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
+CONFIG_COMPILER_OPTIMIZATION_SIZE=y
+CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
+CONFIG_COMPILER_WARN_WRITE_STRINGS=y
+CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=y
+CONFIG_ESP32_REV_MIN_3=y
+CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO=y
+CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
+CONFIG_ESP_COEX_SW_COEXIST_ENABLE=n
+CONFIG_ESP_CONSOLE_NONE=y
+CONFIG_ESP_DEBUG_OCDAWARE=n
+CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
+CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
+CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=n
+CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
+CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
+CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y
+CONFIG_ESP_TASK_WDT_INIT=n
+CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
+CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
+CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=0
+CONFIG_ESP_WIFI_MGMT_SBUF_NUM=6
+CONFIG_ESP_WIFI_NVS_ENABLED=n
+CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=2
+CONFIG_ETH_USE_ESP32_EMAC=n
+CONFIG_ETH_USE_SPI_ETHERNET=n
+CONFIG_FATFS_ALLOC_PREFER_EXTRAM=n
+CONFIG_FATFS_PER_FILE_CACHE=n
+CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2048
+CONFIG_FREERTOS_INTERRUPT_BACKTRACE=n
+CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
+CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2560
+CONFIG_GC032A_SUPPORT=n
+CONFIG_GC2145_SUPPORT=n
+CONFIG_HTTPD_ERR_RESP_NO_DELAY=n
+CONFIG_LOG_DEFAULT_LEVEL_NONE=y
+CONFIG_LWIP_DHCPS=n
+CONFIG_LWIP_IPV6=n
+CONFIG_LWIP_NETIF_LOOPBACK=n
+CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=n
+CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
+CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=n
+CONFIG_MBEDTLS_HARDWARE_MPI=n
+CONFIG_MBEDTLS_HAVE_TIME=n
+CONFIG_MBEDTLS_PEM_PARSE_C=n
+CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=n
+CONFIG_MBEDTLS_SSL_ALPN=n
+CONFIG_MBEDTLS_SSL_RENEGOTIATION=n
+CONFIG_MBEDTLS_X509_CRL_PARSE_C=n
+CONFIG_MBEDTLS_X509_CSR_PARSE_C=n
+CONFIG_MQTT_PROTOCOL_311=n
+CONFIG_MQTT_TRANSPORT_SSL=n
+CONFIG_NEWLIB_NANO_FORMAT=y
+CONFIG_NT99141_SUPPORT=n
+CONFIG_OV3660_SUPPORT=n
+CONFIG_OV5640_SUPPORT=n
+CONFIG_OV7670_SUPPORT=n
+CONFIG_OV7725_SUPPORT=n
+CONFIG_PARTITION_TABLE_CUSTOM=y
+CONFIG_PARTITION_TABLE_OFFSET=0x9000
+CONFIG_SC030IOT_SUPPORT=n
+CONFIG_SCCB_CLK_FREQ=200000
+CONFIG_SPIFFS_CACHE=n
+CONFIG_SPIFFS_GC_MAX_RUNS=1
+CONFIG_SPIFFS_MAX_PARTITIONS=1
+CONFIG_SPIFFS_PAGE_CHECK=n
+CONFIG_SPIFFS_USE_MAGIC=n
+CONFIG_SPIFFS_USE_MTIME=n
+CONFIG_SPIRAM=y
+CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
+CONFIG_SPIRAM_BANKSWITCH_ENABLE=n
+CONFIG_SPIRAM_MEMTEST=n
+CONFIG_UART_ISR_IN_IRAM=y
+CONFIG_UNITY_ENABLE_DOUBLE=n
+CONFIG_UNITY_ENABLE_FLOAT=n
+CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=n
+CONFIG_VFS_SUPPORT_IO=n
+CONFIG_WS_TRANSPORT=n
diff --git a/configs/sdkconfig_dev_jade_v1_1_noradio.defaults b/configs/sdkconfig_dev_jade_v1_1_noradio.defaults
new file mode 100644
index 0000000..4ffc395
--- /dev/null
+++ b/configs/sdkconfig_dev_jade_v1_1_noradio.defaults
@@ -0,0 +1,95 @@
+CONFIG_ADC_CAL_EFUSE_TP_ENABLE=n
+CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=n
+CONFIG_ADC_CAL_LUT_ENABLE=n
+CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y
+CONFIG_APP_NO_BLOBS=y
+CONFIG_APP_REPRODUCIBLE_BUILD=y
+CONFIG_BF20A6_SUPPORT=n
+CONFIG_BF3005_SUPPORT=n
+CONFIG_BOARD_TYPE_JADE_V1_1=y
+CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
+CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
+CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
+CONFIG_BOOTLOADER_WDT_ENABLE=n
+CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
+CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
+CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
+CONFIG_COMPILER_OPTIMIZATION_SIZE=y
+CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
+CONFIG_COMPILER_WARN_WRITE_STRINGS=y
+CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=y
+CONFIG_ESP32_REV_MIN_3=y
+CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO=y
+CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
+CONFIG_ESP_CONSOLE_NONE=y
+CONFIG_ESP_DEBUG_OCDAWARE=n
+CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
+CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
+CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=n
+CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
+CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
+CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y
+CONFIG_ESP_TASK_WDT_INIT=n
+CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
+CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
+CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=0
+CONFIG_ESP_WIFI_IRAM_OPT=n
+CONFIG_ESP_WIFI_MGMT_SBUF_NUM=6
+CONFIG_ESP_WIFI_NVS_ENABLED=n
+CONFIG_ESP_WIFI_RX_IRAM_OPT=n
+CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=2
+CONFIG_ETH_USE_ESP32_EMAC=n
+CONFIG_ETH_USE_SPI_ETHERNET=n
+CONFIG_FATFS_ALLOC_PREFER_EXTRAM=n
+CONFIG_FATFS_PER_FILE_CACHE=n
+CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2048
+CONFIG_FREERTOS_INTERRUPT_BACKTRACE=n
+CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
+CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2560
+CONFIG_GC032A_SUPPORT=n
+CONFIG_GC2145_SUPPORT=n
+CONFIG_HTTPD_ERR_RESP_NO_DELAY=n
+CONFIG_LOG_DEFAULT_LEVEL_NONE=y
+CONFIG_LWIP_DHCPS=n
+CONFIG_LWIP_IPV6=n
+CONFIG_LWIP_NETIF_LOOPBACK=n
+CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=n
+CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
+CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=n
+CONFIG_MBEDTLS_ECP_RESTARTABLE=y
+CONFIG_MBEDTLS_HARDWARE_MPI=n
+CONFIG_MBEDTLS_HAVE_TIME=n
+CONFIG_MBEDTLS_PEM_PARSE_C=n
+CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=n
+CONFIG_MBEDTLS_SSL_ALPN=n
+CONFIG_MBEDTLS_SSL_RENEGOTIATION=n
+CONFIG_MBEDTLS_X509_CRL_PARSE_C=n
+CONFIG_MBEDTLS_X509_CSR_PARSE_C=n
+CONFIG_MQTT_PROTOCOL_311=n
+CONFIG_MQTT_TRANSPORT_SSL=n
+CONFIG_NEWLIB_NANO_FORMAT=y
+CONFIG_NT99141_SUPPORT=n
+CONFIG_OV3660_SUPPORT=n
+CONFIG_OV5640_SUPPORT=n
+CONFIG_OV7670_SUPPORT=n
+CONFIG_OV7725_SUPPORT=n
+CONFIG_PARTITION_TABLE_CUSTOM=y
+CONFIG_PARTITION_TABLE_OFFSET=0x9000
+CONFIG_SC030IOT_SUPPORT=n
+CONFIG_SCCB_CLK_FREQ=200000
+CONFIG_SPIFFS_CACHE=n
+CONFIG_SPIFFS_GC_MAX_RUNS=1
+CONFIG_SPIFFS_MAX_PARTITIONS=1
+CONFIG_SPIFFS_PAGE_CHECK=n
+CONFIG_SPIFFS_USE_MAGIC=n
+CONFIG_SPIFFS_USE_MTIME=n
+CONFIG_SPIRAM=y
+CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
+CONFIG_SPIRAM_BANKSWITCH_ENABLE=n
+CONFIG_SPIRAM_MEMTEST=n
+CONFIG_UART_ISR_IN_IRAM=y
+CONFIG_UNITY_ENABLE_DOUBLE=n
+CONFIG_UNITY_ENABLE_FLOAT=n
+CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=n
+CONFIG_VFS_SUPPORT_IO=n
+CONFIG_WS_TRANSPORT=n
diff --git a/configs/sdkconfig_dev_jade_v2.defaults b/configs/sdkconfig_dev_jade_v2.defaults
new file mode 100644
index 0000000..a279231
--- /dev/null
+++ b/configs/sdkconfig_dev_jade_v2.defaults
@@ -0,0 +1,83 @@
+CONFIG_APP_REPRODUCIBLE_BUILD=y
+CONFIG_BF20A6_SUPPORT=n
+CONFIG_BF3005_SUPPORT=n
+CONFIG_BOARD_TYPE_JADE_V2=y
+CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
+CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
+CONFIG_BOOTLOADER_WDT_ENABLE=n
+CONFIG_BT_ENABLED=y
+CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517
+CONFIG_BT_NIMBLE_ENABLED=y
+CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11
+CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=5632
+CONFIG_BT_NIMBLE_LOG_LEVEL_NONE=y
+CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
+CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y
+CONFIG_BT_NIMBLE_NVS_PERSIST=y
+CONFIG_BT_NIMBLE_ROLE_BROADCASTER=n
+CONFIG_BT_NIMBLE_ROLE_CENTRAL=n
+CONFIG_BT_NIMBLE_ROLE_OBSERVER=n
+CONFIG_BT_NIMBLE_SM_LEGACY=n
+CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j"
+CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
+CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
+CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
+CONFIG_COMPILER_OPTIMIZATION_SIZE=y
+CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
+CONFIG_COMPILER_WARN_WRITE_STRINGS=y
+CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
+CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
+CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
+CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
+CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
+CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
+CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=n
+CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=n
+CONFIG_ESP_SYSTEM_BBPLL_RECALIB=n
+CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
+CONFIG_ESP_TASK_WDT_EN=n
+CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
+CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
+CONFIG_ESP_WIFI_IRAM_OPT=n
+CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=n
+CONFIG_ESP_WIFI_NVS_ENABLED=n
+CONFIG_ESP_WIFI_RX_IRAM_OPT=n
+CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
+CONFIG_FATFS_LFN_HEAP=y
+CONFIG_FATFS_VFS_FSTAT_BLKSIZE=4096
+CONFIG_FATFS_VOLUME_COUNT=1
+CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
+CONFIG_GC032A_SUPPORT=n
+CONFIG_GC2145_SUPPORT=n
+CONFIG_IDF_TARGET="esp32s3"
+CONFIG_LOG_DEFAULT_LEVEL_NONE=y
+CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
+CONFIG_NEWLIB_NANO_FORMAT=y
+CONFIG_NT99141_SUPPORT=n
+CONFIG_OV2640_SUPPORT=n
+CONFIG_OV3660_SUPPORT=n
+CONFIG_OV5640_SUPPORT=n
+CONFIG_OV7670_SUPPORT=n
+CONFIG_OV7725_SUPPORT=n
+CONFIG_PARTITION_TABLE_CUSTOM=y
+CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitionss3.csv"
+CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
+CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=n
+CONFIG_SC030IOT_SUPPORT=n
+CONFIG_SPIRAM=y
+CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
+CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
+CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=256
+CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536
+CONFIG_SPIRAM_MEMTEST=n
+CONFIG_SPIRAM_MODE_OCT=y
+CONFIG_SPIRAM_RODATA=y
+CONFIG_SPIRAM_SPEED_80M=y
+CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
+CONFIG_SPI_FLASH_VERIFY_WRITE=y
+CONFIG_SPI_MASTER_ISR_IN_IRAM=n
+CONFIG_SPI_SLAVE_ISR_IN_IRAM=n
+CONFIG_TINYUSB_CDC_ENABLED=y
+CONFIG_TINYUSB_CDC_RX_BUFSIZE=64
+CONFIG_TINYUSB_DESC_MANUFACTURER_STRING="Blockstream"
+CONFIG_TINYUSB_DESC_PRODUCT_STRING="Jade Plus"
diff --git a/configs/sdkconfig_dev_jade_v2_noradio.defaults b/configs/sdkconfig_dev_jade_v2_noradio.defaults
new file mode 100644
index 0000000..ec06bfe
--- /dev/null
+++ b/configs/sdkconfig_dev_jade_v2_noradio.defaults
@@ -0,0 +1,71 @@
+CONFIG_APP_NO_BLOBS=y
+CONFIG_APP_REPRODUCIBLE_BUILD=y
+CONFIG_BF20A6_SUPPORT=n
+CONFIG_BF3005_SUPPORT=n
+CONFIG_BOARD_TYPE_JADE_V2=y
+CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
+CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
+CONFIG_BOOTLOADER_WDT_ENABLE=n
+CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
+CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
+CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
+CONFIG_COMPILER_OPTIMIZATION_SIZE=y
+CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
+CONFIG_COMPILER_WARN_WRITE_STRINGS=y
+CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
+CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
+CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
+CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
+CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
+CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
+CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=n
+CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=n
+CONFIG_ESP_SYSTEM_BBPLL_RECALIB=n
+CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
+CONFIG_ESP_TASK_WDT_EN=n
+CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
+CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
+CONFIG_ESP_WIFI_IRAM_OPT=n
+CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=n
+CONFIG_ESP_WIFI_NVS_ENABLED=n
+CONFIG_ESP_WIFI_RX_IRAM_OPT=n
+CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
+CONFIG_FATFS_LFN_HEAP=y
+CONFIG_FATFS_VFS_FSTAT_BLKSIZE=4096
+CONFIG_FATFS_VOLUME_COUNT=1
+CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
+CONFIG_GC032A_SUPPORT=n
+CONFIG_GC2145_SUPPORT=n
+CONFIG_IDF_TARGET="esp32s3"
+CONFIG_LOG_DEFAULT_LEVEL_NONE=y
+CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
+CONFIG_MBEDTLS_ECP_RESTARTABLE=y
+CONFIG_NEWLIB_NANO_FORMAT=y
+CONFIG_NT99141_SUPPORT=n
+CONFIG_OV2640_SUPPORT=n
+CONFIG_OV3660_SUPPORT=n
+CONFIG_OV5640_SUPPORT=n
+CONFIG_OV7670_SUPPORT=n
+CONFIG_OV7725_SUPPORT=n
+CONFIG_PARTITION_TABLE_CUSTOM=y
+CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitionss3.csv"
+CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
+CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=n
+CONFIG_SC030IOT_SUPPORT=n
+CONFIG_SPIRAM=y
+CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
+CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
+CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=256
+CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536
+CONFIG_SPIRAM_MEMTEST=n
+CONFIG_SPIRAM_MODE_OCT=y
+CONFIG_SPIRAM_RODATA=y
+CONFIG_SPIRAM_SPEED_80M=y
+CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
+CONFIG_SPI_FLASH_VERIFY_WRITE=y
+CONFIG_SPI_MASTER_ISR_IN_IRAM=n
+CONFIG_SPI_SLAVE_ISR_IN_IRAM=n
+CONFIG_TINYUSB_CDC_ENABLED=y
+CONFIG_TINYUSB_CDC_RX_BUFSIZE=64
+CONFIG_TINYUSB_DESC_MANUFACTURER_STRING="Blockstream"
+CONFIG_TINYUSB_DESC_PRODUCT_STRING="Jade Plus"
diff --git a/configs/sdkconfig_display_ttgo_tdisplays3_ci.defaults b/configs/sdkconfig_display_ttgo_tdisplays3_ci.defaults
deleted file mode 100644
index f8e306e..0000000
--- a/configs/sdkconfig_display_ttgo_tdisplays3_ci.defaults
+++ /dev/null
@@ -1,88 +0,0 @@
-CONFIG_APP_REPRODUCIBLE_BUILD=y
-CONFIG_BF20A6_SUPPORT=n
-CONFIG_BF3005_SUPPORT=n
-CONFIG_BOARD_TYPE_TTGO_TDISPLAYS3=y
-CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
-CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=n
-CONFIG_BT_ENABLED=y
-CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517
-CONFIG_BT_NIMBLE_ENABLED=y
-CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11
-CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=5632
-CONFIG_BT_NIMBLE_LOG_LEVEL_NONE=y
-CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
-CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y
-CONFIG_BT_NIMBLE_NVS_PERSIST=y
-CONFIG_BT_NIMBLE_ROLE_BROADCASTER=n
-CONFIG_BT_NIMBLE_ROLE_CENTRAL=n
-CONFIG_BT_NIMBLE_ROLE_OBSERVER=n
-CONFIG_BT_NIMBLE_SM_LEGACY=n
-CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j"
-CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
-CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
-CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
-CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
-CONFIG_COMPILER_WARN_WRITE_STRINGS=y
-CONFIG_DEBUG_MODE=y
-CONFIG_DEBUG_UNATTENDED_CI=y
-CONFIG_DISPLAY_FULL_FRAME_BUFFER_DOUBLE=n
-CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
-CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
-CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
-CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=n
-CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=n
-CONFIG_ESP_SYSTEM_BBPLL_RECALIB=n
-CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
-CONFIG_ESP_TASK_WDT_EN=n
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
-CONFIG_ESP_WIFI_IRAM_OPT=n
-CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=n
-CONFIG_ESP_WIFI_NVS_ENABLED=n
-CONFIG_ESP_WIFI_RX_IRAM_OPT=n
-CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
-CONFIG_FATFS_LFN_HEAP=y
-CONFIG_FATFS_VFS_FSTAT_BLKSIZE=4096
-CONFIG_FATFS_VOLUME_COUNT=1
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
-CONFIG_GC0308_SUPPORT=n
-CONFIG_GC032A_SUPPORT=n
-CONFIG_GC2145_SUPPORT=n
-CONFIG_IDF_TARGET="esp32s3"
-CONFIG_JADE_USE_USB_JTAG_SERIAL=y
-CONFIG_LOG_DEFAULT_LEVEL_NONE=y
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
-CONFIG_NEWLIB_NANO_FORMAT=y
-CONFIG_NEWLIB_STDIN_LINE_ENDING_LF=y
-CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF=y
-CONFIG_NT99141_SUPPORT=n
-CONFIG_OV2640_SUPPORT=n
-CONFIG_OV3660_SUPPORT=n
-CONFIG_OV5640_SUPPORT=n
-CONFIG_OV7670_SUPPORT=n
-CONFIG_OV7725_SUPPORT=n
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitionss3.csv"
-CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
-CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=n
-CONFIG_SC030IOT_SUPPORT=n
-CONFIG_SPIRAM=y
-CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
-CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
-CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=256
-CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536
-CONFIG_SPIRAM_MEMTEST=n
-CONFIG_SPIRAM_MODE_OCT=y
-CONFIG_SPIRAM_RODATA=y
-CONFIG_SPIRAM_SPEED_80M=y
-CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
-CONFIG_SPI_FLASH_VERIFY_WRITE=y
-CONFIG_SPI_MASTER_ISR_IN_IRAM=n
-CONFIG_SPI_SLAVE_ISR_IN_IRAM=n
-CONFIG_TINYUSB_CDC_ENABLED=y
-CONFIG_TINYUSB_CDC_RX_BUFSIZE=64
diff --git a/configs/sdkconfig_display_ttgo_tdisplays3_gcov_ci.defaults b/configs/sdkconfig_display_ttgo_tdisplays3_gcov_ci.defaults
deleted file mode 100644
index 47aff06..0000000
--- a/configs/sdkconfig_display_ttgo_tdisplays3_gcov_ci.defaults
+++ /dev/null
@@ -1,74 +0,0 @@
-CONFIG_APPTRACE_DEST_JTAG=y
-CONFIG_APPTRACE_GCOV_DUMP_TASK_STACK_SIZE=4096
-CONFIG_APPTRACE_GCOV_ENABLE=y
-CONFIG_APPTRACE_PENDING_DATA_SIZE_MAX=1024
-CONFIG_APP_NO_BLOBS=y
-CONFIG_APP_REPRODUCIBLE_BUILD=y
-CONFIG_BF20A6_SUPPORT=n
-CONFIG_BF3005_SUPPORT=n
-CONFIG_BOARD_TYPE_TTGO_TDISPLAYS3=y
-CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
-CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=n
-CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
-CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
-CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
-CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
-CONFIG_COMPILER_WARN_WRITE_STRINGS=y
-CONFIG_DEBUG_MODE=y
-CONFIG_DEBUG_UNATTENDED_CI=y
-CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
-CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
-CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
-CONFIG_ESP_PANIC_HANDLER_IRAM=y
-CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=n
-CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=n
-CONFIG_ESP_SYSTEM_BBPLL_RECALIB=n
-CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
-CONFIG_ESP_TASK_WDT_EN=n
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
-CONFIG_ESP_WIFI_IRAM_OPT=n
-CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=n
-CONFIG_ESP_WIFI_NVS_ENABLED=n
-CONFIG_ESP_WIFI_RX_IRAM_OPT=n
-CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
-CONFIG_FATFS_LFN_HEAP=y
-CONFIG_FATFS_VFS_FSTAT_BLKSIZE=4096
-CONFIG_FATFS_VOLUME_COUNT=1
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
-CONFIG_GC0308_SUPPORT=n
-CONFIG_GC032A_SUPPORT=n
-CONFIG_GC2145_SUPPORT=n
-CONFIG_IDF_EXPERIMENTAL_FEATURES=y
-CONFIG_IDF_TARGET="esp32s3"
-CONFIG_JADE_USE_USB_JTAG_SERIAL=y
-CONFIG_LOG_DEFAULT_LEVEL_NONE=y
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
-CONFIG_MBEDTLS_ECP_RESTARTABLE=y
-CONFIG_NEWLIB_NANO_FORMAT=y
-CONFIG_NEWLIB_STDIN_LINE_ENDING_LF=y
-CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF=y
-CONFIG_NT99141_SUPPORT=n
-CONFIG_OV2640_SUPPORT=n
-CONFIG_OV3660_SUPPORT=n
-CONFIG_OV5640_SUPPORT=n
-CONFIG_OV7670_SUPPORT=n
-CONFIG_OV7725_SUPPORT=n
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitionss3.csv"
-CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
-CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=n
-CONFIG_SC030IOT_SUPPORT=n
-CONFIG_SPIRAM=y
-CONFIG_SPIRAM_MODE_OCT=y
-CONFIG_SPIRAM_SPEED_80M=y
-CONFIG_SPI_FLASH_VERIFY_WRITE=y
-CONFIG_SPI_MASTER_ISR_IN_IRAM=n
-CONFIG_SPI_SLAVE_ISR_IN_IRAM=n
-CONFIG_TINYUSB_CDC_ENABLED=y
-CONFIG_TINYUSB_CDC_RX_BUFSIZE=64
diff --git a/configs/sdkconfig_jade_ci.defaults b/configs/sdkconfig_jade_ci.defaults
deleted file mode 100644
index 718a89f..0000000
--- a/configs/sdkconfig_jade_ci.defaults
+++ /dev/null
@@ -1,109 +0,0 @@
-CONFIG_ADC_CAL_EFUSE_TP_ENABLE=n
-CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=n
-CONFIG_ADC_CAL_LUT_ENABLE=n
-CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y
-CONFIG_APP_REPRODUCIBLE_BUILD=y
-CONFIG_BF20A6_SUPPORT=n
-CONFIG_BF3005_SUPPORT=n
-CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
-CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
-CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=n
-CONFIG_BTDM_CTRL_BLE_MAX_CONN=1
-CONFIG_BTDM_CTRL_FULL_SCAN_SUPPORTED=n
-CONFIG_BT_ENABLED=y
-CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517
-CONFIG_BT_NIMBLE_ENABLED=y
-CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11
-CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=5632
-CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
-CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y
-CONFIG_BT_NIMBLE_NVS_PERSIST=y
-CONFIG_BT_NIMBLE_ROLE_BROADCASTER=n
-CONFIG_BT_NIMBLE_ROLE_CENTRAL=n
-CONFIG_BT_NIMBLE_ROLE_OBSERVER=n
-CONFIG_BT_NIMBLE_SM_LEGACY=n
-CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j"
-CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
-CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
-CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
-CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
-CONFIG_COMPILER_WARN_WRITE_STRINGS=y
-CONFIG_DEBUG_MODE=y
-CONFIG_DEBUG_UNATTENDED_CI=y
-CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=y
-CONFIG_ESP32_REV_MIN_3=y
-CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO=y
-CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
-CONFIG_ESP_COEX_SW_COEXIST_ENABLE=n
-CONFIG_ESP_CONSOLE_NONE=y
-CONFIG_ESP_DEBUG_OCDAWARE=n
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
-CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=n
-CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
-CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y
-CONFIG_ESP_TASK_WDT_INIT=n
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
-CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=0
-CONFIG_ESP_WIFI_MGMT_SBUF_NUM=6
-CONFIG_ESP_WIFI_NVS_ENABLED=n
-CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=2
-CONFIG_ETH_USE_ESP32_EMAC=n
-CONFIG_ETH_USE_SPI_ETHERNET=n
-CONFIG_FATFS_ALLOC_PREFER_EXTRAM=n
-CONFIG_FATFS_PER_FILE_CACHE=n
-CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2048
-CONFIG_FREERTOS_INTERRUPT_BACKTRACE=n
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
-CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2560
-CONFIG_GC032A_SUPPORT=n
-CONFIG_GC2145_SUPPORT=n
-CONFIG_HEAP_POISONING_COMPREHENSIVE=y
-CONFIG_HTTPD_ERR_RESP_NO_DELAY=n
-CONFIG_LOG_DEFAULT_LEVEL_NONE=y
-CONFIG_LWIP_DHCPS=n
-CONFIG_LWIP_IPV6=n
-CONFIG_LWIP_NETIF_LOOPBACK=n
-CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=n
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
-CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=n
-CONFIG_MBEDTLS_HARDWARE_MPI=n
-CONFIG_MBEDTLS_HAVE_TIME=n
-CONFIG_MBEDTLS_PEM_PARSE_C=n
-CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=n
-CONFIG_MBEDTLS_SSL_ALPN=n
-CONFIG_MBEDTLS_SSL_RENEGOTIATION=n
-CONFIG_MBEDTLS_X509_CRL_PARSE_C=n
-CONFIG_MBEDTLS_X509_CSR_PARSE_C=n
-CONFIG_MQTT_PROTOCOL_311=n
-CONFIG_MQTT_TRANSPORT_SSL=n
-CONFIG_NEWLIB_NANO_FORMAT=y
-CONFIG_NT99141_SUPPORT=n
-CONFIG_OV3660_SUPPORT=n
-CONFIG_OV5640_SUPPORT=n
-CONFIG_OV7670_SUPPORT=n
-CONFIG_OV7725_SUPPORT=n
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_OFFSET=0x9000
-CONFIG_SC030IOT_SUPPORT=n
-CONFIG_SCCB_CLK_FREQ=200000
-CONFIG_SPIFFS_CACHE=n
-CONFIG_SPIFFS_GC_MAX_RUNS=1
-CONFIG_SPIFFS_MAX_PARTITIONS=1
-CONFIG_SPIFFS_PAGE_CHECK=n
-CONFIG_SPIFFS_USE_MAGIC=n
-CONFIG_SPIFFS_USE_MTIME=n
-CONFIG_SPIRAM=y
-CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
-CONFIG_SPIRAM_BANKSWITCH_ENABLE=n
-CONFIG_SPIRAM_MEMTEST=n
-CONFIG_UART_ISR_IN_IRAM=y
-CONFIG_UNITY_ENABLE_DOUBLE=n
-CONFIG_UNITY_ENABLE_FLOAT=n
-CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=n
-CONFIG_VFS_SUPPORT_IO=n
-CONFIG_WS_TRANSPORT=n
diff --git a/configs/sdkconfig_jade_ndebug.defaults b/configs/sdkconfig_jade_ndebug.defaults
deleted file mode 100644
index 970e7d9..0000000
--- a/configs/sdkconfig_jade_ndebug.defaults
+++ /dev/null
@@ -1,106 +0,0 @@
-CONFIG_ADC_CAL_EFUSE_TP_ENABLE=n
-CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=n
-CONFIG_ADC_CAL_LUT_ENABLE=n
-CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y
-CONFIG_APP_REPRODUCIBLE_BUILD=y
-CONFIG_BF20A6_SUPPORT=n
-CONFIG_BF3005_SUPPORT=n
-CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
-CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
-CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=n
-CONFIG_BTDM_CTRL_BLE_MAX_CONN=1
-CONFIG_BTDM_CTRL_FULL_SCAN_SUPPORTED=n
-CONFIG_BT_ENABLED=y
-CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517
-CONFIG_BT_NIMBLE_ENABLED=y
-CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11
-CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=5632
-CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
-CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y
-CONFIG_BT_NIMBLE_NVS_PERSIST=y
-CONFIG_BT_NIMBLE_ROLE_BROADCASTER=n
-CONFIG_BT_NIMBLE_ROLE_CENTRAL=n
-CONFIG_BT_NIMBLE_ROLE_OBSERVER=n
-CONFIG_BT_NIMBLE_SM_LEGACY=n
-CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j"
-CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
-CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
-CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
-CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
-CONFIG_COMPILER_WARN_WRITE_STRINGS=y
-CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=y
-CONFIG_ESP32_REV_MIN_3=y
-CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO=y
-CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
-CONFIG_ESP_COEX_SW_COEXIST_ENABLE=n
-CONFIG_ESP_CONSOLE_NONE=y
-CONFIG_ESP_DEBUG_OCDAWARE=n
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
-CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=n
-CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
-CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y
-CONFIG_ESP_TASK_WDT_INIT=n
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
-CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=0
-CONFIG_ESP_WIFI_MGMT_SBUF_NUM=6
-CONFIG_ESP_WIFI_NVS_ENABLED=n
-CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=2
-CONFIG_ETH_USE_ESP32_EMAC=n
-CONFIG_ETH_USE_SPI_ETHERNET=n
-CONFIG_FATFS_ALLOC_PREFER_EXTRAM=n
-CONFIG_FATFS_PER_FILE_CACHE=n
-CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2048
-CONFIG_FREERTOS_INTERRUPT_BACKTRACE=n
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
-CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2560
-CONFIG_GC032A_SUPPORT=n
-CONFIG_GC2145_SUPPORT=n
-CONFIG_HTTPD_ERR_RESP_NO_DELAY=n
-CONFIG_LOG_DEFAULT_LEVEL_NONE=y
-CONFIG_LWIP_DHCPS=n
-CONFIG_LWIP_IPV6=n
-CONFIG_LWIP_NETIF_LOOPBACK=n
-CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=n
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
-CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=n
-CONFIG_MBEDTLS_HARDWARE_MPI=n
-CONFIG_MBEDTLS_HAVE_TIME=n
-CONFIG_MBEDTLS_PEM_PARSE_C=n
-CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=n
-CONFIG_MBEDTLS_SSL_ALPN=n
-CONFIG_MBEDTLS_SSL_RENEGOTIATION=n
-CONFIG_MBEDTLS_X509_CRL_PARSE_C=n
-CONFIG_MBEDTLS_X509_CSR_PARSE_C=n
-CONFIG_MQTT_PROTOCOL_311=n
-CONFIG_MQTT_TRANSPORT_SSL=n
-CONFIG_NEWLIB_NANO_FORMAT=y
-CONFIG_NT99141_SUPPORT=n
-CONFIG_OV3660_SUPPORT=n
-CONFIG_OV5640_SUPPORT=n
-CONFIG_OV7670_SUPPORT=n
-CONFIG_OV7725_SUPPORT=n
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_OFFSET=0x9000
-CONFIG_SC030IOT_SUPPORT=n
-CONFIG_SCCB_CLK_FREQ=200000
-CONFIG_SPIFFS_CACHE=n
-CONFIG_SPIFFS_GC_MAX_RUNS=1
-CONFIG_SPIFFS_MAX_PARTITIONS=1
-CONFIG_SPIFFS_PAGE_CHECK=n
-CONFIG_SPIFFS_USE_MAGIC=n
-CONFIG_SPIFFS_USE_MTIME=n
-CONFIG_SPIRAM=y
-CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
-CONFIG_SPIRAM_BANKSWITCH_ENABLE=n
-CONFIG_SPIRAM_MEMTEST=n
-CONFIG_UART_ISR_IN_IRAM=y
-CONFIG_UNITY_ENABLE_DOUBLE=n
-CONFIG_UNITY_ENABLE_FLOAT=n
-CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=n
-CONFIG_VFS_SUPPORT_IO=n
-CONFIG_WS_TRANSPORT=n
diff --git a/configs/sdkconfig_jade_noradio.defaults b/configs/sdkconfig_jade_noradio.defaults
index 45dda5f..dd94279 100644
--- a/configs/sdkconfig_jade_noradio.defaults
+++ b/configs/sdkconfig_jade_noradio.defaults
@@ -14,7 +14,7 @@ CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
+CONFIG_COMPILER_STACK_CHECK_MODE_ALL=y
CONFIG_COMPILER_WARN_WRITE_STRINGS=y
CONFIG_DEBUG_MODE=y
CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=y
diff --git a/configs/sdkconfig_jade_noradio_ci.defaults b/configs/sdkconfig_jade_noradio_ci.defaults
deleted file mode 100644
index 19b96c5..0000000
--- a/configs/sdkconfig_jade_noradio_ci.defaults
+++ /dev/null
@@ -1,97 +0,0 @@
-CONFIG_ADC_CAL_EFUSE_TP_ENABLE=n
-CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=n
-CONFIG_ADC_CAL_LUT_ENABLE=n
-CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y
-CONFIG_APP_NO_BLOBS=y
-CONFIG_APP_REPRODUCIBLE_BUILD=y
-CONFIG_BF20A6_SUPPORT=n
-CONFIG_BF3005_SUPPORT=n
-CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
-CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
-CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=n
-CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
-CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
-CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
-CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_ALL=y
-CONFIG_COMPILER_WARN_WRITE_STRINGS=y
-CONFIG_DEBUG_MODE=y
-CONFIG_DEBUG_UNATTENDED_CI=y
-CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=y
-CONFIG_ESP32_REV_MIN_3=y
-CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO=y
-CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
-CONFIG_ESP_CONSOLE_NONE=y
-CONFIG_ESP_DEBUG_OCDAWARE=n
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
-CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=n
-CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
-CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y
-CONFIG_ESP_TASK_WDT_INIT=n
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
-CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=0
-CONFIG_ESP_WIFI_IRAM_OPT=n
-CONFIG_ESP_WIFI_MGMT_SBUF_NUM=6
-CONFIG_ESP_WIFI_NVS_ENABLED=n
-CONFIG_ESP_WIFI_RX_IRAM_OPT=n
-CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=2
-CONFIG_ETH_USE_ESP32_EMAC=n
-CONFIG_ETH_USE_SPI_ETHERNET=n
-CONFIG_FATFS_ALLOC_PREFER_EXTRAM=n
-CONFIG_FATFS_PER_FILE_CACHE=n
-CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2048
-CONFIG_FREERTOS_INTERRUPT_BACKTRACE=n
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
-CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2560
-CONFIG_GC032A_SUPPORT=n
-CONFIG_GC2145_SUPPORT=n
-CONFIG_HEAP_POISONING_COMPREHENSIVE=y
-CONFIG_HTTPD_ERR_RESP_NO_DELAY=n
-CONFIG_LOG_DEFAULT_LEVEL_NONE=y
-CONFIG_LWIP_DHCPS=n
-CONFIG_LWIP_IPV6=n
-CONFIG_LWIP_NETIF_LOOPBACK=n
-CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=n
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
-CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=n
-CONFIG_MBEDTLS_ECP_RESTARTABLE=y
-CONFIG_MBEDTLS_HARDWARE_MPI=n
-CONFIG_MBEDTLS_HAVE_TIME=n
-CONFIG_MBEDTLS_PEM_PARSE_C=n
-CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=n
-CONFIG_MBEDTLS_SSL_ALPN=n
-CONFIG_MBEDTLS_SSL_RENEGOTIATION=n
-CONFIG_MBEDTLS_X509_CRL_PARSE_C=n
-CONFIG_MBEDTLS_X509_CSR_PARSE_C=n
-CONFIG_MQTT_PROTOCOL_311=n
-CONFIG_MQTT_TRANSPORT_SSL=n
-CONFIG_NEWLIB_NANO_FORMAT=y
-CONFIG_NT99141_SUPPORT=n
-CONFIG_OV3660_SUPPORT=n
-CONFIG_OV5640_SUPPORT=n
-CONFIG_OV7670_SUPPORT=n
-CONFIG_OV7725_SUPPORT=n
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_OFFSET=0x9000
-CONFIG_SC030IOT_SUPPORT=n
-CONFIG_SCCB_CLK_FREQ=200000
-CONFIG_SPIFFS_CACHE=n
-CONFIG_SPIFFS_GC_MAX_RUNS=1
-CONFIG_SPIFFS_MAX_PARTITIONS=1
-CONFIG_SPIFFS_PAGE_CHECK=n
-CONFIG_SPIFFS_USE_MAGIC=n
-CONFIG_SPIFFS_USE_MTIME=n
-CONFIG_SPIRAM=y
-CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
-CONFIG_SPIRAM_BANKSWITCH_ENABLE=n
-CONFIG_SPIRAM_MEMTEST=n
-CONFIG_UART_ISR_IN_IRAM=y
-CONFIG_UNITY_ENABLE_DOUBLE=n
-CONFIG_UNITY_ENABLE_FLOAT=n
-CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=n
-CONFIG_VFS_SUPPORT_IO=n
-CONFIG_WS_TRANSPORT=n
diff --git a/configs/sdkconfig_jade_noradio_ndebug.defaults b/configs/sdkconfig_jade_noradio_ndebug.defaults
deleted file mode 100644
index 69e4454..0000000
--- a/configs/sdkconfig_jade_noradio_ndebug.defaults
+++ /dev/null
@@ -1,94 +0,0 @@
-CONFIG_ADC_CAL_EFUSE_TP_ENABLE=n
-CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=n
-CONFIG_ADC_CAL_LUT_ENABLE=n
-CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y
-CONFIG_APP_NO_BLOBS=y
-CONFIG_APP_REPRODUCIBLE_BUILD=y
-CONFIG_BF20A6_SUPPORT=n
-CONFIG_BF3005_SUPPORT=n
-CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
-CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
-CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=n
-CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
-CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
-CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
-CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
-CONFIG_COMPILER_WARN_WRITE_STRINGS=y
-CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=y
-CONFIG_ESP32_REV_MIN_3=y
-CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO=y
-CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
-CONFIG_ESP_CONSOLE_NONE=y
-CONFIG_ESP_DEBUG_OCDAWARE=n
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
-CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=n
-CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
-CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y
-CONFIG_ESP_TASK_WDT_INIT=n
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
-CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=0
-CONFIG_ESP_WIFI_IRAM_OPT=n
-CONFIG_ESP_WIFI_MGMT_SBUF_NUM=6
-CONFIG_ESP_WIFI_NVS_ENABLED=n
-CONFIG_ESP_WIFI_RX_IRAM_OPT=n
-CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=2
-CONFIG_ETH_USE_ESP32_EMAC=n
-CONFIG_ETH_USE_SPI_ETHERNET=n
-CONFIG_FATFS_ALLOC_PREFER_EXTRAM=n
-CONFIG_FATFS_PER_FILE_CACHE=n
-CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2048
-CONFIG_FREERTOS_INTERRUPT_BACKTRACE=n
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
-CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2560
-CONFIG_GC032A_SUPPORT=n
-CONFIG_GC2145_SUPPORT=n
-CONFIG_HTTPD_ERR_RESP_NO_DELAY=n
-CONFIG_LOG_DEFAULT_LEVEL_NONE=y
-CONFIG_LWIP_DHCPS=n
-CONFIG_LWIP_IPV6=n
-CONFIG_LWIP_NETIF_LOOPBACK=n
-CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=n
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
-CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=n
-CONFIG_MBEDTLS_ECP_RESTARTABLE=y
-CONFIG_MBEDTLS_HARDWARE_MPI=n
-CONFIG_MBEDTLS_HAVE_TIME=n
-CONFIG_MBEDTLS_PEM_PARSE_C=n
-CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=n
-CONFIG_MBEDTLS_SSL_ALPN=n
-CONFIG_MBEDTLS_SSL_RENEGOTIATION=n
-CONFIG_MBEDTLS_X509_CRL_PARSE_C=n
-CONFIG_MBEDTLS_X509_CSR_PARSE_C=n
-CONFIG_MQTT_PROTOCOL_311=n
-CONFIG_MQTT_TRANSPORT_SSL=n
-CONFIG_NEWLIB_NANO_FORMAT=y
-CONFIG_NT99141_SUPPORT=n
-CONFIG_OV3660_SUPPORT=n
-CONFIG_OV5640_SUPPORT=n
-CONFIG_OV7670_SUPPORT=n
-CONFIG_OV7725_SUPPORT=n
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_OFFSET=0x9000
-CONFIG_SC030IOT_SUPPORT=n
-CONFIG_SCCB_CLK_FREQ=200000
-CONFIG_SPIFFS_CACHE=n
-CONFIG_SPIFFS_GC_MAX_RUNS=1
-CONFIG_SPIFFS_MAX_PARTITIONS=1
-CONFIG_SPIFFS_PAGE_CHECK=n
-CONFIG_SPIFFS_USE_MAGIC=n
-CONFIG_SPIFFS_USE_MTIME=n
-CONFIG_SPIRAM=y
-CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
-CONFIG_SPIRAM_BANKSWITCH_ENABLE=n
-CONFIG_SPIRAM_MEMTEST=n
-CONFIG_UART_ISR_IN_IRAM=y
-CONFIG_UNITY_ENABLE_DOUBLE=n
-CONFIG_UNITY_ENABLE_FLOAT=n
-CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=n
-CONFIG_VFS_SUPPORT_IO=n
-CONFIG_WS_TRANSPORT=n
diff --git a/configs/sdkconfig_jade_v1_1_ci.defaults b/configs/sdkconfig_jade_v1_1_ci.defaults
deleted file mode 100644
index 0801093..0000000
--- a/configs/sdkconfig_jade_v1_1_ci.defaults
+++ /dev/null
@@ -1,110 +0,0 @@
-CONFIG_ADC_CAL_EFUSE_TP_ENABLE=n
-CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=n
-CONFIG_ADC_CAL_LUT_ENABLE=n
-CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y
-CONFIG_APP_REPRODUCIBLE_BUILD=y
-CONFIG_BF20A6_SUPPORT=n
-CONFIG_BF3005_SUPPORT=n
-CONFIG_BOARD_TYPE_JADE_V1_1=y
-CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
-CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
-CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=n
-CONFIG_BTDM_CTRL_BLE_MAX_CONN=1
-CONFIG_BTDM_CTRL_FULL_SCAN_SUPPORTED=n
-CONFIG_BT_ENABLED=y
-CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517
-CONFIG_BT_NIMBLE_ENABLED=y
-CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11
-CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=5632
-CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
-CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y
-CONFIG_BT_NIMBLE_NVS_PERSIST=y
-CONFIG_BT_NIMBLE_ROLE_BROADCASTER=n
-CONFIG_BT_NIMBLE_ROLE_CENTRAL=n
-CONFIG_BT_NIMBLE_ROLE_OBSERVER=n
-CONFIG_BT_NIMBLE_SM_LEGACY=n
-CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j"
-CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
-CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
-CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
-CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
-CONFIG_COMPILER_WARN_WRITE_STRINGS=y
-CONFIG_DEBUG_MODE=y
-CONFIG_DEBUG_UNATTENDED_CI=y
-CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=y
-CONFIG_ESP32_REV_MIN_3=y
-CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO=y
-CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
-CONFIG_ESP_COEX_SW_COEXIST_ENABLE=n
-CONFIG_ESP_CONSOLE_NONE=y
-CONFIG_ESP_DEBUG_OCDAWARE=n
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
-CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=n
-CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
-CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y
-CONFIG_ESP_TASK_WDT_INIT=n
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
-CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=0
-CONFIG_ESP_WIFI_MGMT_SBUF_NUM=6
-CONFIG_ESP_WIFI_NVS_ENABLED=n
-CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=2
-CONFIG_ETH_USE_ESP32_EMAC=n
-CONFIG_ETH_USE_SPI_ETHERNET=n
-CONFIG_FATFS_ALLOC_PREFER_EXTRAM=n
-CONFIG_FATFS_PER_FILE_CACHE=n
-CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2048
-CONFIG_FREERTOS_INTERRUPT_BACKTRACE=n
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
-CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2560
-CONFIG_GC032A_SUPPORT=n
-CONFIG_GC2145_SUPPORT=n
-CONFIG_HEAP_POISONING_COMPREHENSIVE=y
-CONFIG_HTTPD_ERR_RESP_NO_DELAY=n
-CONFIG_LOG_DEFAULT_LEVEL_NONE=y
-CONFIG_LWIP_DHCPS=n
-CONFIG_LWIP_IPV6=n
-CONFIG_LWIP_NETIF_LOOPBACK=n
-CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=n
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
-CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=n
-CONFIG_MBEDTLS_HARDWARE_MPI=n
-CONFIG_MBEDTLS_HAVE_TIME=n
-CONFIG_MBEDTLS_PEM_PARSE_C=n
-CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=n
-CONFIG_MBEDTLS_SSL_ALPN=n
-CONFIG_MBEDTLS_SSL_RENEGOTIATION=n
-CONFIG_MBEDTLS_X509_CRL_PARSE_C=n
-CONFIG_MBEDTLS_X509_CSR_PARSE_C=n
-CONFIG_MQTT_PROTOCOL_311=n
-CONFIG_MQTT_TRANSPORT_SSL=n
-CONFIG_NEWLIB_NANO_FORMAT=y
-CONFIG_NT99141_SUPPORT=n
-CONFIG_OV3660_SUPPORT=n
-CONFIG_OV5640_SUPPORT=n
-CONFIG_OV7670_SUPPORT=n
-CONFIG_OV7725_SUPPORT=n
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_OFFSET=0x9000
-CONFIG_SC030IOT_SUPPORT=n
-CONFIG_SCCB_CLK_FREQ=200000
-CONFIG_SPIFFS_CACHE=n
-CONFIG_SPIFFS_GC_MAX_RUNS=1
-CONFIG_SPIFFS_MAX_PARTITIONS=1
-CONFIG_SPIFFS_PAGE_CHECK=n
-CONFIG_SPIFFS_USE_MAGIC=n
-CONFIG_SPIFFS_USE_MTIME=n
-CONFIG_SPIRAM=y
-CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
-CONFIG_SPIRAM_BANKSWITCH_ENABLE=n
-CONFIG_SPIRAM_MEMTEST=n
-CONFIG_UART_ISR_IN_IRAM=y
-CONFIG_UNITY_ENABLE_DOUBLE=n
-CONFIG_UNITY_ENABLE_FLOAT=n
-CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=n
-CONFIG_VFS_SUPPORT_IO=n
-CONFIG_WS_TRANSPORT=n
diff --git a/configs/sdkconfig_jade_v1_1_ndebug.defaults b/configs/sdkconfig_jade_v1_1_ndebug.defaults
deleted file mode 100644
index 705077b..0000000
--- a/configs/sdkconfig_jade_v1_1_ndebug.defaults
+++ /dev/null
@@ -1,107 +0,0 @@
-CONFIG_ADC_CAL_EFUSE_TP_ENABLE=n
-CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=n
-CONFIG_ADC_CAL_LUT_ENABLE=n
-CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y
-CONFIG_APP_REPRODUCIBLE_BUILD=y
-CONFIG_BF20A6_SUPPORT=n
-CONFIG_BF3005_SUPPORT=n
-CONFIG_BOARD_TYPE_JADE_V1_1=y
-CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
-CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
-CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=n
-CONFIG_BTDM_CTRL_BLE_MAX_CONN=1
-CONFIG_BTDM_CTRL_FULL_SCAN_SUPPORTED=n
-CONFIG_BT_ENABLED=y
-CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517
-CONFIG_BT_NIMBLE_ENABLED=y
-CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11
-CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=5632
-CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
-CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y
-CONFIG_BT_NIMBLE_NVS_PERSIST=y
-CONFIG_BT_NIMBLE_ROLE_BROADCASTER=n
-CONFIG_BT_NIMBLE_ROLE_CENTRAL=n
-CONFIG_BT_NIMBLE_ROLE_OBSERVER=n
-CONFIG_BT_NIMBLE_SM_LEGACY=n
-CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j"
-CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
-CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
-CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
-CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
-CONFIG_COMPILER_WARN_WRITE_STRINGS=y
-CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=y
-CONFIG_ESP32_REV_MIN_3=y
-CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO=y
-CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
-CONFIG_ESP_COEX_SW_COEXIST_ENABLE=n
-CONFIG_ESP_CONSOLE_NONE=y
-CONFIG_ESP_DEBUG_OCDAWARE=n
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
-CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=n
-CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
-CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y
-CONFIG_ESP_TASK_WDT_INIT=n
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
-CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=0
-CONFIG_ESP_WIFI_MGMT_SBUF_NUM=6
-CONFIG_ESP_WIFI_NVS_ENABLED=n
-CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=2
-CONFIG_ETH_USE_ESP32_EMAC=n
-CONFIG_ETH_USE_SPI_ETHERNET=n
-CONFIG_FATFS_ALLOC_PREFER_EXTRAM=n
-CONFIG_FATFS_PER_FILE_CACHE=n
-CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2048
-CONFIG_FREERTOS_INTERRUPT_BACKTRACE=n
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
-CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2560
-CONFIG_GC032A_SUPPORT=n
-CONFIG_GC2145_SUPPORT=n
-CONFIG_HTTPD_ERR_RESP_NO_DELAY=n
-CONFIG_LOG_DEFAULT_LEVEL_NONE=y
-CONFIG_LWIP_DHCPS=n
-CONFIG_LWIP_IPV6=n
-CONFIG_LWIP_NETIF_LOOPBACK=n
-CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=n
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
-CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=n
-CONFIG_MBEDTLS_HARDWARE_MPI=n
-CONFIG_MBEDTLS_HAVE_TIME=n
-CONFIG_MBEDTLS_PEM_PARSE_C=n
-CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=n
-CONFIG_MBEDTLS_SSL_ALPN=n
-CONFIG_MBEDTLS_SSL_RENEGOTIATION=n
-CONFIG_MBEDTLS_X509_CRL_PARSE_C=n
-CONFIG_MBEDTLS_X509_CSR_PARSE_C=n
-CONFIG_MQTT_PROTOCOL_311=n
-CONFIG_MQTT_TRANSPORT_SSL=n
-CONFIG_NEWLIB_NANO_FORMAT=y
-CONFIG_NT99141_SUPPORT=n
-CONFIG_OV3660_SUPPORT=n
-CONFIG_OV5640_SUPPORT=n
-CONFIG_OV7670_SUPPORT=n
-CONFIG_OV7725_SUPPORT=n
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_OFFSET=0x9000
-CONFIG_SC030IOT_SUPPORT=n
-CONFIG_SCCB_CLK_FREQ=200000
-CONFIG_SPIFFS_CACHE=n
-CONFIG_SPIFFS_GC_MAX_RUNS=1
-CONFIG_SPIFFS_MAX_PARTITIONS=1
-CONFIG_SPIFFS_PAGE_CHECK=n
-CONFIG_SPIFFS_USE_MAGIC=n
-CONFIG_SPIFFS_USE_MTIME=n
-CONFIG_SPIRAM=y
-CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
-CONFIG_SPIRAM_BANKSWITCH_ENABLE=n
-CONFIG_SPIRAM_MEMTEST=n
-CONFIG_UART_ISR_IN_IRAM=y
-CONFIG_UNITY_ENABLE_DOUBLE=n
-CONFIG_UNITY_ENABLE_FLOAT=n
-CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=n
-CONFIG_VFS_SUPPORT_IO=n
-CONFIG_WS_TRANSPORT=n
diff --git a/configs/sdkconfig_jade_v1_1_noradio.defaults b/configs/sdkconfig_jade_v1_1_noradio.defaults
index 2e8b653..2187bb9 100644
--- a/configs/sdkconfig_jade_v1_1_noradio.defaults
+++ b/configs/sdkconfig_jade_v1_1_noradio.defaults
@@ -15,7 +15,7 @@ CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
+CONFIG_COMPILER_STACK_CHECK_MODE_ALL=y
CONFIG_COMPILER_WARN_WRITE_STRINGS=y
CONFIG_DEBUG_MODE=y
CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=y
diff --git a/configs/sdkconfig_jade_v1_1_noradio_ci.defaults b/configs/sdkconfig_jade_v1_1_noradio_ci.defaults
deleted file mode 100644
index 0236540..0000000
--- a/configs/sdkconfig_jade_v1_1_noradio_ci.defaults
+++ /dev/null
@@ -1,98 +0,0 @@
-CONFIG_ADC_CAL_EFUSE_TP_ENABLE=n
-CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=n
-CONFIG_ADC_CAL_LUT_ENABLE=n
-CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y
-CONFIG_APP_NO_BLOBS=y
-CONFIG_APP_REPRODUCIBLE_BUILD=y
-CONFIG_BF20A6_SUPPORT=n
-CONFIG_BF3005_SUPPORT=n
-CONFIG_BOARD_TYPE_JADE_V1_1=y
-CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
-CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
-CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=n
-CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
-CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
-CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
-CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_ALL=y
-CONFIG_COMPILER_WARN_WRITE_STRINGS=y
-CONFIG_DEBUG_MODE=y
-CONFIG_DEBUG_UNATTENDED_CI=y
-CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=y
-CONFIG_ESP32_REV_MIN_3=y
-CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO=y
-CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
-CONFIG_ESP_CONSOLE_NONE=y
-CONFIG_ESP_DEBUG_OCDAWARE=n
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
-CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=n
-CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
-CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y
-CONFIG_ESP_TASK_WDT_INIT=n
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
-CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=0
-CONFIG_ESP_WIFI_IRAM_OPT=n
-CONFIG_ESP_WIFI_MGMT_SBUF_NUM=6
-CONFIG_ESP_WIFI_NVS_ENABLED=n
-CONFIG_ESP_WIFI_RX_IRAM_OPT=n
-CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=2
-CONFIG_ETH_USE_ESP32_EMAC=n
-CONFIG_ETH_USE_SPI_ETHERNET=n
-CONFIG_FATFS_ALLOC_PREFER_EXTRAM=n
-CONFIG_FATFS_PER_FILE_CACHE=n
-CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2048
-CONFIG_FREERTOS_INTERRUPT_BACKTRACE=n
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
-CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2560
-CONFIG_GC032A_SUPPORT=n
-CONFIG_GC2145_SUPPORT=n
-CONFIG_HEAP_POISONING_COMPREHENSIVE=y
-CONFIG_HTTPD_ERR_RESP_NO_DELAY=n
-CONFIG_LOG_DEFAULT_LEVEL_NONE=y
-CONFIG_LWIP_DHCPS=n
-CONFIG_LWIP_IPV6=n
-CONFIG_LWIP_NETIF_LOOPBACK=n
-CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=n
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
-CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=n
-CONFIG_MBEDTLS_ECP_RESTARTABLE=y
-CONFIG_MBEDTLS_HARDWARE_MPI=n
-CONFIG_MBEDTLS_HAVE_TIME=n
-CONFIG_MBEDTLS_PEM_PARSE_C=n
-CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=n
-CONFIG_MBEDTLS_SSL_ALPN=n
-CONFIG_MBEDTLS_SSL_RENEGOTIATION=n
-CONFIG_MBEDTLS_X509_CRL_PARSE_C=n
-CONFIG_MBEDTLS_X509_CSR_PARSE_C=n
-CONFIG_MQTT_PROTOCOL_311=n
-CONFIG_MQTT_TRANSPORT_SSL=n
-CONFIG_NEWLIB_NANO_FORMAT=y
-CONFIG_NT99141_SUPPORT=n
-CONFIG_OV3660_SUPPORT=n
-CONFIG_OV5640_SUPPORT=n
-CONFIG_OV7670_SUPPORT=n
-CONFIG_OV7725_SUPPORT=n
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_OFFSET=0x9000
-CONFIG_SC030IOT_SUPPORT=n
-CONFIG_SCCB_CLK_FREQ=200000
-CONFIG_SPIFFS_CACHE=n
-CONFIG_SPIFFS_GC_MAX_RUNS=1
-CONFIG_SPIFFS_MAX_PARTITIONS=1
-CONFIG_SPIFFS_PAGE_CHECK=n
-CONFIG_SPIFFS_USE_MAGIC=n
-CONFIG_SPIFFS_USE_MTIME=n
-CONFIG_SPIRAM=y
-CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
-CONFIG_SPIRAM_BANKSWITCH_ENABLE=n
-CONFIG_SPIRAM_MEMTEST=n
-CONFIG_UART_ISR_IN_IRAM=y
-CONFIG_UNITY_ENABLE_DOUBLE=n
-CONFIG_UNITY_ENABLE_FLOAT=n
-CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=n
-CONFIG_VFS_SUPPORT_IO=n
-CONFIG_WS_TRANSPORT=n
diff --git a/configs/sdkconfig_jade_v1_1_noradio_ndebug.defaults b/configs/sdkconfig_jade_v1_1_noradio_ndebug.defaults
deleted file mode 100644
index 4ffc395..0000000
--- a/configs/sdkconfig_jade_v1_1_noradio_ndebug.defaults
+++ /dev/null
@@ -1,95 +0,0 @@
-CONFIG_ADC_CAL_EFUSE_TP_ENABLE=n
-CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=n
-CONFIG_ADC_CAL_LUT_ENABLE=n
-CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y
-CONFIG_APP_NO_BLOBS=y
-CONFIG_APP_REPRODUCIBLE_BUILD=y
-CONFIG_BF20A6_SUPPORT=n
-CONFIG_BF3005_SUPPORT=n
-CONFIG_BOARD_TYPE_JADE_V1_1=y
-CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
-CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
-CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=n
-CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
-CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
-CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
-CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
-CONFIG_COMPILER_WARN_WRITE_STRINGS=y
-CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=y
-CONFIG_ESP32_REV_MIN_3=y
-CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO=y
-CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
-CONFIG_ESP_CONSOLE_NONE=y
-CONFIG_ESP_DEBUG_OCDAWARE=n
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
-CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=n
-CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
-CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y
-CONFIG_ESP_TASK_WDT_INIT=n
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
-CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=0
-CONFIG_ESP_WIFI_IRAM_OPT=n
-CONFIG_ESP_WIFI_MGMT_SBUF_NUM=6
-CONFIG_ESP_WIFI_NVS_ENABLED=n
-CONFIG_ESP_WIFI_RX_IRAM_OPT=n
-CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=2
-CONFIG_ETH_USE_ESP32_EMAC=n
-CONFIG_ETH_USE_SPI_ETHERNET=n
-CONFIG_FATFS_ALLOC_PREFER_EXTRAM=n
-CONFIG_FATFS_PER_FILE_CACHE=n
-CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2048
-CONFIG_FREERTOS_INTERRUPT_BACKTRACE=n
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
-CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2560
-CONFIG_GC032A_SUPPORT=n
-CONFIG_GC2145_SUPPORT=n
-CONFIG_HTTPD_ERR_RESP_NO_DELAY=n
-CONFIG_LOG_DEFAULT_LEVEL_NONE=y
-CONFIG_LWIP_DHCPS=n
-CONFIG_LWIP_IPV6=n
-CONFIG_LWIP_NETIF_LOOPBACK=n
-CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=n
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
-CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=n
-CONFIG_MBEDTLS_ECP_RESTARTABLE=y
-CONFIG_MBEDTLS_HARDWARE_MPI=n
-CONFIG_MBEDTLS_HAVE_TIME=n
-CONFIG_MBEDTLS_PEM_PARSE_C=n
-CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=n
-CONFIG_MBEDTLS_SSL_ALPN=n
-CONFIG_MBEDTLS_SSL_RENEGOTIATION=n
-CONFIG_MBEDTLS_X509_CRL_PARSE_C=n
-CONFIG_MBEDTLS_X509_CSR_PARSE_C=n
-CONFIG_MQTT_PROTOCOL_311=n
-CONFIG_MQTT_TRANSPORT_SSL=n
-CONFIG_NEWLIB_NANO_FORMAT=y
-CONFIG_NT99141_SUPPORT=n
-CONFIG_OV3660_SUPPORT=n
-CONFIG_OV5640_SUPPORT=n
-CONFIG_OV7670_SUPPORT=n
-CONFIG_OV7725_SUPPORT=n
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_OFFSET=0x9000
-CONFIG_SC030IOT_SUPPORT=n
-CONFIG_SCCB_CLK_FREQ=200000
-CONFIG_SPIFFS_CACHE=n
-CONFIG_SPIFFS_GC_MAX_RUNS=1
-CONFIG_SPIFFS_MAX_PARTITIONS=1
-CONFIG_SPIFFS_PAGE_CHECK=n
-CONFIG_SPIFFS_USE_MAGIC=n
-CONFIG_SPIFFS_USE_MTIME=n
-CONFIG_SPIRAM=y
-CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
-CONFIG_SPIRAM_BANKSWITCH_ENABLE=n
-CONFIG_SPIRAM_MEMTEST=n
-CONFIG_UART_ISR_IN_IRAM=y
-CONFIG_UNITY_ENABLE_DOUBLE=n
-CONFIG_UNITY_ENABLE_FLOAT=n
-CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=n
-CONFIG_VFS_SUPPORT_IO=n
-CONFIG_WS_TRANSPORT=n
diff --git a/configs/sdkconfig_jade_v2.defaults b/configs/sdkconfig_jade_v2.defaults
new file mode 100644
index 0000000..8a7e9f4
--- /dev/null
+++ b/configs/sdkconfig_jade_v2.defaults
@@ -0,0 +1,86 @@
+CONFIG_APP_REPRODUCIBLE_BUILD=y
+CONFIG_BF20A6_SUPPORT=n
+CONFIG_BF3005_SUPPORT=n
+CONFIG_BOARD_TYPE_JADE_V2=y
+CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
+CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
+CONFIG_BOOTLOADER_WDT_ENABLE=n
+CONFIG_BT_ENABLED=y
+CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517
+CONFIG_BT_NIMBLE_ENABLED=y
+CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11
+CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=5632
+CONFIG_BT_NIMBLE_LOG_LEVEL_NONE=y
+CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
+CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y
+CONFIG_BT_NIMBLE_NVS_PERSIST=y
+CONFIG_BT_NIMBLE_ROLE_BROADCASTER=n
+CONFIG_BT_NIMBLE_ROLE_CENTRAL=n
+CONFIG_BT_NIMBLE_ROLE_OBSERVER=n
+CONFIG_BT_NIMBLE_SM_LEGACY=n
+CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j"
+CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
+CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
+CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
+CONFIG_COMPILER_OPTIMIZATION_SIZE=y
+CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
+CONFIG_COMPILER_WARN_WRITE_STRINGS=y
+CONFIG_DEBUG_MODE=y
+CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
+CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
+CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
+CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
+CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
+CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
+CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=n
+CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=n
+CONFIG_ESP_SYSTEM_BBPLL_RECALIB=n
+CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
+CONFIG_ESP_TASK_WDT_EN=n
+CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
+CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
+CONFIG_ESP_WIFI_IRAM_OPT=n
+CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=n
+CONFIG_ESP_WIFI_NVS_ENABLED=n
+CONFIG_ESP_WIFI_RX_IRAM_OPT=n
+CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
+CONFIG_FATFS_LFN_HEAP=y
+CONFIG_FATFS_VFS_FSTAT_BLKSIZE=4096
+CONFIG_FATFS_VOLUME_COUNT=1
+CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
+CONFIG_GC032A_SUPPORT=n
+CONFIG_GC2145_SUPPORT=n
+CONFIG_IDF_TARGET="esp32s3"
+CONFIG_JADE_USE_USB_JTAG_SERIAL=y
+CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
+CONFIG_NEWLIB_NANO_FORMAT=y
+CONFIG_NEWLIB_STDIN_LINE_ENDING_LF=y
+CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF=y
+CONFIG_NT99141_SUPPORT=n
+CONFIG_OV2640_SUPPORT=n
+CONFIG_OV3660_SUPPORT=n
+CONFIG_OV5640_SUPPORT=n
+CONFIG_OV7670_SUPPORT=n
+CONFIG_OV7725_SUPPORT=n
+CONFIG_PARTITION_TABLE_CUSTOM=y
+CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitionss3.csv"
+CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
+CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=n
+CONFIG_SC030IOT_SUPPORT=n
+CONFIG_SPIRAM=y
+CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
+CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
+CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=256
+CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536
+CONFIG_SPIRAM_MEMTEST=n
+CONFIG_SPIRAM_MODE_OCT=y
+CONFIG_SPIRAM_RODATA=y
+CONFIG_SPIRAM_SPEED_80M=y
+CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
+CONFIG_SPI_FLASH_VERIFY_WRITE=y
+CONFIG_SPI_MASTER_ISR_IN_IRAM=n
+CONFIG_SPI_SLAVE_ISR_IN_IRAM=n
+CONFIG_TINYUSB_CDC_ENABLED=y
+CONFIG_TINYUSB_CDC_RX_BUFSIZE=64
+CONFIG_TINYUSB_DESC_MANUFACTURER_STRING="Blockstream"
+CONFIG_TINYUSB_DESC_PRODUCT_STRING="Jade Plus"
diff --git a/configs/sdkconfig_jade_v2_noradio.defaults b/configs/sdkconfig_jade_v2_noradio.defaults
new file mode 100644
index 0000000..506b48f
--- /dev/null
+++ b/configs/sdkconfig_jade_v2_noradio.defaults
@@ -0,0 +1,74 @@
+CONFIG_APP_NO_BLOBS=y
+CONFIG_APP_REPRODUCIBLE_BUILD=y
+CONFIG_BF20A6_SUPPORT=n
+CONFIG_BF3005_SUPPORT=n
+CONFIG_BOARD_TYPE_JADE_V2=y
+CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
+CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
+CONFIG_BOOTLOADER_WDT_ENABLE=n
+CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
+CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
+CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
+CONFIG_COMPILER_OPTIMIZATION_SIZE=y
+CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
+CONFIG_COMPILER_WARN_WRITE_STRINGS=y
+CONFIG_DEBUG_MODE=y
+CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
+CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
+CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
+CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
+CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
+CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
+CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=n
+CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=n
+CONFIG_ESP_SYSTEM_BBPLL_RECALIB=n
+CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
+CONFIG_ESP_TASK_WDT_EN=n
+CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
+CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
+CONFIG_ESP_WIFI_IRAM_OPT=n
+CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=n
+CONFIG_ESP_WIFI_NVS_ENABLED=n
+CONFIG_ESP_WIFI_RX_IRAM_OPT=n
+CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
+CONFIG_FATFS_LFN_HEAP=y
+CONFIG_FATFS_VFS_FSTAT_BLKSIZE=4096
+CONFIG_FATFS_VOLUME_COUNT=1
+CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
+CONFIG_GC032A_SUPPORT=n
+CONFIG_GC2145_SUPPORT=n
+CONFIG_IDF_TARGET="esp32s3"
+CONFIG_JADE_USE_USB_JTAG_SERIAL=y
+CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
+CONFIG_MBEDTLS_ECP_RESTARTABLE=y
+CONFIG_NEWLIB_NANO_FORMAT=y
+CONFIG_NEWLIB_STDIN_LINE_ENDING_LF=y
+CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF=y
+CONFIG_NT99141_SUPPORT=n
+CONFIG_OV2640_SUPPORT=n
+CONFIG_OV3660_SUPPORT=n
+CONFIG_OV5640_SUPPORT=n
+CONFIG_OV7670_SUPPORT=n
+CONFIG_OV7725_SUPPORT=n
+CONFIG_PARTITION_TABLE_CUSTOM=y
+CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitionss3.csv"
+CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
+CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=n
+CONFIG_SC030IOT_SUPPORT=n
+CONFIG_SPIRAM=y
+CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
+CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
+CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=256
+CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536
+CONFIG_SPIRAM_MEMTEST=n
+CONFIG_SPIRAM_MODE_OCT=y
+CONFIG_SPIRAM_RODATA=y
+CONFIG_SPIRAM_SPEED_80M=y
+CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
+CONFIG_SPI_FLASH_VERIFY_WRITE=y
+CONFIG_SPI_MASTER_ISR_IN_IRAM=n
+CONFIG_SPI_SLAVE_ISR_IN_IRAM=n
+CONFIG_TINYUSB_CDC_ENABLED=y
+CONFIG_TINYUSB_CDC_RX_BUFSIZE=64
+CONFIG_TINYUSB_DESC_MANUFACTURER_STRING="Blockstream"
+CONFIG_TINYUSB_DESC_PRODUCT_STRING="Jade Plus"
diff --git a/configs/sdkconfig_jade_v2s3.defaults b/configs/sdkconfig_jade_v2s3.defaults
deleted file mode 100644
index c552b46..0000000
--- a/configs/sdkconfig_jade_v2s3.defaults
+++ /dev/null
@@ -1,84 +0,0 @@
-CONFIG_APP_REPRODUCIBLE_BUILD=y
-CONFIG_BF20A6_SUPPORT=n
-CONFIG_BF3005_SUPPORT=n
-CONFIG_BOARD_TYPE_JADE_V2=y
-CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
-CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=n
-CONFIG_BT_ENABLED=y
-CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517
-CONFIG_BT_NIMBLE_ENABLED=y
-CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11
-CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=5632
-CONFIG_BT_NIMBLE_LOG_LEVEL_NONE=y
-CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
-CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y
-CONFIG_BT_NIMBLE_NVS_PERSIST=y
-CONFIG_BT_NIMBLE_ROLE_BROADCASTER=n
-CONFIG_BT_NIMBLE_ROLE_CENTRAL=n
-CONFIG_BT_NIMBLE_ROLE_OBSERVER=n
-CONFIG_BT_NIMBLE_SM_LEGACY=n
-CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j"
-CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
-CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
-CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
-CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
-CONFIG_COMPILER_WARN_WRITE_STRINGS=y
-CONFIG_DEBUG_MODE=y
-CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
-CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
-CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
-CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=n
-CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=n
-CONFIG_ESP_SYSTEM_BBPLL_RECALIB=n
-CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
-CONFIG_ESP_TASK_WDT_EN=n
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
-CONFIG_ESP_WIFI_IRAM_OPT=n
-CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=n
-CONFIG_ESP_WIFI_NVS_ENABLED=n
-CONFIG_ESP_WIFI_RX_IRAM_OPT=n
-CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
-CONFIG_FATFS_LFN_HEAP=y
-CONFIG_FATFS_VFS_FSTAT_BLKSIZE=4096
-CONFIG_FATFS_VOLUME_COUNT=1
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
-CONFIG_GC032A_SUPPORT=n
-CONFIG_GC2145_SUPPORT=n
-CONFIG_IDF_TARGET="esp32s3"
-CONFIG_LOG_DEFAULT_LEVEL_NONE=y
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
-CONFIG_NEWLIB_NANO_FORMAT=y
-CONFIG_NT99141_SUPPORT=n
-CONFIG_OV2640_SUPPORT=n
-CONFIG_OV3660_SUPPORT=n
-CONFIG_OV5640_SUPPORT=n
-CONFIG_OV7670_SUPPORT=n
-CONFIG_OV7725_SUPPORT=n
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitionss3.csv"
-CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
-CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=n
-CONFIG_SC030IOT_SUPPORT=n
-CONFIG_SPIRAM=y
-CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
-CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
-CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=256
-CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536
-CONFIG_SPIRAM_MEMTEST=n
-CONFIG_SPIRAM_MODE_OCT=y
-CONFIG_SPIRAM_RODATA=y
-CONFIG_SPIRAM_SPEED_80M=y
-CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
-CONFIG_SPI_FLASH_VERIFY_WRITE=y
-CONFIG_SPI_MASTER_ISR_IN_IRAM=n
-CONFIG_SPI_SLAVE_ISR_IN_IRAM=n
-CONFIG_TINYUSB_CDC_ENABLED=y
-CONFIG_TINYUSB_CDC_RX_BUFSIZE=64
-CONFIG_TINYUSB_DESC_MANUFACTURER_STRING="Blockstream"
-CONFIG_TINYUSB_DESC_PRODUCT_STRING="Jade Plus"
diff --git a/configs/sdkconfig_jade_v2s3_ci.defaults b/configs/sdkconfig_jade_v2s3_ci.defaults
deleted file mode 100644
index 390b834..0000000
--- a/configs/sdkconfig_jade_v2s3_ci.defaults
+++ /dev/null
@@ -1,89 +0,0 @@
-CONFIG_APP_REPRODUCIBLE_BUILD=y
-CONFIG_BF20A6_SUPPORT=n
-CONFIG_BF3005_SUPPORT=n
-CONFIG_BOARD_TYPE_JADE_V2=y
-CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
-CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=n
-CONFIG_BT_ENABLED=y
-CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517
-CONFIG_BT_NIMBLE_ENABLED=y
-CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11
-CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=5632
-CONFIG_BT_NIMBLE_LOG_LEVEL_NONE=y
-CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
-CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y
-CONFIG_BT_NIMBLE_NVS_PERSIST=y
-CONFIG_BT_NIMBLE_ROLE_BROADCASTER=n
-CONFIG_BT_NIMBLE_ROLE_CENTRAL=n
-CONFIG_BT_NIMBLE_ROLE_OBSERVER=n
-CONFIG_BT_NIMBLE_SM_LEGACY=n
-CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j"
-CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
-CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
-CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
-CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
-CONFIG_COMPILER_WARN_WRITE_STRINGS=y
-CONFIG_DEBUG_MODE=y
-CONFIG_DEBUG_UNATTENDED_CI=y
-CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
-CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
-CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
-CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=n
-CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=n
-CONFIG_ESP_SYSTEM_BBPLL_RECALIB=n
-CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
-CONFIG_ESP_TASK_WDT_EN=n
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
-CONFIG_ESP_WIFI_IRAM_OPT=n
-CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=n
-CONFIG_ESP_WIFI_NVS_ENABLED=n
-CONFIG_ESP_WIFI_RX_IRAM_OPT=n
-CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
-CONFIG_FATFS_LFN_HEAP=y
-CONFIG_FATFS_VFS_FSTAT_BLKSIZE=4096
-CONFIG_FATFS_VOLUME_COUNT=1
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
-CONFIG_GC032A_SUPPORT=n
-CONFIG_GC2145_SUPPORT=n
-CONFIG_HEAP_POISONING_COMPREHENSIVE=y
-CONFIG_IDF_TARGET="esp32s3"
-CONFIG_JADE_USE_USB_JTAG_SERIAL=y
-CONFIG_LOG_DEFAULT_LEVEL_NONE=y
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
-CONFIG_NEWLIB_NANO_FORMAT=y
-CONFIG_NEWLIB_STDIN_LINE_ENDING_LF=y
-CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF=y
-CONFIG_NT99141_SUPPORT=n
-CONFIG_OV2640_SUPPORT=n
-CONFIG_OV3660_SUPPORT=n
-CONFIG_OV5640_SUPPORT=n
-CONFIG_OV7670_SUPPORT=n
-CONFIG_OV7725_SUPPORT=n
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitionss3.csv"
-CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
-CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=n
-CONFIG_SC030IOT_SUPPORT=n
-CONFIG_SPIRAM=y
-CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
-CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
-CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=256
-CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536
-CONFIG_SPIRAM_MEMTEST=n
-CONFIG_SPIRAM_MODE_OCT=y
-CONFIG_SPIRAM_RODATA=y
-CONFIG_SPIRAM_SPEED_80M=y
-CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
-CONFIG_SPI_FLASH_VERIFY_WRITE=y
-CONFIG_SPI_MASTER_ISR_IN_IRAM=n
-CONFIG_SPI_SLAVE_ISR_IN_IRAM=n
-CONFIG_TINYUSB_CDC_ENABLED=y
-CONFIG_TINYUSB_CDC_RX_BUFSIZE=64
-CONFIG_TINYUSB_DESC_MANUFACTURER_STRING="Blockstream"
-CONFIG_TINYUSB_DESC_PRODUCT_STRING="Jade Plus"
diff --git a/configs/sdkconfig_jade_v2s3_ndebug.defaults b/configs/sdkconfig_jade_v2s3_ndebug.defaults
deleted file mode 100644
index a279231..0000000
--- a/configs/sdkconfig_jade_v2s3_ndebug.defaults
+++ /dev/null
@@ -1,83 +0,0 @@
-CONFIG_APP_REPRODUCIBLE_BUILD=y
-CONFIG_BF20A6_SUPPORT=n
-CONFIG_BF3005_SUPPORT=n
-CONFIG_BOARD_TYPE_JADE_V2=y
-CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
-CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=n
-CONFIG_BT_ENABLED=y
-CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517
-CONFIG_BT_NIMBLE_ENABLED=y
-CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11
-CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=5632
-CONFIG_BT_NIMBLE_LOG_LEVEL_NONE=y
-CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
-CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y
-CONFIG_BT_NIMBLE_NVS_PERSIST=y
-CONFIG_BT_NIMBLE_ROLE_BROADCASTER=n
-CONFIG_BT_NIMBLE_ROLE_CENTRAL=n
-CONFIG_BT_NIMBLE_ROLE_OBSERVER=n
-CONFIG_BT_NIMBLE_SM_LEGACY=n
-CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j"
-CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
-CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
-CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
-CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
-CONFIG_COMPILER_WARN_WRITE_STRINGS=y
-CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
-CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
-CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
-CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=n
-CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=n
-CONFIG_ESP_SYSTEM_BBPLL_RECALIB=n
-CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
-CONFIG_ESP_TASK_WDT_EN=n
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
-CONFIG_ESP_WIFI_IRAM_OPT=n
-CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=n
-CONFIG_ESP_WIFI_NVS_ENABLED=n
-CONFIG_ESP_WIFI_RX_IRAM_OPT=n
-CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
-CONFIG_FATFS_LFN_HEAP=y
-CONFIG_FATFS_VFS_FSTAT_BLKSIZE=4096
-CONFIG_FATFS_VOLUME_COUNT=1
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
-CONFIG_GC032A_SUPPORT=n
-CONFIG_GC2145_SUPPORT=n
-CONFIG_IDF_TARGET="esp32s3"
-CONFIG_LOG_DEFAULT_LEVEL_NONE=y
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
-CONFIG_NEWLIB_NANO_FORMAT=y
-CONFIG_NT99141_SUPPORT=n
-CONFIG_OV2640_SUPPORT=n
-CONFIG_OV3660_SUPPORT=n
-CONFIG_OV5640_SUPPORT=n
-CONFIG_OV7670_SUPPORT=n
-CONFIG_OV7725_SUPPORT=n
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitionss3.csv"
-CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
-CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=n
-CONFIG_SC030IOT_SUPPORT=n
-CONFIG_SPIRAM=y
-CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
-CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
-CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=256
-CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536
-CONFIG_SPIRAM_MEMTEST=n
-CONFIG_SPIRAM_MODE_OCT=y
-CONFIG_SPIRAM_RODATA=y
-CONFIG_SPIRAM_SPEED_80M=y
-CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
-CONFIG_SPI_FLASH_VERIFY_WRITE=y
-CONFIG_SPI_MASTER_ISR_IN_IRAM=n
-CONFIG_SPI_SLAVE_ISR_IN_IRAM=n
-CONFIG_TINYUSB_CDC_ENABLED=y
-CONFIG_TINYUSB_CDC_RX_BUFSIZE=64
-CONFIG_TINYUSB_DESC_MANUFACTURER_STRING="Blockstream"
-CONFIG_TINYUSB_DESC_PRODUCT_STRING="Jade Plus"
diff --git a/configs/sdkconfig_jade_v2s3_noradio.defaults b/configs/sdkconfig_jade_v2s3_noradio.defaults
deleted file mode 100644
index 847e10c..0000000
--- a/configs/sdkconfig_jade_v2s3_noradio.defaults
+++ /dev/null
@@ -1,72 +0,0 @@
-CONFIG_APP_NO_BLOBS=y
-CONFIG_APP_REPRODUCIBLE_BUILD=y
-CONFIG_BF20A6_SUPPORT=n
-CONFIG_BF3005_SUPPORT=n
-CONFIG_BOARD_TYPE_JADE_V2=y
-CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
-CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=n
-CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
-CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
-CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
-CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
-CONFIG_COMPILER_WARN_WRITE_STRINGS=y
-CONFIG_DEBUG_MODE=y
-CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
-CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
-CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
-CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=n
-CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=n
-CONFIG_ESP_SYSTEM_BBPLL_RECALIB=n
-CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
-CONFIG_ESP_TASK_WDT_EN=n
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
-CONFIG_ESP_WIFI_IRAM_OPT=n
-CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=n
-CONFIG_ESP_WIFI_NVS_ENABLED=n
-CONFIG_ESP_WIFI_RX_IRAM_OPT=n
-CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
-CONFIG_FATFS_LFN_HEAP=y
-CONFIG_FATFS_VFS_FSTAT_BLKSIZE=4096
-CONFIG_FATFS_VOLUME_COUNT=1
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
-CONFIG_GC032A_SUPPORT=n
-CONFIG_GC2145_SUPPORT=n
-CONFIG_IDF_TARGET="esp32s3"
-CONFIG_LOG_DEFAULT_LEVEL_NONE=y
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
-CONFIG_MBEDTLS_ECP_RESTARTABLE=y
-CONFIG_NEWLIB_NANO_FORMAT=y
-CONFIG_NT99141_SUPPORT=n
-CONFIG_OV2640_SUPPORT=n
-CONFIG_OV3660_SUPPORT=n
-CONFIG_OV5640_SUPPORT=n
-CONFIG_OV7670_SUPPORT=n
-CONFIG_OV7725_SUPPORT=n
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitionss3.csv"
-CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
-CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=n
-CONFIG_SC030IOT_SUPPORT=n
-CONFIG_SPIRAM=y
-CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
-CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
-CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=256
-CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536
-CONFIG_SPIRAM_MEMTEST=n
-CONFIG_SPIRAM_MODE_OCT=y
-CONFIG_SPIRAM_RODATA=y
-CONFIG_SPIRAM_SPEED_80M=y
-CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
-CONFIG_SPI_FLASH_VERIFY_WRITE=y
-CONFIG_SPI_MASTER_ISR_IN_IRAM=n
-CONFIG_SPI_SLAVE_ISR_IN_IRAM=n
-CONFIG_TINYUSB_CDC_ENABLED=y
-CONFIG_TINYUSB_CDC_RX_BUFSIZE=64
-CONFIG_TINYUSB_DESC_MANUFACTURER_STRING="Blockstream"
-CONFIG_TINYUSB_DESC_PRODUCT_STRING="Jade Plus"
diff --git a/configs/sdkconfig_jade_v2s3_noradio_ci.defaults b/configs/sdkconfig_jade_v2s3_noradio_ci.defaults
deleted file mode 100644
index ede8395..0000000
--- a/configs/sdkconfig_jade_v2s3_noradio_ci.defaults
+++ /dev/null
@@ -1,77 +0,0 @@
-CONFIG_APP_NO_BLOBS=y
-CONFIG_APP_REPRODUCIBLE_BUILD=y
-CONFIG_BF20A6_SUPPORT=n
-CONFIG_BF3005_SUPPORT=n
-CONFIG_BOARD_TYPE_JADE_V2=y
-CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
-CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=n
-CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
-CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
-CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
-CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
-CONFIG_COMPILER_WARN_WRITE_STRINGS=y
-CONFIG_DEBUG_MODE=y
-CONFIG_DEBUG_UNATTENDED_CI=y
-CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
-CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
-CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
-CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=n
-CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=n
-CONFIG_ESP_SYSTEM_BBPLL_RECALIB=n
-CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
-CONFIG_ESP_TASK_WDT_EN=n
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
-CONFIG_ESP_WIFI_IRAM_OPT=n
-CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=n
-CONFIG_ESP_WIFI_NVS_ENABLED=n
-CONFIG_ESP_WIFI_RX_IRAM_OPT=n
-CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
-CONFIG_FATFS_LFN_HEAP=y
-CONFIG_FATFS_VFS_FSTAT_BLKSIZE=4096
-CONFIG_FATFS_VOLUME_COUNT=1
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
-CONFIG_GC032A_SUPPORT=n
-CONFIG_GC2145_SUPPORT=n
-CONFIG_HEAP_POISONING_COMPREHENSIVE=y
-CONFIG_IDF_TARGET="esp32s3"
-CONFIG_JADE_USE_USB_JTAG_SERIAL=y
-CONFIG_LOG_DEFAULT_LEVEL_NONE=y
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
-CONFIG_MBEDTLS_ECP_RESTARTABLE=y
-CONFIG_NEWLIB_NANO_FORMAT=y
-CONFIG_NEWLIB_STDIN_LINE_ENDING_LF=y
-CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF=y
-CONFIG_NT99141_SUPPORT=n
-CONFIG_OV2640_SUPPORT=n
-CONFIG_OV3660_SUPPORT=n
-CONFIG_OV5640_SUPPORT=n
-CONFIG_OV7670_SUPPORT=n
-CONFIG_OV7725_SUPPORT=n
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitionss3.csv"
-CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
-CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=n
-CONFIG_SC030IOT_SUPPORT=n
-CONFIG_SPIRAM=y
-CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
-CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
-CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=256
-CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536
-CONFIG_SPIRAM_MEMTEST=n
-CONFIG_SPIRAM_MODE_OCT=y
-CONFIG_SPIRAM_RODATA=y
-CONFIG_SPIRAM_SPEED_80M=y
-CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
-CONFIG_SPI_FLASH_VERIFY_WRITE=y
-CONFIG_SPI_MASTER_ISR_IN_IRAM=n
-CONFIG_SPI_SLAVE_ISR_IN_IRAM=n
-CONFIG_TINYUSB_CDC_ENABLED=y
-CONFIG_TINYUSB_CDC_RX_BUFSIZE=64
-CONFIG_TINYUSB_DESC_MANUFACTURER_STRING="Blockstream"
-CONFIG_TINYUSB_DESC_PRODUCT_STRING="Jade Plus"
diff --git a/configs/sdkconfig_jade_v2s3_noradio_ndebug.defaults b/configs/sdkconfig_jade_v2s3_noradio_ndebug.defaults
deleted file mode 100644
index ec06bfe..0000000
--- a/configs/sdkconfig_jade_v2s3_noradio_ndebug.defaults
+++ /dev/null
@@ -1,71 +0,0 @@
-CONFIG_APP_NO_BLOBS=y
-CONFIG_APP_REPRODUCIBLE_BUILD=y
-CONFIG_BF20A6_SUPPORT=n
-CONFIG_BF3005_SUPPORT=n
-CONFIG_BOARD_TYPE_JADE_V2=y
-CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
-CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=n
-CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
-CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
-CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
-CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
-CONFIG_COMPILER_WARN_WRITE_STRINGS=y
-CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
-CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
-CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
-CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=n
-CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=n
-CONFIG_ESP_SYSTEM_BBPLL_RECALIB=n
-CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
-CONFIG_ESP_TASK_WDT_EN=n
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
-CONFIG_ESP_WIFI_IRAM_OPT=n
-CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=n
-CONFIG_ESP_WIFI_NVS_ENABLED=n
-CONFIG_ESP_WIFI_RX_IRAM_OPT=n
-CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
-CONFIG_FATFS_LFN_HEAP=y
-CONFIG_FATFS_VFS_FSTAT_BLKSIZE=4096
-CONFIG_FATFS_VOLUME_COUNT=1
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
-CONFIG_GC032A_SUPPORT=n
-CONFIG_GC2145_SUPPORT=n
-CONFIG_IDF_TARGET="esp32s3"
-CONFIG_LOG_DEFAULT_LEVEL_NONE=y
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
-CONFIG_MBEDTLS_ECP_RESTARTABLE=y
-CONFIG_NEWLIB_NANO_FORMAT=y
-CONFIG_NT99141_SUPPORT=n
-CONFIG_OV2640_SUPPORT=n
-CONFIG_OV3660_SUPPORT=n
-CONFIG_OV5640_SUPPORT=n
-CONFIG_OV7670_SUPPORT=n
-CONFIG_OV7725_SUPPORT=n
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitionss3.csv"
-CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
-CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=n
-CONFIG_SC030IOT_SUPPORT=n
-CONFIG_SPIRAM=y
-CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
-CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
-CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=256
-CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536
-CONFIG_SPIRAM_MEMTEST=n
-CONFIG_SPIRAM_MODE_OCT=y
-CONFIG_SPIRAM_RODATA=y
-CONFIG_SPIRAM_SPEED_80M=y
-CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
-CONFIG_SPI_FLASH_VERIFY_WRITE=y
-CONFIG_SPI_MASTER_ISR_IN_IRAM=n
-CONFIG_SPI_SLAVE_ISR_IN_IRAM=n
-CONFIG_TINYUSB_CDC_ENABLED=y
-CONFIG_TINYUSB_CDC_RX_BUFSIZE=64
-CONFIG_TINYUSB_DESC_MANUFACTURER_STRING="Blockstream"
-CONFIG_TINYUSB_DESC_PRODUCT_STRING="Jade Plus"
diff --git a/configs/sdkconfig_qemu_psram_unamalgamated.defaults b/configs/sdkconfig_qemu_psram_unamalgamated.defaults
new file mode 100644
index 0000000..272a863
--- /dev/null
+++ b/configs/sdkconfig_qemu_psram_unamalgamated.defaults
@@ -0,0 +1,104 @@
+CONFIG_ADC_CAL_EFUSE_TP_ENABLE=n
+CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=n
+CONFIG_ADC_CAL_LUT_ENABLE=n
+CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y
+CONFIG_APP_REPRODUCIBLE_BUILD=y
+CONFIG_BF20A6_SUPPORT=n
+CONFIG_BF3005_SUPPORT=n
+CONFIG_BOARD_TYPE_QEMU=y
+CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
+CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
+CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
+CONFIG_BOOTLOADER_WDT_ENABLE=n
+CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
+CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
+CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
+CONFIG_COMPILER_OPTIMIZATION_SIZE=y
+CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
+CONFIG_COMPILER_WARN_WRITE_STRINGS=y
+CONFIG_DEBUG_MODE=y
+CONFIG_DEBUG_UNATTENDED_CI=y
+CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=y
+CONFIG_ESP32_REV_MIN_3=y
+CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO=y
+CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
+CONFIG_ESP_CONSOLE_NONE=y
+CONFIG_ESP_DEBUG_OCDAWARE=n
+CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
+CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
+CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=n
+CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
+CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
+CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_5=y
+CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y
+CONFIG_ESP_TASK_WDT_INIT=n
+CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
+CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
+CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=0
+CONFIG_ESP_WIFI_IRAM_OPT=n
+CONFIG_ESP_WIFI_MGMT_SBUF_NUM=6
+CONFIG_ESP_WIFI_NVS_ENABLED=n
+CONFIG_ESP_WIFI_RX_IRAM_OPT=n
+CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=2
+CONFIG_ETH_USE_OPENETH=y
+CONFIG_ETH_USE_SPI_ETHERNET=n
+CONFIG_FATFS_PER_FILE_CACHE=n
+CONFIG_FREERTOS_INTERRUPT_BACKTRACE=n
+CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
+CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2560
+CONFIG_FREERTOS_UNICORE=y
+CONFIG_GC0308_SUPPORT=n
+CONFIG_GC032A_SUPPORT=n
+CONFIG_GC2145_SUPPORT=n
+CONFIG_HTTPD_ERR_RESP_NO_DELAY=n
+CONFIG_LOG_DEFAULT_LEVEL_NONE=y
+CONFIG_LWIP_DHCPS=n
+CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=n
+CONFIG_LWIP_ESP_LWIP_ASSERT=n
+CONFIG_LWIP_IPV6=n
+CONFIG_LWIP_IRAM_OPTIMIZATION=y
+CONFIG_LWIP_L2_TO_L3_COPY=y
+CONFIG_LWIP_NETIF_LOOPBACK=n
+CONFIG_LWIP_SO_RCVBUF=y
+CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=n
+CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
+CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=n
+CONFIG_MBEDTLS_ECP_RESTARTABLE=y
+CONFIG_MBEDTLS_HARDWARE_MPI=n
+CONFIG_MBEDTLS_HAVE_TIME=n
+CONFIG_MBEDTLS_PEM_PARSE_C=n
+CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=n
+CONFIG_MBEDTLS_SSL_ALPN=n
+CONFIG_MBEDTLS_SSL_RENEGOTIATION=n
+CONFIG_MBEDTLS_X509_CRL_PARSE_C=n
+CONFIG_MBEDTLS_X509_CSR_PARSE_C=n
+CONFIG_MQTT_PROTOCOL_311=n
+CONFIG_MQTT_TRANSPORT_SSL=n
+CONFIG_NEWLIB_NANO_FORMAT=y
+CONFIG_NT99141_SUPPORT=n
+CONFIG_OV2640_SUPPORT=n
+CONFIG_OV3660_SUPPORT=n
+CONFIG_OV5640_SUPPORT=n
+CONFIG_OV7670_SUPPORT=n
+CONFIG_OV7725_SUPPORT=n
+CONFIG_PARTITION_TABLE_CUSTOM=y
+CONFIG_PARTITION_TABLE_OFFSET=0x9000
+CONFIG_SC030IOT_SUPPORT=n
+CONFIG_SCCB_CLK_FREQ=200000
+CONFIG_SPIFFS_CACHE=n
+CONFIG_SPIFFS_GC_MAX_RUNS=1
+CONFIG_SPIFFS_MAX_PARTITIONS=1
+CONFIG_SPIFFS_PAGE_CHECK=n
+CONFIG_SPIFFS_USE_MAGIC=n
+CONFIG_SPIFFS_USE_MTIME=n
+CONFIG_SPIRAM=y
+CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
+CONFIG_SPIRAM_BANKSWITCH_ENABLE=n
+CONFIG_SPIRAM_MEMTEST=n
+CONFIG_UART_ISR_IN_IRAM=y
+CONFIG_UNITY_ENABLE_DOUBLE=n
+CONFIG_UNITY_ENABLE_FLOAT=n
+CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=n
+CONFIG_VFS_SUPPORT_IO=n
+CONFIG_WS_TRANSPORT=n
+CONFIG_AMALGAMATED_BUILD=n
diff --git a/gitlab/apidocs.yml b/gitlab/apidocs.yml
new file mode 100644
index 0000000..e0e1410
--- /dev/null
+++ b/gitlab/apidocs.yml
@@ -0,0 +1,19 @@
+#
+# API documentation (part of the release stage)
+#
+build_api_docs:
+ tags: [ ga ]
+ stage: release
+ needs: []
+ variables:
+ # Skip submodule sync as docs don't need it
+ GIT_SUBMODULE_STRATEGY: none
+ artifacts:
+ expire_in: 14 days
+ name: jade-apidocs
+ when: on_success
+ paths:
+ - apidocs.tar.gz
+ script:
+ - (cd docs && make html)
+ - (cd docs/_build && tar czf ../../apidocs.tar.gz html/)
diff --git a/gitlab/dev_fw.yml b/gitlab/dev_fw.yml
new file mode 100644
index 0000000..1f48a56
--- /dev/null
+++ b/gitlab/dev_fw.yml
@@ -0,0 +1,26 @@
+#
+# development firmware build stage
+#
+.build_dev_template:
+ extends: .build_template
+ stage: build_dev
+ before_script:
+ - cp configs/sdkconfig$(echo $CI_JOB_NAME | sed "s/^${CI_JOB_STAGE}//").defaults sdkconfig.defaults
+
+build_dev_jade:
+ extends: .build_dev_template
+
+build_dev_jade_v1_1:
+ extends: .build_dev_template
+
+build_dev_jade_v2:
+ extends: .build_dev_template
+
+build_dev_jade_noradio:
+ extends: .build_dev_template
+
+build_dev_jade_v1_1_noradio:
+ extends: .build_dev_template
+
+build_dev_jade_v2_noradio:
+ extends: .build_dev_template
diff --git a/gitlab/diy_fw.yml b/gitlab/diy_fw.yml
new file mode 100644
index 0000000..d67b611
--- /dev/null
+++ b/gitlab/diy_fw.yml
@@ -0,0 +1,55 @@
+#
+# DIY build stage
+#
+# Used to test that compilation for DIY devices works.
+# These artifacts aren't released so retain them only for 2 days.
+#
+.build_diy_template:
+ extends: .build_template
+ stage: build_diy
+ artifacts:
+ expire_in: 2 days
+ before_script:
+ - cp configs/sdkconfig$(echo $CI_JOB_NAME | sed "s/^${CI_JOB_STAGE}//").defaults sdkconfig.defaults
+
+build_diy_display_m5fire:
+ extends: .build_diy_template
+
+build_diy_display_m5blackgray:
+ extends: .build_diy_template
+
+build_diy_display_m5core2:
+ extends: .build_diy_template
+
+build_diy_display_m5stickcplus:
+ extends: .build_diy_template
+
+build_diy_display_m5stickcplus2:
+ extends: .build_diy_template
+
+build_diy_display_m5cores3:
+ extends: .build_diy_template
+
+build_diy_display_ttgo_twatchs3:
+ extends: .build_diy_template
+
+build_diy_display_ttgo_tdisplay:
+ extends: .build_diy_template
+
+build_diy_display_ttgo_tdisplays3:
+ extends: .build_diy_template
+
+build_diy_display_ttgo_tdisplays3procamera:
+ extends: .build_diy_template
+
+build_diy_diycam_esp32-cam:
+ extends: .build_diy_template
+
+build_diy_diycam_esp32-wrover-cam:
+ extends: .build_diy_template
+
+build_diy_diycam_tcameraplus:
+ extends: .build_diy_template
+
+build_diy_display_waveshares3_touch_lcd2:
+ extends: .build_diy_template
diff --git a/gitlab/flash.yml b/gitlab/flash.yml
new file mode 100644
index 0000000..115012c
--- /dev/null
+++ b/gitlab/flash.yml
@@ -0,0 +1,121 @@
+#
+# Flash (and test) stage
+#
+
+#
+# QEMU
+#
+.flash_qemu_template:
+ stage: flash
+ tags: [ ga ]
+ variables:
+ # Skip submodule sync to make flashing/testing faster
+ GIT_SUBMODULE_STRATEGY: none
+ script:
+ - mv $(echo $CI_JOB_NAME | sed "s/^${CI_JOB_STAGE}/build_test/") build
+ - ./main/qemu/make-flash-img.sh
+ - ./main/qemu/qemu_ci_flash.sh
+
+flash_qemu:
+ extends: .flash_qemu_template
+ needs: [ build_test_qemu ]
+
+flash_qemu_psram:
+ extends: .flash_qemu_template
+ needs: [ build_test_qemu_psram ]
+
+flash_qemu_psram_unamalgamated:
+ extends: .flash_qemu_template
+ needs: [ build_test_qemu_psram_unamalgamated ]
+
+#
+# CI builds
+#
+
+# Jade v1.0
+.flash_jade_template:
+ stage: flash
+ tags: [ esp32flasher ]
+ script:
+ - mv $(echo $CI_JOB_NAME | sed "s/^${CI_JOB_STAGE}/build_test/") build
+ - cp -a build/sdkconfig ./
+ - ./tools/flock.sh $JADESERIALPORT ./ci_flash.sh esp32
+ # FIXME: Remove gcov from ./ci_flash.sh and then skip submodules here
+ # FIXME: Fix v1.0 flashing
+ allow_failure: true
+
+flash_jade_ci:
+ extends: .flash_jade_template
+ needs: [ build_test_jade_ci ]
+
+flash_jade_noradio_ci:
+ extends: .flash_jade_template
+ needs:
+ - job: build_test_jade_noradio_ci
+ artifacts: true
+ - job: flash_jade_ci
+ artifacts: false
+
+flash_jade_ota_delta_ci:
+ extends: .flash_jade_template
+ needs:
+ - job: build_test_jade_ci
+ artifacts: true
+ - job: build_test_jade_noradio_ci
+ artifacts: true
+ - job: flash_jade_noradio_ci
+ artifacts: false
+ script:
+ - mv build_test_jade_ci build
+ - mv build_test_jade_noradio_ci build_noradio
+ - ./tools/flock.sh $JADESERIALPORT ./ota_delta_ci.sh
+
+# Jade v1.1
+.flash_jade_v1_1_template:
+ extends: .flash_jade_template
+ tags: [ esp32flasher_v1_1 ]
+ allow_failure: false
+
+flash_jade_v1_1_ci:
+ extends: .flash_jade_v1_1_template
+ needs: [ build_test_jade_v1_1_ci ]
+
+flash_jade_v1_1_noradio_ci:
+ extends: .flash_jade_v1_1_template
+ needs:
+ - job: build_test_jade_v1_1_noradio_ci
+ artifacts: true
+ - job: flash_jade_v1_1_ci
+ artifacts: false
+
+flash_jade_ota_delta_v1_1_ci:
+ extends: .flash_jade_v1_1_template
+ needs:
+ - job: build_test_jade_v1_1_ci
+ artifacts: true
+ - job: build_test_jade_v1_1_noradio_ci
+ artifacts: true
+ - job: flash_jade_v1_1_noradio_ci
+ artifacts: false
+ script:
+ - mv build_test_jade_v1_1_ci build
+ - mv build_test_jade_v1_1_noradio_ci build_noradio
+ - ./tools/flock.sh $JADESERIALPORT ./ota_delta_ci.sh
+
+# Jade v2.0
+.flash_jade_v2_template:
+ stage: flash
+ tags: [ esp32s3flasher ]
+ variables:
+ IDF_TOOLS_PATH: "/home/gitlab-runner/.idf/54"
+ script:
+ - . $HOME/esp/esp-idf-5.4/export.sh
+ - mv $(echo $CI_JOB_NAME | sed "s/^${CI_JOB_STAGE}/build_test/") build
+ - cp build/sdkconfig ./
+ - ./tools/flock.sh $JADESERIALPORT ./ci_flash.sh esp32s3
+
+flash_jade_v2_ci:
+ extends: .flash_jade_v2_template
+ needs: [ build_test_jade_v2_ci ]
+
+# FIXME: add noradio and delta flashing for v2.0
diff --git a/gitlab/prod_fw.yml b/gitlab/prod_fw.yml
new file mode 100644
index 0000000..797fb02
--- /dev/null
+++ b/gitlab/prod_fw.yml
@@ -0,0 +1,26 @@
+#
+# Production build stage
+#
+.build_prod_template:
+ extends: .build_template
+ stage: build_prod
+ before_script:
+ - cp production/sdkconfig$(echo $CI_JOB_NAME | sed "s/^${CI_JOB_STAGE}//")_prod.defaults sdkconfig.defaults
+
+build_prod_jade:
+ extends: .build_prod_template
+
+build_prod_jade_noradio:
+ extends: .build_prod_template
+
+build_prod_jade_v1_1:
+ extends: .build_prod_template
+
+build_prod_jade_v1_1_noradio:
+ extends: .build_prod_template
+
+build_prod_jade_v2:
+ extends: .build_prod_template
+
+build_prod_jade_v2_noradio:
+ extends: .build_prod_template
diff --git a/gitlab/python.yml b/gitlab/python.yml
new file mode 100644
index 0000000..ff0ba96
--- /dev/null
+++ b/gitlab/python.yml
@@ -0,0 +1,25 @@
+#
+# Python wheel (part of the release stage)
+#
+build_jadepy_wheel:
+ tags: [ ga ]
+ stage: release
+ needs: []
+ artifacts:
+ expire_in: 14 days
+ name: jadepy
+ when: on_success
+ paths:
+ - dist
+ variables:
+ # Skip submodule sync to make releasing faster
+ GIT_SUBMODULE_STRATEGY: none
+ script:
+ - cd $CI_PROJECT_DIR
+ - apt install -yqq python3-venv
+ - virtualenv -p python3 venv
+ - source venv/bin/activate
+ - pip install build
+ - python -m build
+ - deactivate
+ - rm -rf venv
diff --git a/gitlab/release.yml b/gitlab/release.yml
new file mode 100644
index 0000000..3ee7bd3
--- /dev/null
+++ b/gitlab/release.yml
@@ -0,0 +1,33 @@
+#
+# Release stage
+#
+# Signs the development artifacts with the in-tree signing key(s).
+# Gathers the signed and unsigned release artifacts together for download.
+#
+create_release_files:
+ tags: [ ga ]
+ stage: release
+ when: manual
+ needs:
+ - build_prod_jade
+ - build_prod_jade_noradio
+ - build_prod_jade_v1_1
+ - build_prod_jade_v1_1_noradio
+ - build_prod_jade_v2
+ - build_prod_jade_v2_noradio
+ - build_dev_jade
+ - build_dev_jade_noradio
+ - build_dev_jade_v1_1
+ - build_dev_jade_v1_1_noradio
+ - build_dev_jade_v2
+ - build_dev_jade_v2_noradio
+ artifacts:
+ expire_in: 14 days
+ when: on_success
+ paths:
+ - release/staging
+ variables:
+ # Skip submodule sync to make releasing faster
+ GIT_SUBMODULE_STRATEGY: none
+ script:
+ - ./gitlab/stage_release.sh $CI_COMMIT_SHORT_SHA $CI_COMMIT_TAG
diff --git a/gitlab/stage_release.sh b/gitlab/stage_release.sh
new file mode 100755
index 0000000..e6a1922
--- /dev/null
+++ b/gitlab/stage_release.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+# Copy release artifacts into the expected release structure for signing.
+# Sign development release artifacts.
+# Run by the gitlab release process, called with the branch short SHA and
+# (possibly empty) tag name as arguments.
+
+export LABEL=${2:-${1}} # use SHA if tag name not given/empty
+
+# follow 'devfw.sh' convention for staging/upload dirs
+export UPLOAD_DIR="release/staging/upload"
+export STAGING_DIR="release/staging/$LABEL"
+
+. $HOME/esp/esp-idf/export.sh
+. /venv/bin/activate
+
+# prod builds
+mkdir -p $STAGING_DIR
+(cd $STAGING_DIR && mkdir jade jade1.1 jade2.0 jadedev jade1.1dev jade2.0dev)
+cp -r $STAGING_DIR $UPLOAD_DIR
+cp -r build_prod_jade $STAGING_DIR/jade/build_prod
+cp -r build_prod_jade_noradio $STAGING_DIR/jade/build_noradio_prod
+cp -r build_prod_jade_v1_1 $STAGING_DIR/jade1.1/build_v1_1_prod
+cp -r build_prod_jade_v1_1_noradio $STAGING_DIR/jade1.1/build_v1_1_noradio_prod
+cp -r build_prod_jade_v2 $STAGING_DIR/jade2.0/build_v2_prod
+cp -r build_prod_jade_v2_noradio $STAGING_DIR/jade2.0/build_v2_noradio_prod
+# dev builds
+cp -r build_dev_jade build_dev_jade_noradio $STAGING_DIR/jadedev
+cp -r build_dev_jade_v1_1 build_dev_jade_v1_1_noradio $STAGING_DIR/jade1.1dev
+cp -r build_dev_jade_v2 build_dev_jade_v2_noradio $STAGING_DIR/jade2.0dev
+# sign dev builds
+cd release
+./scripts/devfw.sh $LABEL
diff --git a/gitlab/test.yml b/gitlab/test.yml
new file mode 100644
index 0000000..7cf9b39
--- /dev/null
+++ b/gitlab/test.yml
@@ -0,0 +1,27 @@
+#
+# Test stage
+#
+
+test_bip85_rsa_key_gen:
+ tags: [ ga ]
+ stage: test
+ script:
+ - . $HOME/esp/esp-idf/export.sh
+ - (cd tools/bip85_rsa_key_gen && ./test.sh)
+ - git diff --exit-code
+
+test_format:
+ tags: [ ga ]
+ stage: test
+ script:
+ - . $HOME/esp/esp-idf/export.sh
+ - ./format.sh
+ - idf.py reconfigure
+ - git diff --exit-code
+
+test_configs:
+ tags: [ ga ]
+ stage: test
+ script:
+ - ./tools/check_default_configs.sh
+ - git diff --exit-code
diff --git a/gitlab/test_fw.yml b/gitlab/test_fw.yml
new file mode 100644
index 0000000..32a0f50
--- /dev/null
+++ b/gitlab/test_fw.yml
@@ -0,0 +1,48 @@
+#
+# Test firmware build stage
+#
+# Used to build test firmware images:
+# - _ci images that auto-click buttons to allow running test_jade on.
+# - qemu images for running the tests on qemu.
+#
+# These artifacts aren't released so retain them only for 2 days.
+#
+.build_test_template:
+ extends: .build_template
+ stage: build_test
+ artifacts:
+ expire_in: 2 days
+ before_script:
+ # Create CI config from the default developer device config
+ - echo $CI_JOB_NAME | sed "s/^${CI_JOB_STAGE}//" | sed "s/_ci$//" >device_name
+ - cp configs/sdkconfig$(cat device_name).defaults sdkconfig.defaults
+ - echo "CONFIG_DEBUG_UNATTENDED_CI=y" >>sdkconfig.defaults
+ - echo "CONFIG_HEAP_POISONING_COMPREHENSIVE=y" >>sdkconfig.defaults
+ - echo "CONFIG_LOG_DEFAULT_LEVEL_NONE=y" >>sdkconfig.defaults
+
+build_test_qemu:
+ extends: .build_test_template
+
+build_test_qemu_psram:
+ extends: .build_test_template
+
+build_test_qemu_psram_unamalgamated:
+ extends: .build_test_template
+
+build_test_jade_ci:
+ extends: .build_test_template
+
+build_test_jade_v1_1_ci:
+ extends: .build_test_template
+
+build_test_jade_v2_ci:
+ extends: .build_test_template
+
+build_test_jade_noradio_ci:
+ extends: .build_test_template
+
+build_test_jade_v1_1_noradio_ci:
+ extends: .build_test_template
+
+build_test_jade_v2_noradio_ci:
+ extends: .build_test_template
diff --git a/main/qemu/qemu_ci_flash.sh b/main/qemu/qemu_ci_flash.sh
index 5939fa8..195b4bf 100755
--- a/main/qemu/qemu_ci_flash.sh
+++ b/main/qemu/qemu_ci_flash.sh
@@ -33,10 +33,11 @@ qemu-system-xtensa -nographic \
sleep 4
source /venv/bin/activate
+git submodule update --init --depth 1 pinserver
pip install --require-hashes -r requirements.txt -r pinserver/requirements.txt
# Build the bsdiff tool in the 'tools' directory (source file in the build dir)
-gcc -O2 -DBSDIFF_EXECUTABLE -o ./tools/bsdiff components/esp32_bsdiff/bsdiff.c
+gcc -O2 -DBSDIFF_EXECUTABLE -o ./tools/bsdiff build/bsdiff.c
# OTA the build firmware
# NOTE: tools/fwprep.py should have run in the build step and produced the compressed firmware file
diff --git a/ota_delta_ci.sh b/ota_delta_ci.sh
index 9031b56..cf4a84c 100755
--- a/ota_delta_ci.sh
+++ b/ota_delta_ci.sh
@@ -26,7 +26,7 @@ gcc -O2 -DBSDIFF_EXECUTABLE -o ./tools/bsdiff build/bsdiff.c
# NOTE: tools/fwprep.py should have run in the build step and produced the compressed firmware files
FW_BLE=$(ls build/*_ble_*_fw.bin)
-FW_NORADIO=$(ls build_noblobs/*_noradio_*_fw.bin)
+FW_NORADIO=$(ls build_noradio/*_noradio_*_fw.bin)
# Make four patches between radio and ble firmware variants
PATCHDIR=patches
@@ -37,7 +37,7 @@ mkdir -p ${PATCHDIR}
./tools/mkpatch.py ${FW_NORADIO} ${FW_BLE} ${PATCHDIR} # makes both directions
sleep 2
-# first we ota to noblob via ble
+# first we ota to noradio via ble
# NOTE: the filename is of the pattern: 'final-from-base' - hence noradio*ble*patch.bin
FW_PATCH=$(ls ${PATCHDIR}/*_noradio_*_ble*_patch.bin)
cp "${FW_NORADIO}.hash" "${FW_PATCH}.hash"
@@ -48,7 +48,7 @@ FW_PATCH=$(ls ${PATCHDIR}/*_noradio_*_noradio*_patch.bin)
python jade_ota.py --log=INFO --skipble --serialport=${JADESERIALPORT} --fwfile=${FW_PATCH}
sleep 2
-# then we test from noblob to ble via serial
+# then we test from noradio to ble via serial
# NOTE: the filename is of the pattern: 'final-from-base' - hence ble*noradio*patch.bin
FW_PATCH=$(ls ${PATCHDIR}/*_ble_*_noradio*_patch.bin)
cp "${FW_BLE}.hash" "${FW_PATCH}.hash"
diff --git a/production/sdkconfig_jade_v2_noradio_prod.defaults b/production/sdkconfig_jade_v2_noradio_prod.defaults
new file mode 100644
index 0000000..5bfcd9d
--- /dev/null
+++ b/production/sdkconfig_jade_v2_noradio_prod.defaults
@@ -0,0 +1,82 @@
+CONFIG_APP_NO_BLOBS=y
+CONFIG_APP_REPRODUCIBLE_BUILD=y
+CONFIG_BF20A6_SUPPORT=n
+CONFIG_BF3005_SUPPORT=n
+CONFIG_BOARD_TYPE_JADE_V2=y
+CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
+CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
+CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
+CONFIG_BOOTLOADER_WDT_ENABLE=n
+CONFIG_BOOT_ROM_LOG_ALWAYS_OFF=y
+CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
+CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
+CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
+CONFIG_COMPILER_OPTIMIZATION_SIZE=y
+CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
+CONFIG_COMPILER_WARN_WRITE_STRINGS=y
+CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
+CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
+CONFIG_ESP_CONSOLE_NONE=y
+CONFIG_ESP_CONSOLE_SECONDARY_NONE=y
+CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
+CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
+CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
+CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=n
+CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=n
+CONFIG_ESP_SYSTEM_BBPLL_RECALIB=n
+CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y
+CONFIG_ESP_TASK_WDT_EN=n
+CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
+CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
+CONFIG_ESP_WIFI_IRAM_OPT=n
+CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=n
+CONFIG_ESP_WIFI_NVS_ENABLED=n
+CONFIG_ESP_WIFI_RX_IRAM_OPT=n
+CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
+CONFIG_FATFS_LFN_HEAP=y
+CONFIG_FATFS_VFS_FSTAT_BLKSIZE=4096
+CONFIG_FATFS_VOLUME_COUNT=1
+CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
+CONFIG_GC032A_SUPPORT=n
+CONFIG_GC2145_SUPPORT=n
+CONFIG_IDF_TARGET="esp32s3"
+CONFIG_LOG_DEFAULT_LEVEL_NONE=y
+CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
+CONFIG_MBEDTLS_ECP_RESTARTABLE=y
+CONFIG_NEWLIB_NANO_FORMAT=y
+CONFIG_NT99141_SUPPORT=n
+CONFIG_OV2640_SUPPORT=n
+CONFIG_OV3660_SUPPORT=n
+CONFIG_OV5640_SUPPORT=n
+CONFIG_OV7670_SUPPORT=n
+CONFIG_OV7725_SUPPORT=n
+CONFIG_PARTITION_TABLE_CUSTOM=y
+CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitionss3.csv"
+CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
+CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=n
+CONFIG_SC030IOT_SUPPORT=n
+CONFIG_SECURE_BOOT=y
+CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES=n
+CONFIG_SECURE_BOOT_INSECURE=y
+CONFIG_SECURE_BOOT_V2_ALLOW_EFUSE_RD_DIS=y
+CONFIG_SECURE_DISABLE_ROM_DL_MODE=y
+CONFIG_SECURE_FLASH_ENCRYPTION_MODE_RELEASE=y
+CONFIG_SECURE_FLASH_ENC_ENABLED=y
+CONFIG_SPIRAM=y
+CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
+CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
+CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=256
+CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536
+CONFIG_SPIRAM_MEMTEST=n
+CONFIG_SPIRAM_MODE_OCT=y
+CONFIG_SPIRAM_RODATA=y
+CONFIG_SPIRAM_SPEED_80M=y
+CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
+CONFIG_SPI_FLASH_VERIFY_WRITE=y
+CONFIG_SPI_MASTER_ISR_IN_IRAM=n
+CONFIG_SPI_SLAVE_ISR_IN_IRAM=n
+CONFIG_TINYUSB_CDC_ENABLED=y
+CONFIG_TINYUSB_CDC_RX_BUFSIZE=64
+CONFIG_TINYUSB_DESC_MANUFACTURER_STRING="Blockstream"
+CONFIG_TINYUSB_DESC_PRODUCT_STRING="Jade Plus"
+CONFIG_USJ_ENABLE_USB_SERIAL_JTAG=n
diff --git a/production/sdkconfig_jade_v2_prod.defaults b/production/sdkconfig_jade_v2_prod.defaults
new file mode 100644
index 0000000..0e5eb9f
--- /dev/null
+++ b/production/sdkconfig_jade_v2_prod.defaults
@@ -0,0 +1,95 @@
+CONFIG_APP_REPRODUCIBLE_BUILD=y
+CONFIG_BF20A6_SUPPORT=n
+CONFIG_BF3005_SUPPORT=n
+CONFIG_BOARD_TYPE_JADE_V2=y
+CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
+CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
+CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
+CONFIG_BOOTLOADER_WDT_ENABLE=n
+CONFIG_BOOT_ROM_LOG_ALWAYS_OFF=y
+CONFIG_BT_ENABLED=y
+CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517
+CONFIG_BT_NIMBLE_ENABLED=y
+CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11
+CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=5632
+CONFIG_BT_NIMBLE_LOG_LEVEL_NONE=y
+CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
+CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y
+CONFIG_BT_NIMBLE_NVS_PERSIST=y
+CONFIG_BT_NIMBLE_ROLE_BROADCASTER=n
+CONFIG_BT_NIMBLE_ROLE_CENTRAL=n
+CONFIG_BT_NIMBLE_ROLE_OBSERVER=n
+CONFIG_BT_NIMBLE_SM_LEGACY=n
+CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j"
+CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
+CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
+CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
+CONFIG_COMPILER_OPTIMIZATION_SIZE=y
+CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
+CONFIG_COMPILER_WARN_WRITE_STRINGS=y
+CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
+CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
+CONFIG_ESP_CONSOLE_NONE=y
+CONFIG_ESP_CONSOLE_SECONDARY_NONE=y
+CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
+CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
+CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
+CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=n
+CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=n
+CONFIG_ESP_SYSTEM_BBPLL_RECALIB=n
+CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y
+CONFIG_ESP_TASK_WDT_EN=n
+CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
+CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
+CONFIG_ESP_WIFI_IRAM_OPT=n
+CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=n
+CONFIG_ESP_WIFI_NVS_ENABLED=n
+CONFIG_ESP_WIFI_RX_IRAM_OPT=n
+CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
+CONFIG_FATFS_LFN_HEAP=y
+CONFIG_FATFS_VFS_FSTAT_BLKSIZE=4096
+CONFIG_FATFS_VOLUME_COUNT=1
+CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
+CONFIG_GC032A_SUPPORT=n
+CONFIG_GC2145_SUPPORT=n
+CONFIG_IDF_TARGET="esp32s3"
+CONFIG_LOG_DEFAULT_LEVEL_NONE=y
+CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
+CONFIG_MBEDTLS_ECP_RESTARTABLE=y
+CONFIG_NEWLIB_NANO_FORMAT=y
+CONFIG_NT99141_SUPPORT=n
+CONFIG_OV2640_SUPPORT=n
+CONFIG_OV3660_SUPPORT=n
+CONFIG_OV5640_SUPPORT=n
+CONFIG_OV7670_SUPPORT=n
+CONFIG_OV7725_SUPPORT=n
+CONFIG_PARTITION_TABLE_CUSTOM=y
+CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitionss3.csv"
+CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
+CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=n
+CONFIG_SC030IOT_SUPPORT=n
+CONFIG_SECURE_BOOT=y
+CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES=n
+CONFIG_SECURE_BOOT_INSECURE=y
+CONFIG_SECURE_BOOT_V2_ALLOW_EFUSE_RD_DIS=y
+CONFIG_SECURE_DISABLE_ROM_DL_MODE=y
+CONFIG_SECURE_FLASH_ENCRYPTION_MODE_RELEASE=y
+CONFIG_SECURE_FLASH_ENC_ENABLED=y
+CONFIG_SPIRAM=y
+CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
+CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
+CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=256
+CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536
+CONFIG_SPIRAM_MEMTEST=n
+CONFIG_SPIRAM_MODE_OCT=y
+CONFIG_SPIRAM_RODATA=y
+CONFIG_SPIRAM_SPEED_80M=y
+CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
+CONFIG_SPI_FLASH_VERIFY_WRITE=y
+CONFIG_SPI_MASTER_ISR_IN_IRAM=n
+CONFIG_SPI_SLAVE_ISR_IN_IRAM=n
+CONFIG_TINYUSB_CDC_ENABLED=y
+CONFIG_TINYUSB_CDC_RX_BUFSIZE=64
+CONFIG_TINYUSB_DESC_MANUFACTURER_STRING="Blockstream"
+CONFIG_TINYUSB_DESC_PRODUCT_STRING="Jade Plus"
+CONFIG_USJ_ENABLE_USB_SERIAL_JTAG=n
diff --git a/production/sdkconfig_jade_v2_smoketest.defaults b/production/sdkconfig_jade_v2_smoketest.defaults
new file mode 100644
index 0000000..c12722e
--- /dev/null
+++ b/production/sdkconfig_jade_v2_smoketest.defaults
@@ -0,0 +1,87 @@
+CONFIG_APP_REPRODUCIBLE_BUILD=y
+CONFIG_BF20A6_SUPPORT=n
+CONFIG_BF3005_SUPPORT=n
+CONFIG_BOARD_TYPE_JADE_V2=y
+CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
+CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
+CONFIG_BOOTLOADER_WDT_ENABLE=n
+CONFIG_BT_ENABLED=y
+CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517
+CONFIG_BT_NIMBLE_ENABLED=y
+CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11
+CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=5632
+CONFIG_BT_NIMBLE_LOG_LEVEL_NONE=y
+CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
+CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y
+CONFIG_BT_NIMBLE_NVS_PERSIST=y
+CONFIG_BT_NIMBLE_ROLE_BROADCASTER=n
+CONFIG_BT_NIMBLE_ROLE_CENTRAL=n
+CONFIG_BT_NIMBLE_ROLE_OBSERVER=n
+CONFIG_BT_NIMBLE_SM_LEGACY=n
+CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j"
+CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
+CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
+CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
+CONFIG_COMPILER_OPTIMIZATION_SIZE=y
+CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
+CONFIG_COMPILER_WARN_WRITE_STRINGS=y
+CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
+CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
+CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
+CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
+CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
+CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
+CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=n
+CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=n
+CONFIG_ESP_SYSTEM_BBPLL_RECALIB=n
+CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
+CONFIG_ESP_TASK_WDT_EN=n
+CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
+CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
+CONFIG_ESP_WIFI_IRAM_OPT=n
+CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=n
+CONFIG_ESP_WIFI_NVS_ENABLED=n
+CONFIG_ESP_WIFI_RX_IRAM_OPT=n
+CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
+CONFIG_FATFS_LFN_HEAP=y
+CONFIG_FATFS_VFS_FSTAT_BLKSIZE=4096
+CONFIG_FATFS_VOLUME_COUNT=1
+CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
+CONFIG_GC032A_SUPPORT=n
+CONFIG_GC2145_SUPPORT=n
+CONFIG_IDF_TARGET="esp32s3"
+CONFIG_JADE_QA=y
+CONFIG_JADE_USE_USB_JTAG_SERIAL=y
+CONFIG_LOG_DEFAULT_LEVEL_NONE=y
+CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
+CONFIG_NEWLIB_NANO_FORMAT=y
+CONFIG_NEWLIB_STDIN_LINE_ENDING_LF=y
+CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF=y
+CONFIG_NT99141_SUPPORT=n
+CONFIG_OV2640_SUPPORT=n
+CONFIG_OV3660_SUPPORT=n
+CONFIG_OV5640_SUPPORT=n
+CONFIG_OV7670_SUPPORT=n
+CONFIG_OV7725_SUPPORT=n
+CONFIG_PARTITION_TABLE_CUSTOM=y
+CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitionss3.csv"
+CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
+CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=n
+CONFIG_SC030IOT_SUPPORT=n
+CONFIG_SPIRAM=y
+CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
+CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
+CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=256
+CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536
+CONFIG_SPIRAM_MEMTEST=n
+CONFIG_SPIRAM_MODE_OCT=y
+CONFIG_SPIRAM_RODATA=y
+CONFIG_SPIRAM_SPEED_80M=y
+CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
+CONFIG_SPI_FLASH_VERIFY_WRITE=y
+CONFIG_SPI_MASTER_ISR_IN_IRAM=n
+CONFIG_SPI_SLAVE_ISR_IN_IRAM=n
+CONFIG_TINYUSB_CDC_ENABLED=y
+CONFIG_TINYUSB_CDC_RX_BUFSIZE=64
+CONFIG_TINYUSB_DESC_MANUFACTURER_STRING="Blockstream"
+CONFIG_TINYUSB_DESC_PRODUCT_STRING="Jade Plus"
diff --git a/production/sdkconfig_jade_v2s3_noradio_prod.defaults b/production/sdkconfig_jade_v2s3_noradio_prod.defaults
deleted file mode 100644
index 5bfcd9d..0000000
--- a/production/sdkconfig_jade_v2s3_noradio_prod.defaults
+++ /dev/null
@@ -1,82 +0,0 @@
-CONFIG_APP_NO_BLOBS=y
-CONFIG_APP_REPRODUCIBLE_BUILD=y
-CONFIG_BF20A6_SUPPORT=n
-CONFIG_BF3005_SUPPORT=n
-CONFIG_BOARD_TYPE_JADE_V2=y
-CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
-CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
-CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=n
-CONFIG_BOOT_ROM_LOG_ALWAYS_OFF=y
-CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
-CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
-CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
-CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
-CONFIG_COMPILER_WARN_WRITE_STRINGS=y
-CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
-CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
-CONFIG_ESP_CONSOLE_NONE=y
-CONFIG_ESP_CONSOLE_SECONDARY_NONE=y
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
-CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=n
-CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=n
-CONFIG_ESP_SYSTEM_BBPLL_RECALIB=n
-CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y
-CONFIG_ESP_TASK_WDT_EN=n
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
-CONFIG_ESP_WIFI_IRAM_OPT=n
-CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=n
-CONFIG_ESP_WIFI_NVS_ENABLED=n
-CONFIG_ESP_WIFI_RX_IRAM_OPT=n
-CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
-CONFIG_FATFS_LFN_HEAP=y
-CONFIG_FATFS_VFS_FSTAT_BLKSIZE=4096
-CONFIG_FATFS_VOLUME_COUNT=1
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
-CONFIG_GC032A_SUPPORT=n
-CONFIG_GC2145_SUPPORT=n
-CONFIG_IDF_TARGET="esp32s3"
-CONFIG_LOG_DEFAULT_LEVEL_NONE=y
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
-CONFIG_MBEDTLS_ECP_RESTARTABLE=y
-CONFIG_NEWLIB_NANO_FORMAT=y
-CONFIG_NT99141_SUPPORT=n
-CONFIG_OV2640_SUPPORT=n
-CONFIG_OV3660_SUPPORT=n
-CONFIG_OV5640_SUPPORT=n
-CONFIG_OV7670_SUPPORT=n
-CONFIG_OV7725_SUPPORT=n
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitionss3.csv"
-CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
-CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=n
-CONFIG_SC030IOT_SUPPORT=n
-CONFIG_SECURE_BOOT=y
-CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES=n
-CONFIG_SECURE_BOOT_INSECURE=y
-CONFIG_SECURE_BOOT_V2_ALLOW_EFUSE_RD_DIS=y
-CONFIG_SECURE_DISABLE_ROM_DL_MODE=y
-CONFIG_SECURE_FLASH_ENCRYPTION_MODE_RELEASE=y
-CONFIG_SECURE_FLASH_ENC_ENABLED=y
-CONFIG_SPIRAM=y
-CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
-CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
-CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=256
-CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536
-CONFIG_SPIRAM_MEMTEST=n
-CONFIG_SPIRAM_MODE_OCT=y
-CONFIG_SPIRAM_RODATA=y
-CONFIG_SPIRAM_SPEED_80M=y
-CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
-CONFIG_SPI_FLASH_VERIFY_WRITE=y
-CONFIG_SPI_MASTER_ISR_IN_IRAM=n
-CONFIG_SPI_SLAVE_ISR_IN_IRAM=n
-CONFIG_TINYUSB_CDC_ENABLED=y
-CONFIG_TINYUSB_CDC_RX_BUFSIZE=64
-CONFIG_TINYUSB_DESC_MANUFACTURER_STRING="Blockstream"
-CONFIG_TINYUSB_DESC_PRODUCT_STRING="Jade Plus"
-CONFIG_USJ_ENABLE_USB_SERIAL_JTAG=n
diff --git a/production/sdkconfig_jade_v2s3_prod.defaults b/production/sdkconfig_jade_v2s3_prod.defaults
deleted file mode 100644
index 0e5eb9f..0000000
--- a/production/sdkconfig_jade_v2s3_prod.defaults
+++ /dev/null
@@ -1,95 +0,0 @@
-CONFIG_APP_REPRODUCIBLE_BUILD=y
-CONFIG_BF20A6_SUPPORT=n
-CONFIG_BF3005_SUPPORT=n
-CONFIG_BOARD_TYPE_JADE_V2=y
-CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y
-CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
-CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=n
-CONFIG_BOOT_ROM_LOG_ALWAYS_OFF=y
-CONFIG_BT_ENABLED=y
-CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517
-CONFIG_BT_NIMBLE_ENABLED=y
-CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11
-CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=5632
-CONFIG_BT_NIMBLE_LOG_LEVEL_NONE=y
-CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
-CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y
-CONFIG_BT_NIMBLE_NVS_PERSIST=y
-CONFIG_BT_NIMBLE_ROLE_BROADCASTER=n
-CONFIG_BT_NIMBLE_ROLE_CENTRAL=n
-CONFIG_BT_NIMBLE_ROLE_OBSERVER=n
-CONFIG_BT_NIMBLE_SM_LEGACY=n
-CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j"
-CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
-CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
-CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
-CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
-CONFIG_COMPILER_WARN_WRITE_STRINGS=y
-CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
-CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
-CONFIG_ESP_CONSOLE_NONE=y
-CONFIG_ESP_CONSOLE_SECONDARY_NONE=y
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
-CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=n
-CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=n
-CONFIG_ESP_SYSTEM_BBPLL_RECALIB=n
-CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y
-CONFIG_ESP_TASK_WDT_EN=n
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
-CONFIG_ESP_WIFI_IRAM_OPT=n
-CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=n
-CONFIG_ESP_WIFI_NVS_ENABLED=n
-CONFIG_ESP_WIFI_RX_IRAM_OPT=n
-CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
-CONFIG_FATFS_LFN_HEAP=y
-CONFIG_FATFS_VFS_FSTAT_BLKSIZE=4096
-CONFIG_FATFS_VOLUME_COUNT=1
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
-CONFIG_GC032A_SUPPORT=n
-CONFIG_GC2145_SUPPORT=n
-CONFIG_IDF_TARGET="esp32s3"
-CONFIG_LOG_DEFAULT_LEVEL_NONE=y
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
-CONFIG_MBEDTLS_ECP_RESTARTABLE=y
-CONFIG_NEWLIB_NANO_FORMAT=y
-CONFIG_NT99141_SUPPORT=n
-CONFIG_OV2640_SUPPORT=n
-CONFIG_OV3660_SUPPORT=n
-CONFIG_OV5640_SUPPORT=n
-CONFIG_OV7670_SUPPORT=n
-CONFIG_OV7725_SUPPORT=n
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitionss3.csv"
-CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
-CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=n
-CONFIG_SC030IOT_SUPPORT=n
-CONFIG_SECURE_BOOT=y
-CONFIG_SECURE_BOOT_BUILD_SIGNED_BINARIES=n
-CONFIG_SECURE_BOOT_INSECURE=y
-CONFIG_SECURE_BOOT_V2_ALLOW_EFUSE_RD_DIS=y
-CONFIG_SECURE_DISABLE_ROM_DL_MODE=y
-CONFIG_SECURE_FLASH_ENCRYPTION_MODE_RELEASE=y
-CONFIG_SECURE_FLASH_ENC_ENABLED=y
-CONFIG_SPIRAM=y
-CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
-CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
-CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=256
-CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536
-CONFIG_SPIRAM_MEMTEST=n
-CONFIG_SPIRAM_MODE_OCT=y
-CONFIG_SPIRAM_RODATA=y
-CONFIG_SPIRAM_SPEED_80M=y
-CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
-CONFIG_SPI_FLASH_VERIFY_WRITE=y
-CONFIG_SPI_MASTER_ISR_IN_IRAM=n
-CONFIG_SPI_SLAVE_ISR_IN_IRAM=n
-CONFIG_TINYUSB_CDC_ENABLED=y
-CONFIG_TINYUSB_CDC_RX_BUFSIZE=64
-CONFIG_TINYUSB_DESC_MANUFACTURER_STRING="Blockstream"
-CONFIG_TINYUSB_DESC_PRODUCT_STRING="Jade Plus"
-CONFIG_USJ_ENABLE_USB_SERIAL_JTAG=n
diff --git a/production/sdkconfig_jade_v2s3_smoketest.defaults b/production/sdkconfig_jade_v2s3_smoketest.defaults
deleted file mode 100644
index c12722e..0000000
--- a/production/sdkconfig_jade_v2s3_smoketest.defaults
+++ /dev/null
@@ -1,87 +0,0 @@
-CONFIG_APP_REPRODUCIBLE_BUILD=y
-CONFIG_BF20A6_SUPPORT=n
-CONFIG_BF3005_SUPPORT=n
-CONFIG_BOARD_TYPE_JADE_V2=y
-CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y
-CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y
-CONFIG_BOOTLOADER_WDT_ENABLE=n
-CONFIG_BT_ENABLED=y
-CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517
-CONFIG_BT_NIMBLE_ENABLED=y
-CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11
-CONFIG_BT_NIMBLE_HOST_TASK_STACK_SIZE=5632
-CONFIG_BT_NIMBLE_LOG_LEVEL_NONE=y
-CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1
-CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y
-CONFIG_BT_NIMBLE_NVS_PERSIST=y
-CONFIG_BT_NIMBLE_ROLE_BROADCASTER=n
-CONFIG_BT_NIMBLE_ROLE_CENTRAL=n
-CONFIG_BT_NIMBLE_ROLE_OBSERVER=n
-CONFIG_BT_NIMBLE_SM_LEGACY=n
-CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j"
-CONFIG_BUTTON_LONG_PRESS_HOLD_SERIAL_TIME_MS=100
-CONFIG_BUTTON_LONG_PRESS_TIME_MS=500
-CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y
-CONFIG_COMPILER_OPTIMIZATION_SIZE=y
-CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y
-CONFIG_COMPILER_WARN_WRITE_STRINGS=y
-CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
-CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
-CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
-CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=n
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288
-CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=n
-CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=n
-CONFIG_ESP_SYSTEM_BBPLL_RECALIB=n
-CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
-CONFIG_ESP_TASK_WDT_EN=n
-CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=n
-CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=n
-CONFIG_ESP_WIFI_IRAM_OPT=n
-CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=n
-CONFIG_ESP_WIFI_NVS_ENABLED=n
-CONFIG_ESP_WIFI_RX_IRAM_OPT=n
-CONFIG_ESP_WIFI_SOFTAP_SUPPORT=n
-CONFIG_FATFS_LFN_HEAP=y
-CONFIG_FATFS_VFS_FSTAT_BLKSIZE=4096
-CONFIG_FATFS_VOLUME_COUNT=1
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3
-CONFIG_GC032A_SUPPORT=n
-CONFIG_GC2145_SUPPORT=n
-CONFIG_IDF_TARGET="esp32s3"
-CONFIG_JADE_QA=y
-CONFIG_JADE_USE_USB_JTAG_SERIAL=y
-CONFIG_LOG_DEFAULT_LEVEL_NONE=y
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=n
-CONFIG_NEWLIB_NANO_FORMAT=y
-CONFIG_NEWLIB_STDIN_LINE_ENDING_LF=y
-CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF=y
-CONFIG_NT99141_SUPPORT=n
-CONFIG_OV2640_SUPPORT=n
-CONFIG_OV3660_SUPPORT=n
-CONFIG_OV5640_SUPPORT=n
-CONFIG_OV7670_SUPPORT=n
-CONFIG_OV7725_SUPPORT=n
-CONFIG_PARTITION_TABLE_CUSTOM=y
-CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitionss3.csv"
-CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y
-CONFIG_PM_POWER_DOWN_CPU_IN_LIGHT_SLEEP=n
-CONFIG_SC030IOT_SUPPORT=n
-CONFIG_SPIRAM=y
-CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
-CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
-CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=256
-CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=65536
-CONFIG_SPIRAM_MEMTEST=n
-CONFIG_SPIRAM_MODE_OCT=y
-CONFIG_SPIRAM_RODATA=y
-CONFIG_SPIRAM_SPEED_80M=y
-CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
-CONFIG_SPI_FLASH_VERIFY_WRITE=y
-CONFIG_SPI_MASTER_ISR_IN_IRAM=n
-CONFIG_SPI_SLAVE_ISR_IN_IRAM=n
-CONFIG_TINYUSB_CDC_ENABLED=y
-CONFIG_TINYUSB_CDC_RX_BUFSIZE=64
-CONFIG_TINYUSB_DESC_MANUFACTURER_STRING="Blockstream"
-CONFIG_TINYUSB_DESC_PRODUCT_STRING="Jade Plus"
diff --git a/release/scripts/devfw.sh b/release/scripts/devfw.sh
index 4707b36..bb27951 100755
--- a/release/scripts/devfw.sh
+++ b/release/scripts/devfw.sh
@@ -1,8 +1,10 @@
#!/bin/bash
+set -e
+
INDEX="BETA"
DEVDIRS="jadedev jade1.1dev jade2.0dev"
-BUILDDIRS="./build_jade*_ndebug"
+BUILDDIRS="./build_dev_jade*"
FW_PATTERN="*_fw.bin"
HASH_PATTERN="*_fw.bin.hash"
diff --git a/tools/check_default_configs.sh b/tools/check_default_configs.sh
index 32357d8..280a95d 100755
--- a/tools/check_default_configs.sh
+++ b/tools/check_default_configs.sh
@@ -11,16 +11,18 @@ export IDF_CCACHE_ENABLE=1
rm -fr sdkconfig sdkconfig.defaults build managed_components
+# Jade v2 (Jade Plus)
idf.py set-target esp32s3
-for filename in production/*s3*.defaults configs/*s3*.defaults; do
+for filename in production/*_jade_v2_*.defaults configs/*_jade_v2*.defaults; do
rm -fr sdkconfig sdkconfig.defaults
idf.py -D SDKCONFIG_DEFAULTS="${filename}" reconfigure save-defconfig
tail -n +4 sdkconfig.defaults | LC_ALL=C sort -o ${filename}
done
+# Jade v1.0/v1.1
idf.py set-target esp32
-for filename in production/*.defaults configs/*.defaults; do
- [[ $filename == *"s3"* ]] && continue
+for filename in production/*jade*.defaults configs/*jade*.defaults; do
+ [[ $filename == *"v2"* ]] && continue
rm -fr sdkconfig sdkconfig.defaults
idf.py -D SDKCONFIG_DEFAULTS="${filename}" reconfigure save-defconfig
tail -n +4 sdkconfig.defaults | LC_ALL=C sort -o ${filename}
diff --git a/tools/flock.sh b/tools/flock.sh
new file mode 100755
index 0000000..a7aff52
--- /dev/null
+++ b/tools/flock.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+#
+# use flock to ensure processes run sequentially
+#
+
+set -e
+
+# lock name from first argument
+LOCK_NAME=${1}
+# normalize lock name to be filesystem friendly
+LOCK_NAME=${LOCK_NAME//[^a-zA-Z0-9]/_}
+# lock file path from normalized lock name
+LOCK_FILE="/tmp/flock_${LOCK_NAME}.lock"
+
+# process to run under lock from command line arguments
+PROCESS_CMD=${@:2}
+
+# acquire an exclusive lock with a timeout of 1 hour
+if flock -x -w 3600 -E 200 "$LOCK_FILE" -c "$PROCESS_CMD"; then
+ echo "script executed successfully."
+else
+ # check if the error was due to timeout (exit code 200)
+ if [ $? -eq 200 ]; then
+ echo "could not acquire lock within timeout period."
+ else
+ echo "script failed with an error."
+ fi
+ exit 1
+fi
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.