mirror of
https://github.com/alexhopeoconnor/firmware.git
synced 2026-10-04 03:18:10 +10:00
105 lines
4.5 KiB
INI
105 lines
4.5 KiB
INI
[env:seeed-xiao-s3-halow]
|
|
; HW_MODEL: using PRIVATE_HW (255) until a SEEED_XIAO_S3_HALOW slot is allocated upstream.
|
|
custom_meshtastic_hw_model = 255
|
|
custom_meshtastic_hw_model_slug = SEEED_XIAO_S3_HALOW
|
|
custom_meshtastic_architecture = esp32-s3
|
|
custom_meshtastic_actively_supported = false
|
|
custom_meshtastic_support_level = 1
|
|
custom_meshtastic_display_name = Seeed Xiao ESP32-S3 + Wi-Fi HaLow
|
|
custom_meshtastic_tags = Seeed, HaLow, Experimental
|
|
custom_meshtastic_requires_dfu = true
|
|
custom_meshtastic_partition_scheme = 8MB
|
|
|
|
extends = esp32s3_base
|
|
board = seeed-xiao-s3
|
|
|
|
; Morse Micro mm-iot-esp32 requires ESP-IDF 5.1.x; PlatformIO's default
|
|
; espressif32 platform ships IDF 4.4.7. Override with the pioarduino fork +
|
|
; vidplace7's v5.1 framework artifact (same combination the ESP32-C6 variant
|
|
; uses). This unlocks IDF 5.1 driver APIs (spi_master, gpio) at the cost of
|
|
; some Arduino-ESP32 2.x APIs that aren't in 3.x — expect to compile-fix
|
|
; downstream callers (BLE/NimBLE most likely; that's why we keep BLE on by
|
|
; default but accept it may need to be disabled).
|
|
platform =
|
|
https://github.com/Jason2866/platform-espressif32/archive/22faa566df8c789000f8136cd8d0aca49617af55.zip
|
|
platform_packages =
|
|
framework-arduinoespressif32 @ https://github.com/vidplace7/platform-espressif32/releases/download/meshtastic-esp32c6/framework-arduinoespressif32-all-release_v5.1-124d64e.zip
|
|
|
|
board_level = pr
|
|
board_check = true
|
|
board_build.partitions = default_8MB.csv
|
|
upload_protocol = esptool
|
|
upload_speed = 921600
|
|
|
|
build_unflags =
|
|
${esp32s3_base.build_unflags}
|
|
-DARDUINO_USB_MODE=1
|
|
|
|
build_flags =
|
|
${esp32s3_base.build_flags}
|
|
-D SEEED_XIAO_S3_HALOW
|
|
-I variants/esp32s3/seeed_xiao_s3_halow
|
|
-DBOARD_HAS_PSRAM
|
|
-DARDUINO_USB_MODE=0
|
|
; Compile the HaLow transport into the firmware. The SDK glue inside the
|
|
; transport is gated on USE_MM_IOT_ESP32, which is OFF here until the
|
|
; mm-iot-esp32 ESP-IDF component is wired into the PlatformIO build (Phase 0
|
|
; step 1 of the plan). With it OFF the variant builds as a no-radio node.
|
|
; NimBLE-Arduino 1.4.3 (pinned in esp32-common.ini) doesn't compile against
|
|
; IDF 5.1, so disable Bluetooth on this variant for now. Phone API still
|
|
; works over Wi-Fi/HaLow. Mirrors the workaround the ESP32-C6 variant uses.
|
|
-DHAS_BLUETOOTH=0
|
|
-DMESHTASTIC_EXCLUDE_BLUETOOTH=1
|
|
; The v5.1 framework already adds --specs=nano.specs; tell esp32_extra.py
|
|
; to skip its own addition or the linker fails on a duplicate spec.
|
|
-DMESHTASTIC_SKIP_NANO_SPECS=1
|
|
-DMESHTASTIC_EXCLUDE_PAXCOUNTER=1
|
|
-DMESHTASTIC_EXCLUDE_WEBSERVER=1
|
|
; No I2C peripherals on the HaLow stack (BUSY claims SDA pin). The cardKB
|
|
; rescan was spamming "Unknown error at address 0x1f" etc on boot. Skipping
|
|
; just the rescan path is enough — main.cpp's I2C scan is already gated on
|
|
; HAS_WIRE which we set to 0. We avoid MESHTASTIC_EXCLUDE_I2C because
|
|
; InputBroker.cpp unconditionally references cardKbI2cImpl.
|
|
-DI2C_NO_RESCAN=1
|
|
-DUSE_HALOW_RADIO=1
|
|
-DUSE_HALOW_WIFI=1
|
|
-DUSE_MM_IOT_ESP32=1
|
|
; Pin map fed to the vendored mm_shims (replaces Kconfig defaults at
|
|
; framework/mm_shims/Kconfig — same values, just delivered as -D flags
|
|
; because PlatformIO/Arduino doesn't run idf.py menuconfig).
|
|
-DCONFIG_MM_RESET_N=1
|
|
-DCONFIG_MM_WAKE=2
|
|
-DCONFIG_MM_BUSY=5
|
|
-DCONFIG_MM_SPI_SCK=7
|
|
-DCONFIG_MM_SPI_MOSI=9
|
|
-DCONFIG_MM_SPI_MISO=8
|
|
-DCONFIG_MM_SPI_CS=4
|
|
-DCONFIG_MM_SPI_IRQ=3
|
|
-DCONFIG_MM_SPI_FREQ_HZ=20000000
|
|
-DCONFIG_MM_SPI_HOST=2
|
|
-DMMPKTMEM_TX_POOL_N_BLOCKS=20
|
|
-DMMPKTMEM_RX_POOL_N_BLOCKS=23
|
|
; HaLow STA credentials. Empty SSID = chip boots and idles (default — useful
|
|
; for first-flash hardware verification). To actually join an AP, override
|
|
; in your own platformio_override.ini or pass at the pio command line:
|
|
; -DHALOW_SSID=\\\"MyHaLowAP\\\" -DHALOW_PASSPHRASE=\\\"secret\\\"
|
|
; The trailing escaped quotes survive shell+SCons quoting.
|
|
-DHALOW_SSID=\"\"
|
|
-DHALOW_PASSPHRASE=\"\"
|
|
; HaLow is the only transport on this variant — UDP multicast mesh-over-IP
|
|
; needs to be on by default or the firmware boots into a useless state.
|
|
-DUSERPREFS_NETWORK_ENABLED_PROTOCOLS=meshtastic_Config_NetworkConfig_ProtocolFlags_UDP_BROADCAST
|
|
; libmorse.a is precompiled for esp32-xtensa-lx7. The .mbin.o firmware blobs
|
|
; are picked up via library.json's srcFilter; libmorse needs an explicit
|
|
; -L/-l on the link line.
|
|
-Llib/MorseWlan/lib/esp32-xtensa-lx7
|
|
-lmorse
|
|
|
|
lib_ignore =
|
|
${esp32_common.lib_ignore}
|
|
NimBLE-Arduino
|
|
libpax
|
|
|
|
build_src_filter =
|
|
${esp32_common.build_src_filter} -<mesh/http>
|