diff --git a/build.sh b/build.sh index f6dee9f..1361e1e 100644 --- a/build.sh +++ b/build.sh @@ -40,6 +40,7 @@ ESP32_boards=( heltec_wifi_lora32_v3/esp32s3/procpu heltec_wifi_lora32_v4/esp32s3/procpu heltec_wifi_lora32_v43/esp32s3/procpu + heltec_wireless_tracker/esp32s3/procpu ttgo_tbeam/esp32/procpu ) diff --git a/zephcore/boards/esp32/heltec_wireless_tracker/board.conf b/zephcore/boards/esp32/heltec_wireless_tracker/board.conf index 29fbd3e..a2e53ec 100644 --- a/zephcore/boards/esp32/heltec_wireless_tracker/board.conf +++ b/zephcore/boards/esp32/heltec_wireless_tracker/board.conf @@ -18,6 +18,10 @@ CONFIG_BT_DIS_MODEL_NUMBER_STR="Heltec Wireless Tracker" # Flash size — ESP32-S3-FN8 = 8 MB CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y -# BLE — override esp32_common.conf BT_PRIVACY=y. The Android companion app -# requires a stable public address; RPA breaks the app pairing flow. -CONFIG_BT_PRIVACY=n +# BLE privacy: inherit CONFIG_BT_PRIVACY=y from esp32_common.conf — do NOT +# override to =n. On ESP32-S3 the Espressif controller's privacy-OFF +# Secure-Connections path MIC-fails against iOS (HCI disconnect 0x3d at +# encryption start; see findings.md Issue #34). Android "connect from app" is +# already preserved with privacy ON because start_adv() advertises with +# BT_LE_ADV_OPT_USE_IDENTITY (stable identity address, never an RPA), so there +# is no need to disable privacy for Android. diff --git a/zephcore/boards/esp32/heltec_wireless_tracker/board.overlay b/zephcore/boards/esp32/heltec_wireless_tracker/board.overlay index 326ab8e..24f550c 100644 --- a/zephcore/boards/esp32/heltec_wireless_tracker/board.overlay +++ b/zephcore/boards/esp32/heltec_wireless_tracker/board.overlay @@ -224,15 +224,23 @@ }; /* - * Flash partitions — FN8 is 8 MB but the upstream AMP table covers only - * the lower 4 MB (0x000000-0x3FFFFF). Place LittleFS in the unused upper - * half at 0x400000 (384 KB). No existing partitions are touched. + * Flash partitions — reclaim unused space from 8MB layout (matches the + * Heltec V3, the same ESP32-S3-FN8 platform). Delete lpcore slots, storage, + * scratch, and coredump partitions. Repurpose 0x7A0000 - 0x800000 (384KB) + * for LittleFS. */ +/delete-node/ &slot0_lpcore_partition; +/delete-node/ &slot1_lpcore_partition; +/delete-node/ &storage_partition; +/delete-node/ &scratch_partition; +/delete-node/ &coredump_partition; + &flash0 { partitions { - lfs_partition: partition@400000 { + /* LittleFS 384KB for DataStore + file-based BLE settings */ + lfs_partition: partition@7a0000 { label = "lfs"; - reg = <0x400000 0x60000>; + reg = <0x7A0000 0x60000>; }; }; }; diff --git a/zephcore/boards/example_board/README.md b/zephcore/boards/example_board/README.md index 200b21c..f3976c0 100644 --- a/zephcore/boards/example_board/README.md +++ b/zephcore/boards/example_board/README.md @@ -42,6 +42,7 @@ SWD flash: `west flash` (requires J-Link, pyocd, or nrfjprog connected). | Heltec V3 | `west build -b heltec_wifi_lora32_v3/esp32s3/procpu zephcore` | `west flash` | | Heltec V4.2 (GC1109 PA) | `west build -b heltec_wifi_lora32_v4/esp32s3/procpu zephcore` | `west flash` | | Heltec V4.3 (KCT8103L PA) | `west build -b heltec_wifi_lora32_v43/esp32s3/procpu zephcore` | `west flash` | +| Heltec Wireless Tracker | `west build -b heltec_wireless_tracker/esp32s3/procpu zephcore` | `west flash` | **Heltec V3 console:** ZephCore routes console/shell to `uart0` on V3. Use the UART serial port for boot logs and CLI. diff --git a/zephcore/boards/supported_boards.md b/zephcore/boards/supported_boards.md index 9349427..06f958b 100644 --- a/zephcore/boards/supported_boards.md +++ b/zephcore/boards/supported_boards.md @@ -37,6 +37,7 @@ station_g2/esp32s3/procpu heltec_wifi_lora32_v3/esp32s3/procpu heltec_wifi_lora32_v4/esp32s3/procpu heltec_wifi_lora32_v43/esp32s3/procpu +heltec_wireless_tracker/esp32s3/procpu ttgo_tbeam/esp32/procpu ``` @@ -44,6 +45,9 @@ ttgo_tbeam/esp32/procpu > > Heltec V3 console/shell use `uart0` (UART serial) in ZephCore. > +> **Heltec Wireless Tracker** (`heltec_wireless_tracker/esp32s3/procpu`): V1.1 +> ESP32-S3-FN8 companion with SX1262, ST7735R 160x80 TFT, and UC6580 GPS. +> > **LilyGo T-Beam** (`ttgo_tbeam/esp32/procpu`): classic ESP32 (PICO-D4) with > SX1262, AXP2101 PMU, and GNSS. Use this for the **v1.2 SX1262** variant — the > upstream Zephyr DTS models the SX1276 radio, which ZephCore overrides to