From 7e604eb015f5bbf0ca94bcbbe830dcf9b8e5c416 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Proch=C3=A1zka?= <90197375+P-R-O-C-H-Y@users.noreply.github.com> Date: Tue, 30 Sep 2025 18:25:34 +0200 Subject: [PATCH 01/10] ci: Enhance boards test validation --- .github/scripts/find_new_boards.sh | 15 +- .github/scripts/validate_board.sh | 292 +++++++++++++++++++++++++++++ .github/workflows/allboards.yml | 30 +++ .github/workflows/boards.yml | 9 +- boards.txt | 2 + 5 files changed, 340 insertions(+), 8 deletions(-) create mode 100755 .github/scripts/validate_board.sh diff --git a/.github/scripts/find_new_boards.sh b/.github/scripts/find_new_boards.sh index 4482aa2b1da..96d50cecfeb 100755 --- a/.github/scripts/find_new_boards.sh +++ b/.github/scripts/find_new_boards.sh @@ -27,12 +27,25 @@ echo "$modified_lines" boards_array=() previous_board="" +# Define excluded entries that are not actual boards +excluded_entries=("" "+" "-" "esp32_family" "menu") + # Extract board names from the modified lines, and add them to the boards_array while read -r line; do board_name=$(echo "$line" | cut -d '.' -f1 | cut -d '#' -f1) # remove + or - from the board name at the beginning board_name=${board_name#[-+]} - if [ "$board_name" != "" ] && [ "$board_name" != "+" ] && [ "$board_name" != "-" ] && [ "$board_name" != "esp32_family" ]; then + + # Check if board_name is in excluded entries + is_excluded=false + for excluded in "${excluded_entries[@]}"; do + if [ "$board_name" = "$excluded" ]; then + is_excluded=true + break + fi + done + + if [ "$is_excluded" = false ]; then if [ "$board_name" != "$previous_board" ]; then boards_array+=("espressif:esp32:$board_name") previous_board="$board_name" diff --git a/.github/scripts/validate_board.sh b/.github/scripts/validate_board.sh new file mode 100755 index 00000000000..424d70c4ae5 --- /dev/null +++ b/.github/scripts/validate_board.sh @@ -0,0 +1,292 @@ +#!/bin/bash + +# Board validation script for ESP32 Arduino Core +# This script validates board definitions in boards.txt + +set -e + +# Function to print output +print_error() { + echo "Error: $1" +} + +print_success() { + echo "✓ $1" +} + +# Function to validate a single board +validate_board() { + local board_name="$1" + local boards_file="boards.txt" + + echo "Validating board: $board_name" + + # Rule 1: Check build.board format + validate_build_board_format "$board_name" "$boards_file" + + # Rule 2: Check for required board properties + validate_required_properties "$board_name" "$boards_file" + + # Rule 3: Check for valid partition schemes for available flash sizes + validate_partition_schemes "$board_name" "$boards_file" + + # Rule 4: Check for VID and PID consistency + validate_vid_pid_consistency "$board_name" "$boards_file" + + # Add more validation rules here as needed + # Rule 5: Future validation rules can be added here + print_success "Board '$board_name' validation passed" +} + +# Rule 1: Check build.board format +validate_build_board_format() { + local board_name="$1" + local boards_file="$2" + + # Get the build.board value + local build_board_value + build_board_value=$(grep "^$board_name.build.board=" "$boards_file" | cut -d'=' -f2) + + if [ -z "$build_board_value" ]; then + print_error "build.board property not found for '$board_name'" + exit 1 + fi + + # Check for invalid characters (anything that's not uppercase letter, number, or underscore) + if echo "$build_board_value" | grep -q '[^A-Z0-9_]'; then + local invalid_chars + invalid_chars=$(echo "$build_board_value" | grep -o '[^A-Z0-9_]' | sort -u | tr -d '\n') + print_error "$board_name.build.board contains invalid characters: '$invalid_chars' (only A-Z, 0-9, and _ are allowed)" + exit 1 + fi + + # Check if it's all uppercase + if echo "$build_board_value" | grep -q '[a-z]'; then + print_error "build.board must be uppercase: '$build_board_value' (found lowercase letters)" + exit 1 + fi + + print_success "build.board is valid: '$build_board_value'" +} + +# Rule 2: Check for required board properties +validate_required_properties() { + local board_name="$1" + local boards_file="$2" + + echo "Checking required board properties..." + local required_props=("upload.flags" "upload.extra_flags") + local missing_props=() + + for prop in "${required_props[@]}"; do + if ! grep -q "^$board_name.$prop=" "$boards_file"; then + missing_props+=("$prop") + fi + done + + if [ ${#missing_props[@]} -gt 0 ]; then + print_error "Missing required properties for board '$board_name':" + printf ' - %s\n' "${missing_props[@]}" + exit 1 + fi +} + +# Rule 3: Check for valid partition schemes for available flash sizes +validate_partition_schemes() { + local board_name="$1" + local boards_file="$2" + + echo "Checking partition schemes for available flash sizes..." + + # Get all available flash sizes for this board + local flash_sizes + flash_sizes=$(grep "^$board_name.menu.FlashSize\." "$boards_file" | grep "\.build\.flash_size=" | cut -d'=' -f2 | sort -V) + + # Check if board has menu.FlashSize entries + if [ -z "$flash_sizes" ]; then + # If no menu.FlashSize entries, check if board has any build.flash_size entry + local has_flash_size + has_flash_size=$(grep "^$board_name\." "$boards_file" | grep "\.build\.flash_size=" | head -1) + + if [ -z "$has_flash_size" ]; then + print_error "No flash size options found for board '$board_name' (needs either menu.FlashSize entries or build.flash_size entry)" + exit 1 + else + print_success "Board '$board_name' has build.flash_size entry (no menu.FlashSize required)" + return 0 + fi + fi + + # Convert flash sizes to MB for comparison + local flash_sizes_mb=() + while IFS= read -r size; do + if [[ "$size" =~ ^([0-9]+)MB$ ]]; then + flash_sizes_mb+=("${BASH_REMATCH[1]}") + fi + done <<< "$flash_sizes" + + # Find the maximum flash size available + local max_flash_mb=0 + for size_mb in "${flash_sizes_mb[@]}"; do + if [ "$size_mb" -gt "$max_flash_mb" ]; then + max_flash_mb="$size_mb" + fi + done + + echo " Maximum flash size available: ${max_flash_mb}MB" + + # Find all partition schemes for this board + local partition_schemes + partition_schemes=$(grep "^$board_name.menu.PartitionScheme\." "$boards_file" | grep "\.build\.partitions=" | cut -d'=' -f2 | sort -u) + + if [ -n "$partition_schemes" ]; then + # Validate each partition scheme against the maximum flash size + while IFS= read -r scheme; do + validate_partition_scheme_size "$scheme" "$max_flash_mb" "$board_name" "$boards_file" + done <<< "$partition_schemes" + fi + + + print_success "Partition scheme validation completed" +} + +# Helper function to validate individual partition scheme +validate_partition_scheme_size() { + local scheme="$1" + local max_flash_mb="$2" + local board_name="$3" + local boards_file="$4" + + # Extract size from partition scheme name (e.g., "default_8MB" -> 8) + if [[ "$scheme" =~ _([0-9]+)MB$ ]]; then + local scheme_size_mb="${BASH_REMATCH[1]}" + + if [ "$scheme_size_mb" -gt "$max_flash_mb" ]; then + print_error "Partition scheme '$scheme' (${scheme_size_mb}MB) exceeds available flash size (${max_flash_mb}MB) for board '$board_name'" + exit 1 + fi + elif [[ "$scheme" =~ _([0-9]+)M$ ]]; then + # Handle cases like "default_8M" (without B) + local scheme_size_mb="${BASH_REMATCH[1]}" + + if [ "$scheme_size_mb" -gt "$max_flash_mb" ]; then + print_error "Partition scheme '$scheme' (${scheme_size_mb}MB) exceeds available flash size (${max_flash_mb}MB) for board '$board_name'" + exit 1 + fi + else + # For schemes without size in name (like "default", "minimal"), check upload maximum size + validate_scheme_upload_size "$scheme" "$board_name" "$boards_file" "$max_flash_mb" + fi +} + +# Rule 4: Check for VID and PID consistency +validate_vid_pid_consistency() { + local board_name="$1" + local boards_file="$2" + + echo "Checking VID and PID consistency..." + + # Get all VID and PID entries for this board + local vid_entries + local pid_entries + + vid_entries=$(grep "^$board_name\.vid\." "$boards_file" | sort) + pid_entries=$(grep "^$board_name\.pid\." "$boards_file" | sort) + + # Check for duplicate VID entries with same index but different values + local vid_duplicates + vid_duplicates=$(echo "$vid_entries" | cut -d'=' -f1 | sort | uniq -d) + + if [ -n "$vid_duplicates" ]; then + print_error "Found duplicate VID entries with different values for board '$board_name':" + echo "$vid_duplicates" + exit 1 + fi + + # Check for duplicate PID entries with same index but different values + local pid_duplicates + pid_duplicates=$(echo "$pid_entries" | cut -d'=' -f1 | sort | uniq -d) + + if [ -n "$pid_duplicates" ]; then + print_error "Found duplicate PID entries with different values for board '$board_name':" + echo "$pid_duplicates" + exit 1 + fi + + # Check for missing corresponding PID for each VID (and vice versa) + local vid_indices + local pid_indices + + vid_indices=$(echo "$vid_entries" | cut -d'=' -f1 | sed "s/^$board_name\.vid\.//" | sort -n) + pid_indices=$(echo "$pid_entries" | cut -d'=' -f1 | sed "s/^$board_name\.pid\.//" | sort -n) + + # Check if VID and PID indices match + if [ "$vid_indices" != "$pid_indices" ]; then + print_error "VID and PID indices don't match for board '$board_name'" + echo "VID indices: $vid_indices" + echo "PID indices: $pid_indices" + exit 1 + fi + + print_success "VID and PID consistency check passed" +} + +# Helper function to validate upload maximum size for a specific partition scheme +validate_scheme_upload_size() { + local scheme="$1" + local board_name="$2" + local boards_file="$3" + local max_flash_mb="$4" + + # Get upload maximum size for this specific scheme + local upload_size + upload_size=$(grep "^$board_name.menu.PartitionScheme\..*\.build\.partitions=$scheme" "$boards_file" -A1 | grep "\.upload\.maximum_size=" | head -1 | cut -d'=' -f2) + + if [ -z "$upload_size" ]; then + print_success "Partition scheme '$scheme' is valid for ${max_flash_mb}MB flash (no upload size limit)" + return 0 + fi + + # Convert flash size to bytes for comparison + local max_flash_bytes=$((max_flash_mb * 1024 * 1024)) + + # Check upload size against maximum flash size + if [ "$upload_size" -gt "$max_flash_bytes" ]; then + local upload_mb=$((upload_size / 1024 / 1024)) + print_error "Partition scheme '$scheme' upload size (${upload_mb}MB, ${upload_size} bytes) exceeds available flash size (${max_flash_mb}MB) for board '$board_name'" + exit 1 + fi + + local upload_mb=$((upload_size / 1024 / 1024)) + print_success "Partition scheme '$scheme' is valid for ${max_flash_mb}MB flash (upload size: ${upload_mb}MB)" +} + +# Future validation rules can be added here +# Example: +# validate_custom_rule() { +# local board_name="$1" +# local boards_file="$2" +# # Add custom validation logic here +# } + +# Main execution +main() { + if [ $# -ne 1 ]; then + echo "Usage: $0 " + echo "Example: $0 esp32s3" + exit 1 + fi + + local board_name="$1" + local boards_file="boards.txt" + + if [ ! -f "$boards_file" ]; then + print_error "Boards file '$boards_file' not found" + exit 1 + fi + + validate_board "$board_name" +} + +# Run main function with all arguments +main "$@" diff --git a/.github/workflows/allboards.yml b/.github/workflows/allboards.yml index 31eee587ca9..5d834f6abbe 100644 --- a/.github/workflows/allboards.yml +++ b/.github/workflows/allboards.yml @@ -72,6 +72,36 @@ jobs: env: FQBN: ${{ toJSON(matrix.chunk) }} + - name: Make validation script executable + run: chmod +x ./.github/scripts/validate_board.sh + + - name: Validate boards in chunk + run: | + echo "Starting board validation for chunk..." + failed_boards=() + + # Extract board names from FQBNs (remove espressif:esp32: prefix) + boards_json=$(cat fqbns.json) + board_names=$(echo "$boards_json" | jq -r '.[]' | sed 's/espressif:esp32://') + + for board in $board_names; do + echo "Validating board: $board" + if ! ./.github/scripts/validate_board.sh "$board"; then + echo "❌ Validation failed for board: $board" + failed_boards+=("$board") + else + echo "✅ Validation passed for board: $board" + fi + done + + if [ ${#failed_boards[@]} -gt 0 ]; then + echo "❌ Board validation failed for the following boards:" + printf ' - %s\n' "${failed_boards[@]}" + exit 1 + else + echo "✅ All board validations in chunk passed!" + fi + - name: Compile sketch uses: P-R-O-C-H-Y/compile-sketches@a62f069b92dc8f5053da4ac439ea6d1950cf6379 # main with: diff --git a/.github/workflows/boards.yml b/.github/workflows/boards.yml index 4ddb1443746..d40ba4824ea 100644 --- a/.github/workflows/boards.yml +++ b/.github/workflows/boards.yml @@ -49,15 +49,10 @@ jobs: - name: Checkout repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - name: Check if build.board is uppercase + - name: Validate board definition run: | board_name=$(echo ${{ matrix.fqbn }} | awk -F':' '{print $NF}') - if grep -q "^$board_name.build.board=[A-Z0-9_]*$" boards.txt; then - echo "$board_name.build.board is valid."; - else - echo "Error: $board_name.build.board is not uppercase!"; - exit 1; - fi + ./.github/scripts/validate_board.sh "$board_name" - name: Get libs cache uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 diff --git a/boards.txt b/boards.txt index e4031b618e1..61a97b28c5d 100644 --- a/boards.txt +++ b/boards.txt @@ -42280,6 +42280,8 @@ nano_nora.upload.tool.network=esp_ota nano_nora.upload.protocol=serial nano_nora.upload.maximum_size=3145728 nano_nora.upload.maximum_data_size=327680 +nano_nora.upload.flags= +nano_nora.upload.extra_flags= nano_nora.upload.use_1200bps_touch=false nano_nora.upload.wait_for_upload_port=false From bf2d7622d4ed36a5272a4442f0777d2f3638a5a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Proch=C3=A1zka?= <90197375+P-R-O-C-H-Y@users.noreply.github.com> Date: Wed, 1 Oct 2025 10:05:54 +0200 Subject: [PATCH 02/10] ci: Improve partition scheme check logic and logs --- .github/scripts/validate_board.sh | 225 +++++++++++++++++++++++------- 1 file changed, 178 insertions(+), 47 deletions(-) diff --git a/.github/scripts/validate_board.sh b/.github/scripts/validate_board.sh index 424d70c4ae5..1a72bdce297 100755 --- a/.github/scripts/validate_board.sh +++ b/.github/scripts/validate_board.sh @@ -20,22 +20,37 @@ validate_board() { local boards_file="boards.txt" echo "Validating board: $board_name" + echo "" # Rule 1: Check build.board format + echo "Rule 1: Build Board Format Validation" + echo "=====================================" validate_build_board_format "$board_name" "$boards_file" + echo "" # Rule 2: Check for required board properties + echo "Rule 2: Required Properties Validation" + echo "======================================" validate_required_properties "$board_name" "$boards_file" + echo "" # Rule 3: Check for valid partition schemes for available flash sizes + echo "Rule 3: Partition Scheme Validation" + echo "===================================" validate_partition_schemes "$board_name" "$boards_file" + echo "" # Rule 4: Check for VID and PID consistency + echo "Rule 4: VID/PID Consistency Validation" + echo "=====================================" validate_vid_pid_consistency "$board_name" "$boards_file" + echo "" # Add more validation rules here as needed # Rule 5: Future validation rules can be added here - print_success "Board '$board_name' validation passed" + echo "==========================================" + print_success "🎉 ALL VALIDATION RULES PASSED for board '$board_name'" + echo "==========================================" } # Rule 1: Check build.board format @@ -66,7 +81,7 @@ validate_build_board_format() { exit 1 fi - print_success "build.board is valid: '$build_board_value'" + echo " ✓ build.board is valid: '$build_board_value'" } # Rule 2: Check for required board properties @@ -74,7 +89,6 @@ validate_required_properties() { local board_name="$1" local boards_file="$2" - echo "Checking required board properties..." local required_props=("upload.flags" "upload.extra_flags") local missing_props=() @@ -89,6 +103,8 @@ validate_required_properties() { printf ' - %s\n' "${missing_props[@]}" exit 1 fi + + echo " ✓ Required properties validation completed" } # Rule 3: Check for valid partition schemes for available flash sizes @@ -96,24 +112,24 @@ validate_partition_schemes() { local board_name="$1" local boards_file="$2" - echo "Checking partition schemes for available flash sizes..." - # Get all available flash sizes for this board local flash_sizes flash_sizes=$(grep "^$board_name.menu.FlashSize\." "$boards_file" | grep "\.build\.flash_size=" | cut -d'=' -f2 | sort -V) # Check if board has menu.FlashSize entries if [ -z "$flash_sizes" ]; then - # If no menu.FlashSize entries, check if board has any build.flash_size entry + # If no menu.FlashSize entries, check if board has build.flash_size entry at least local has_flash_size has_flash_size=$(grep "^$board_name\." "$boards_file" | grep "\.build\.flash_size=" | head -1) if [ -z "$has_flash_size" ]; then - print_error "No flash size options found for board '$board_name' (needs either menu.FlashSize entries or build.flash_size entry)" + print_error "No flash size options found for board '$board_name' (needs build.flash_size entry at least)" exit 1 else - print_success "Board '$board_name' has build.flash_size entry (no menu.FlashSize required)" - return 0 + # Extract flash size from build.flash_size entry + local flash_size_value + flash_size_value=$(echo "$has_flash_size" | cut -d'=' -f2) + flash_sizes="$flash_size_value" fi fi @@ -133,11 +149,11 @@ validate_partition_schemes() { fi done - echo " Maximum flash size available: ${max_flash_mb}MB" + echo " ✓ Flash configuration found - maximum size: ${max_flash_mb}MB" # Find all partition schemes for this board local partition_schemes - partition_schemes=$(grep "^$board_name.menu.PartitionScheme\." "$boards_file" | grep "\.build\.partitions=" | cut -d'=' -f2 | sort -u) + partition_schemes=$(grep "^$board_name.menu.PartitionScheme\." "$boards_file" | grep -v "\.build\." | grep -v "\.upload\." | sed 's/.*\.PartitionScheme\.\([^=]*\)=.*/\1/' | sort -u) if [ -n "$partition_schemes" ]; then # Validate each partition scheme against the maximum flash size @@ -147,7 +163,7 @@ validate_partition_schemes() { fi - print_success "Partition scheme validation completed" + echo " ✓ Partition scheme validation completed" } # Helper function to validate individual partition scheme @@ -164,6 +180,8 @@ validate_partition_scheme_size() { if [ "$scheme_size_mb" -gt "$max_flash_mb" ]; then print_error "Partition scheme '$scheme' (${scheme_size_mb}MB) exceeds available flash size (${max_flash_mb}MB) for board '$board_name'" exit 1 + else + echo " ✓ Partition scheme '$scheme' is valid for ${max_flash_mb}MB flash (size indicator: ${scheme_size_mb}MB)" fi elif [[ "$scheme" =~ _([0-9]+)M$ ]]; then # Handle cases like "default_8M" (without B) @@ -172,11 +190,156 @@ validate_partition_scheme_size() { if [ "$scheme_size_mb" -gt "$max_flash_mb" ]; then print_error "Partition scheme '$scheme' (${scheme_size_mb}MB) exceeds available flash size (${max_flash_mb}MB) for board '$board_name'" exit 1 + else + echo " ✓ Partition scheme '$scheme' is valid for ${max_flash_mb}MB flash (size indicator: ${scheme_size_mb}MB)" + fi + elif [[ "$scheme" =~ _([0-9]+)$ ]]; then + # Handle cases like "esp_sr_16" (just number at end) + local scheme_size_mb="${BASH_REMATCH[1]}" + + if [ "$scheme_size_mb" -gt "$max_flash_mb" ]; then + print_error "Partition scheme '$scheme' (${scheme_size_mb}MB) exceeds available flash size (${max_flash_mb}MB) for board '$board_name'" + exit 1 + else + echo " ✓ Partition scheme '$scheme' is valid for ${max_flash_mb}MB flash (size indicator: ${scheme_size_mb}MB)" fi else - # For schemes without size in name (like "default", "minimal"), check upload maximum size - validate_scheme_upload_size "$scheme" "$board_name" "$boards_file" "$max_flash_mb" + # For schemes without size in name, check description for size indicators + local description_text + description_text=$(grep "^$board_name.menu.PartitionScheme\.$scheme=" "$boards_file" | cut -d'=' -f2) + + # First check main description for size indicators (before brackets) + # Look for the largest size indicator in the main description + local main_description_size_mb=0 + local main_description_size_text="" + + # Check for MB and M values in main description (before brackets) + local main_part=$(echo "$description_text" | sed 's/(.*//') # Remove bracket content + + # Extract M values (not followed by B) and MB values + local m_values=$(echo "$main_part" | grep -oE '([0-9]+\.?[0-9]*)M' | grep -v 'MB' | sed 's/M$//') + local mb_values=$(echo "$main_part" | grep -oE '([0-9]+\.?[0-9]*)MB' | sed 's/MB//') + + # Combine both M and MB values + local all_mb_values=$(echo -e "$m_values\n$mb_values" | grep -v '^$') + + # Find the largest MB value in main description + local largest_mb_int=0 + while IFS= read -r value; do + if [[ "$value" =~ ^([0-9]+)\.([0-9]+)$ ]]; then + local whole="${BASH_REMATCH[1]}" + local decimal="${BASH_REMATCH[2]}" + local value_int=$((whole * 10 + decimal)) + elif [[ "$value" =~ ^([0-9]+)$ ]]; then + local value_int=$((value * 10)) + else + continue + fi + + if [ "$value_int" -gt "$largest_mb_int" ]; then + largest_mb_int=$value_int + main_description_size_text="${value}M" + fi + done <<< "$all_mb_values" + + if [ "$largest_mb_int" -gt 0 ]; then + # Found size in main description + if [ "$largest_mb_int" -gt $((max_flash_mb * 10)) ]; then + print_error "Partition scheme '$scheme' (${main_description_size_text} from description) exceeds available flash size (${max_flash_mb}MB) for board '$board_name'" + exit 1 + else + echo " ✓ Partition scheme '$scheme' is valid for ${max_flash_mb}MB flash (size from description: ${main_description_size_text})" + fi + else + # No size in main description, check bracket content + local bracket_content + bracket_content=$(echo "$description_text" | grep -oE '\([^)]+\)' | head -1) + + if [ -n "$bracket_content" ]; then + # Calculate total size from all components in brackets + local total_size_mb=0 + + # Extract and sum MB values + local mb_sum=0 + while IFS= read -r value; do + if [[ "$value" =~ ^([0-9]+)\.([0-9]+)$ ]]; then + local whole="${BASH_REMATCH[1]}" + local decimal="${BASH_REMATCH[2]}" + # Convert decimal to integer (e.g., 1.3 -> 13, 6.93 -> 69) + # Handle multi-digit decimals: 6.93 -> 6*10 + 9 = 69 (round down) + local decimal_int=$((decimal / 10)) + mb_sum=$((mb_sum + whole * 10 + decimal_int)) + elif [[ "$value" =~ ^([0-9]+)$ ]]; then + mb_sum=$((mb_sum + value * 10)) + fi + done < <(echo "$bracket_content" | grep -oE '([0-9]+\.?[0-9]*)MB' | sed 's/MB//') + + # Extract and sum KB values (convert to MB tenths) + local kb_sum=0 + while IFS= read -r value; do + if [[ "$value" =~ ^([0-9]+)\.([0-9]+)$ ]]; then + local whole="${BASH_REMATCH[1]}" + local decimal="${BASH_REMATCH[2]}" + # Convert KB to MB tenths: (whole.decimal * 10) / 1024, rounded + local kb_tenths=$((whole * 10 + decimal)) + kb_sum=$((kb_sum + (kb_tenths * 10 + 512) / 1024)) + elif [[ "$value" =~ ^([0-9]+)$ ]]; then + # Convert KB to MB tenths: value * 10 / 1024, rounded + kb_sum=$((kb_sum + (value * 10 + 512) / 1024)) + fi + done < <(echo "$bracket_content" | grep -oE '([0-9]+\.?[0-9]*)KB' | sed 's/KB//') + + # Sum all values and convert back to MB (divide by 10, rounded) + total_size_mb=$(( (mb_sum + kb_sum + 5) / 10 )) + + if [ "$total_size_mb" -gt 0 ]; then + # Found size in description + if [ "$total_size_mb" -gt "$max_flash_mb" ]; then + print_error "Partition scheme '$scheme' (${total_size_mb}MB from description) exceeds available flash size (${max_flash_mb}MB) for board '$board_name'" + exit 1 + else + echo " ✓ Partition scheme '$scheme' is valid for ${max_flash_mb}MB flash (size from description: ${total_size_mb}MB)" + fi + else + # No size indicator found in brackets, check upload maximum size + validate_scheme_upload_size "$scheme" "$board_name" "$boards_file" "$max_flash_mb" + fi + else + # No brackets found, check upload maximum size + validate_scheme_upload_size "$scheme" "$board_name" "$boards_file" "$max_flash_mb" + fi + fi + fi +} + +# Helper function to validate upload maximum size for a specific partition scheme +validate_scheme_upload_size() { + local scheme="$1" + local board_name="$2" + local boards_file="$3" + local max_flash_mb="$4" + + # Get upload maximum size for this specific scheme + local upload_size + upload_size=$(grep "^$board_name.menu.PartitionScheme\.$scheme\." "$boards_file" | grep "\.upload\.maximum_size=" | head -1 | cut -d'=' -f2) + + if [ -z "$upload_size" ]; then + echo " ✓ Partition scheme '$scheme' is valid for ${max_flash_mb}MB flash (no upload size limit)" + return 0 + fi + + # Convert flash size to bytes for comparison + local max_flash_bytes=$((max_flash_mb * 1024 * 1024)) + + # Check upload size against maximum flash size + if [ "$upload_size" -gt "$max_flash_bytes" ]; then + local upload_mb=$(( (upload_size + 524288) / 1048576 )) + print_error "Partition scheme '$scheme' upload size (${upload_mb}MB, ${upload_size} bytes) exceeds available flash size (${max_flash_mb}MB) for board '$board_name'" + exit 1 fi + + local upload_mb=$(( (upload_size + 524288) / 1048576 )) + echo " ✓ Partition scheme '$scheme' is valid for ${max_flash_mb}MB flash (upload size: ${upload_mb}MB)" } # Rule 4: Check for VID and PID consistency @@ -184,8 +347,6 @@ validate_vid_pid_consistency() { local board_name="$1" local boards_file="$2" - echo "Checking VID and PID consistency..." - # Get all VID and PID entries for this board local vid_entries local pid_entries @@ -228,37 +389,7 @@ validate_vid_pid_consistency() { exit 1 fi - print_success "VID and PID consistency check passed" -} - -# Helper function to validate upload maximum size for a specific partition scheme -validate_scheme_upload_size() { - local scheme="$1" - local board_name="$2" - local boards_file="$3" - local max_flash_mb="$4" - - # Get upload maximum size for this specific scheme - local upload_size - upload_size=$(grep "^$board_name.menu.PartitionScheme\..*\.build\.partitions=$scheme" "$boards_file" -A1 | grep "\.upload\.maximum_size=" | head -1 | cut -d'=' -f2) - - if [ -z "$upload_size" ]; then - print_success "Partition scheme '$scheme' is valid for ${max_flash_mb}MB flash (no upload size limit)" - return 0 - fi - - # Convert flash size to bytes for comparison - local max_flash_bytes=$((max_flash_mb * 1024 * 1024)) - - # Check upload size against maximum flash size - if [ "$upload_size" -gt "$max_flash_bytes" ]; then - local upload_mb=$((upload_size / 1024 / 1024)) - print_error "Partition scheme '$scheme' upload size (${upload_mb}MB, ${upload_size} bytes) exceeds available flash size (${max_flash_mb}MB) for board '$board_name'" - exit 1 - fi - - local upload_mb=$((upload_size / 1024 / 1024)) - print_success "Partition scheme '$scheme' is valid for ${max_flash_mb}MB flash (upload size: ${upload_mb}MB)" + echo " ✓ VID and PID consistency check passed" } # Future validation rules can be added here From 9454c043029a1f5135e32a4c60033173dee39861 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Proch=C3=A1zka?= <90197375+P-R-O-C-H-Y@users.noreply.github.com> Date: Mon, 6 Oct 2025 13:03:15 +0200 Subject: [PATCH 03/10] ci: Add rule for debug level menu --- .github/scripts/validate_board.sh | 63 ++++++++++++++++++++++++++----- 1 file changed, 54 insertions(+), 9 deletions(-) diff --git a/.github/scripts/validate_board.sh b/.github/scripts/validate_board.sh index 1a72bdce297..61acdd0e8bf 100755 --- a/.github/scripts/validate_board.sh +++ b/.github/scripts/validate_board.sh @@ -46,10 +46,15 @@ validate_board() { validate_vid_pid_consistency "$board_name" "$boards_file" echo "" + # Rule 5: Check for DebugLevel menu + echo "Rule 5: DebugLevel Menu Validation" + echo "==================================" + validate_debug_level_menu "$board_name" "$boards_file" + echo "" + # Add more validation rules here as needed - # Rule 5: Future validation rules can be added here echo "==========================================" - print_success "🎉 ALL VALIDATION RULES PASSED for board '$board_name'" + print_success "ALL VALIDATION RULES PASSED for board '$board_name'" echo "==========================================" } @@ -392,13 +397,53 @@ validate_vid_pid_consistency() { echo " ✓ VID and PID consistency check passed" } -# Future validation rules can be added here -# Example: -# validate_custom_rule() { -# local board_name="$1" -# local boards_file="$2" -# # Add custom validation logic here -# } +# Rule 5: Check for DebugLevel menu +validate_debug_level_menu() { + local board_name="$1" + local boards_file="$2" + + # Required DebugLevel menu options + local required_debug_levels=("none" "error" "warn" "info" "debug" "verbose") + local missing_levels=() + + # Check if DebugLevel menu exists + if ! grep -q "^$board_name.menu.DebugLevel\." "$boards_file"; then + print_error "Missing DebugLevel menu for board '$board_name'" + exit 1 + fi + + # Check each required debug level + for level in "${required_debug_levels[@]}"; do + if ! grep -q "^$board_name.menu.DebugLevel.$level=" "$boards_file"; then + missing_levels+=("$level") + fi + done + + if [ ${#missing_levels[@]} -gt 0 ]; then + print_error "Missing DebugLevel menu options for board '$board_name':" + printf ' - %s\n' "${missing_levels[@]}" + exit 1 + fi + + # Check that each debug level has the correct build.code_debug value + local code_debug_values=("0" "1" "2" "3" "4" "5") + local debug_level_index=0 + + for level in "${required_debug_levels[@]}"; do + local expected_value="${code_debug_values[$debug_level_index]}" + local actual_value + actual_value=$(grep "^$board_name.menu.DebugLevel.$level.build.code_debug=" "$boards_file" | cut -d'=' -f2) + + if [ "$actual_value" != "$expected_value" ]; then + print_error "Invalid code_debug value for DebugLevel '$level' in board '$board_name': expected '$expected_value', found '$actual_value'" + exit 1 + fi + + debug_level_index=$((debug_level_index + 1)) + done + + echo " ✓ DebugLevel menu validation completed" +} # Main execution main() { From 53584c99245784e8b00d15880764a53969175ddb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Proch=C3=A1zka?= <90197375+P-R-O-C-H-Y@users.noreply.github.com> Date: Mon, 6 Oct 2025 13:05:17 +0200 Subject: [PATCH 04/10] ci: revert nano_nora changes --- boards.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/boards.txt b/boards.txt index 61a97b28c5d..e4031b618e1 100644 --- a/boards.txt +++ b/boards.txt @@ -42280,8 +42280,6 @@ nano_nora.upload.tool.network=esp_ota nano_nora.upload.protocol=serial nano_nora.upload.maximum_size=3145728 nano_nora.upload.maximum_data_size=327680 -nano_nora.upload.flags= -nano_nora.upload.extra_flags= nano_nora.upload.use_1200bps_touch=false nano_nora.upload.wait_for_upload_port=false From 38b7880246ad68fd35c0ede7f540adfa97fb6f3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Proch=C3=A1zka?= <90197375+P-R-O-C-H-Y@users.noreply.github.com> Date: Mon, 6 Oct 2025 13:39:54 +0200 Subject: [PATCH 05/10] fix(board): Add missing Verbose debug level --- boards.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/boards.txt b/boards.txt index e4031b618e1..4c52a53ae9d 100644 --- a/boards.txt +++ b/boards.txt @@ -5867,6 +5867,8 @@ S_ODI_Ultra.menu.DebugLevel.info=Info S_ODI_Ultra.menu.DebugLevel.info.build.code_debug=3 S_ODI_Ultra.menu.DebugLevel.debug=Debug S_ODI_Ultra.menu.DebugLevel.debug.build.code_debug=4 +S_ODI_Ultra.menu.DebugLevel.verbose=Verbose +S_ODI_Ultra.menu.DebugLevel.verbose.build.code_debug=5 S_ODI_Ultra.menu.EraseFlash.none=Disabled S_ODI_Ultra.menu.EraseFlash.none.upload.erase_cmd= @@ -18981,6 +18983,8 @@ esp32doit-devkit-v1.menu.DebugLevel.info=Info esp32doit-devkit-v1.menu.DebugLevel.info.build.code_debug=3 esp32doit-devkit-v1.menu.DebugLevel.debug=Debug esp32doit-devkit-v1.menu.DebugLevel.debug.build.code_debug=4 +esp32doit-devkit-v1.menu.DebugLevel.verbose=Verbose +esp32doit-devkit-v1.menu.DebugLevel.verbose.build.code_debug=5 esp32doit-devkit-v1.menu.EraseFlash.none=Disabled esp32doit-devkit-v1.menu.EraseFlash.none.upload.erase_cmd= @@ -31028,6 +31032,8 @@ vintlabs-devkit-v1.menu.DebugLevel.info=Info vintlabs-devkit-v1.menu.DebugLevel.info.build.code_debug=3 vintlabs-devkit-v1.menu.DebugLevel.debug=Debug vintlabs-devkit-v1.menu.DebugLevel.debug.build.code_debug=4 +vintlabs-devkit-v1.menu.DebugLevel.verbose=Verbose +vintlabs-devkit-v1.menu.DebugLevel.verbose.build.code_debug=5 vintlabs-devkit-v1.menu.EraseFlash.none=Disabled vintlabs-devkit-v1.menu.EraseFlash.none.upload.erase_cmd= From 550c02d1e7a606148ead291af2e38d868d6b6b7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Proch=C3=A1zka?= <90197375+P-R-O-C-H-Y@users.noreply.github.com> Date: Mon, 6 Oct 2025 13:47:06 +0200 Subject: [PATCH 06/10] fix(boards): Add missing debug level menus --- boards.txt | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/boards.txt b/boards.txt index 4c52a53ae9d..94468746e87 100644 --- a/boards.txt +++ b/boards.txt @@ -42347,6 +42347,19 @@ nano_nora.menu.USBMode.hwcdc=Debug mode (Hardware CDC) nano_nora.menu.USBMode.hwcdc.build.usb_mode=1 nano_nora.menu.USBMode.hwcdc.debug.executable={build.path}/{build.project_name}.elf +nano_nora.menu.DebugLevel.none=None +nano_nora.menu.DebugLevel.none.build.code_debug=0 +nano_nora.menu.DebugLevel.error=Error +nano_nora.menu.DebugLevel.error.build.code_debug=1 +nano_nora.menu.DebugLevel.warn=Warn +nano_nora.menu.DebugLevel.warn.build.code_debug=2 +nano_nora.menu.DebugLevel.info=Info +nano_nora.menu.DebugLevel.info.build.code_debug=3 +nano_nora.menu.DebugLevel.debug=Debug +nano_nora.menu.DebugLevel.debug.build.code_debug=4 +nano_nora.menu.DebugLevel.verbose=Verbose +nano_nora.menu.DebugLevel.verbose.build.code_debug=5 + ############################################################## makergo_c3_supermini.name=MakerGO ESP32 C3 SuperMini @@ -51946,6 +51959,19 @@ kodedot.recipe.hooks.objcopy.postobjcopy.3.pattern_args= kodedot.recipe.output.save_file={build.project_name}.ino.bin +kodedot.menu.DebugLevel.none=None +kodedot.menu.DebugLevel.none.build.code_debug=0 +kodedot.menu.DebugLevel.error=Error +kodedot.menu.DebugLevel.error.build.code_debug=1 +kodedot.menu.DebugLevel.warn=Warn +kodedot.menu.DebugLevel.warn.build.code_debug=2 +kodedot.menu.DebugLevel.info=Info +kodedot.menu.DebugLevel.info.build.code_debug=3 +kodedot.menu.DebugLevel.debug=Debug +kodedot.menu.DebugLevel.debug.build.code_debug=4 +kodedot.menu.DebugLevel.verbose=Verbose +kodedot.menu.DebugLevel.verbose.build.code_debug=5 + ############################################################## # FED4 Board From c009640939962379cdb76c413194a90cb7c744f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Proch=C3=A1zka?= <90197375+P-R-O-C-H-Y@users.noreply.github.com> Date: Mon, 6 Oct 2025 13:51:33 +0200 Subject: [PATCH 07/10] fix(board): Add missing upload flags and extra_flags --- boards.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/boards.txt b/boards.txt index 94468746e87..f7141dd410e 100644 --- a/boards.txt +++ b/boards.txt @@ -42286,6 +42286,8 @@ nano_nora.upload.tool.network=esp_ota nano_nora.upload.protocol=serial nano_nora.upload.maximum_size=3145728 nano_nora.upload.maximum_data_size=327680 +nano_nora.upload.flags= +nano_nora.upload.extra_flags= nano_nora.upload.use_1200bps_touch=false nano_nora.upload.wait_for_upload_port=false From abcfcbc6a8ad0da89910d05afd1ac5fb6b8c56c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Proch=C3=A1zka?= <90197375+P-R-O-C-H-Y@users.noreply.github.com> Date: Mon, 6 Oct 2025 17:50:58 +0200 Subject: [PATCH 08/10] ci: Add rule for duplicate lines and extend vid/pid rule --- .github/scripts/validate_board.sh | 136 ++++++++++++++++++++++++- validation_summary_20251006_164352.txt | 1 + validation_summary_20251006_164403.txt | 78 ++++++++++++++ 3 files changed, 210 insertions(+), 5 deletions(-) create mode 100644 validation_summary_20251006_164352.txt create mode 100644 validation_summary_20251006_164403.txt diff --git a/.github/scripts/validate_board.sh b/.github/scripts/validate_board.sh index 61acdd0e8bf..23b8cddcd20 100755 --- a/.github/scripts/validate_board.sh +++ b/.github/scripts/validate_board.sh @@ -52,6 +52,12 @@ validate_board() { validate_debug_level_menu "$board_name" "$boards_file" echo "" + # Rule 6: Check for duplicate lines + echo "Rule 6: Duplicate Lines Validation" + echo "==================================" + validate_no_duplicates "$board_name" "$boards_file" + echo "" + # Add more validation rules here as needed echo "==========================================" print_success "ALL VALIDATION RULES PASSED for board '$board_name'" @@ -112,6 +118,7 @@ validate_required_properties() { echo " ✓ Required properties validation completed" } + # Rule 3: Check for valid partition schemes for available flash sizes validate_partition_schemes() { local board_name="$1" @@ -352,16 +359,29 @@ validate_vid_pid_consistency() { local board_name="$1" local boards_file="$2" - # Get all VID and PID entries for this board + # Get all VID and PID entries for this board (including upload_port entries) local vid_entries local pid_entries vid_entries=$(grep "^$board_name\.vid\." "$boards_file" | sort) pid_entries=$(grep "^$board_name\.pid\." "$boards_file" | sort) + # Also get upload_port VID and PID entries + local upload_port_vid_entries + local upload_port_pid_entries + + upload_port_vid_entries=$(grep "^$board_name\.upload_port\..*\.vid=" "$boards_file" | sort) + upload_port_pid_entries=$(grep "^$board_name\.upload_port\..*\.pid=" "$boards_file" | sort) + # Check for duplicate VID entries with same index but different values + local all_vid_entries="$vid_entries" + if [ -n "$upload_port_vid_entries" ]; then + all_vid_entries="$all_vid_entries +$upload_port_vid_entries" + fi + local vid_duplicates - vid_duplicates=$(echo "$vid_entries" | cut -d'=' -f1 | sort | uniq -d) + vid_duplicates=$(echo "$all_vid_entries" | cut -d'=' -f1 | sort | uniq -d) if [ -n "$vid_duplicates" ]; then print_error "Found duplicate VID entries with different values for board '$board_name':" @@ -370,8 +390,14 @@ validate_vid_pid_consistency() { fi # Check for duplicate PID entries with same index but different values + local all_pid_entries="$pid_entries" + if [ -n "$upload_port_pid_entries" ]; then + all_pid_entries="$all_pid_entries +$upload_port_pid_entries" + fi + local pid_duplicates - pid_duplicates=$(echo "$pid_entries" | cut -d'=' -f1 | sort | uniq -d) + pid_duplicates=$(echo "$all_pid_entries" | cut -d'=' -f1 | sort | uniq -d) if [ -n "$pid_duplicates" ]; then print_error "Found duplicate PID entries with different values for board '$board_name':" @@ -383,8 +409,26 @@ validate_vid_pid_consistency() { local vid_indices local pid_indices - vid_indices=$(echo "$vid_entries" | cut -d'=' -f1 | sed "s/^$board_name\.vid\.//" | sort -n) - pid_indices=$(echo "$pid_entries" | cut -d'=' -f1 | sed "s/^$board_name\.pid\.//" | sort -n) + # Get indices from regular vid/pid entries + local regular_vid_indices=$(echo "$vid_entries" | cut -d'=' -f1 | sed "s/^$board_name\.vid\.//" | sort -n) + local regular_pid_indices=$(echo "$pid_entries" | cut -d'=' -f1 | sed "s/^$board_name\.pid\.//" | sort -n) + + # Get indices from upload_port entries + local upload_vid_indices=$(echo "$upload_port_vid_entries" | cut -d'=' -f1 | sed "s/^$board_name\.upload_port\.//" | sed "s/\.vid$//" | sort -n) + local upload_pid_indices=$(echo "$upload_port_pid_entries" | cut -d'=' -f1 | sed "s/^$board_name\.upload_port\.//" | sed "s/\.pid$//" | sort -n) + + # Combine indices + vid_indices="$regular_vid_indices" + if [ -n "$upload_vid_indices" ]; then + vid_indices="$vid_indices +$upload_vid_indices" + fi + + pid_indices="$regular_pid_indices" + if [ -n "$upload_pid_indices" ]; then + pid_indices="$pid_indices +$upload_pid_indices" + fi # Check if VID and PID indices match if [ "$vid_indices" != "$pid_indices" ]; then @@ -394,6 +438,48 @@ validate_vid_pid_consistency() { exit 1 fi + # Check that no VID/PID combination matches esp32_family (0x303a/0x1001) + local esp32_family_vid="0x303a" + local esp32_family_pid="0x1001" + + # Check regular vid/pid entries + if [ -n "$vid_entries" ] && [ -n "$pid_entries" ]; then + while IFS= read -r vid_line; do + if [ -n "$vid_line" ]; then + local vid_index=$(echo "$vid_line" | cut -d'=' -f1 | sed "s/^$board_name\.vid\.//") + local vid_value=$(echo "$vid_line" | cut -d'=' -f2) + + # Find corresponding PID + local pid_value + pid_value=$(grep "^$board_name\.pid\.$vid_index=" "$boards_file" | cut -d'=' -f2) + + if [ "$vid_value" = "$esp32_family_vid" ] && [ "$pid_value" = "$esp32_family_pid" ]; then + print_error "Board '$board_name' VID/PID combination ($vid_value/$pid_value) matches esp32_family VID/PID (0x303a/0x1001) - this is not allowed" + exit 1 + fi + fi + done <<< "$vid_entries" + fi + + # Check upload_port vid/pid entries + if [ -n "$upload_port_vid_entries" ] && [ -n "$upload_port_pid_entries" ]; then + while IFS= read -r vid_line; do + if [ -n "$vid_line" ]; then + local vid_index=$(echo "$vid_line" | cut -d'=' -f1 | sed "s/^$board_name\.upload_port\.//" | sed "s/\.vid$//") + local vid_value=$(echo "$vid_line" | cut -d'=' -f2) + + # Find corresponding PID + local pid_value + pid_value=$(grep "^$board_name\.upload_port\.$vid_index\.pid=" "$boards_file" | cut -d'=' -f2) + + if [ "$vid_value" = "$esp32_family_vid" ] && [ "$pid_value" = "$esp32_family_pid" ]; then + print_error "Board '$board_name' upload_port VID/PID combination ($vid_value/$pid_value) matches esp32_family VID/PID (0x303a/0x1001) - this is not allowed" + exit 1 + fi + fi + done <<< "$upload_port_vid_entries" + fi + echo " ✓ VID and PID consistency check passed" } @@ -445,6 +531,46 @@ validate_debug_level_menu() { echo " ✓ DebugLevel menu validation completed" } +# Rule 6: Check for duplicate lines +validate_no_duplicates() { + local board_name="$1" + local boards_file="$2" + + # Get all lines for this board + local board_lines + board_lines=$(grep "^$board_name\." "$boards_file") + + # Extract just the property names (before =) + local property_names + property_names=$(echo "$board_lines" | cut -d'=' -f1) + + # Find duplicates + local duplicate_lines + duplicate_lines=$(echo "$property_names" | sort | uniq -d) + + if [ -n "$duplicate_lines" ]; then + print_error "Found duplicate lines for board '$board_name':" + echo "Duplicate line keys:" + echo "$duplicate_lines" + + echo "Duplicate content details:" + while IFS= read -r line_key; do + if [ -n "$line_key" ]; then + echo " Key: $line_key" + echo " Content with line numbers:" + local key_only=$(echo "$line_key" | cut -d'=' -f1) + grep -n "^$key_only=" "$boards_file" | while IFS=':' read -r line_num full_line; do + echo " Line $line_num: $full_line" + done + echo "" + fi + done <<< "$duplicate_lines" + exit 1 + fi + + echo " ✓ No duplicate lines found" +} + # Main execution main() { if [ $# -ne 1 ]; then diff --git a/validation_summary_20251006_164352.txt b/validation_summary_20251006_164352.txt new file mode 100644 index 00000000000..d9a93a437c0 --- /dev/null +++ b/validation_summary_20251006_164352.txt @@ -0,0 +1 @@ +=== BOARD VALIDATION ERROR SUMMARY === diff --git a/validation_summary_20251006_164403.txt b/validation_summary_20251006_164403.txt new file mode 100644 index 00000000000..dbce08fbb54 --- /dev/null +++ b/validation_summary_20251006_164403.txt @@ -0,0 +1,78 @@ +=== BOARD VALIDATION ERROR SUMMARY === +Generated on: $(date) + +=== OVERALL STATISTICS === +Total boards tested: 354 +Failed boards: 45 +Passed boards: 309 + +=== ERROR CATEGORIES === + +1. BUILD.BOARD FORMAT ERRORS (Rule 1) - 37 boards: + - ttgo-lora32: contains 'ao' (only A-Z, 0-9, and _ allowed) + - ttgo-t7-v13-mini32: contains 'in' (only A-Z, 0-9, and _ allowed) + - ttgo-t7-v14-mini32: contains 'in' (only A-Z, 0-9, and _ allowed) + - ttgo-t-oi-plus: contains '-' (only A-Z, 0-9, and _ allowed) + - pocket_32: contains 'cekot' (only A-Z, 0-9, and _ allowed) + - WeMosBat: contains 'cekot' (only A-Z, 0-9, and _ allowed) + - espea32: contains 'ae' (only A-Z, 0-9, and _ allowed) + - node32s: contains 'deos' (only A-Z, 0-9, and _ allowed) + - dfrobot_beetle_esp32c3: contains 'eetle' (only A-Z, 0-9, and _ allowed) + - dfrobot_beetle_esp32c6: contains 'eetle' (only A-Z, 0-9, and _ allowed) + - dfrobot_firebeetle2_esp32c6: contains 'eetle' (only A-Z, 0-9, and _ allowed) + - adafruit_feather_esp32c6: contains 'eather' (only A-Z, 0-9, and _ allowed) + - nologo_esp32c3_super_mini: contains 'uper' (only A-Z, 0-9, and _ allowed) + - nologo_esp32s3_pico: contains 'ico' (only A-Z, 0-9, and _ allowed) + - esp32vn-iot-uno: contains 'n-iot-uno' (only A-Z, 0-9, and _ allowed) + - esp32-devkitlipo: contains 'evkitlipo' (only A-Z, 0-9, and _ allowed) + - espino32: contains 'pino' (only A-Z, 0-9, and _ allowed) + - m5stack_stickc: contains 'tickc' (only A-Z, 0-9, and _ allowed) + - m5stack_stickc_plus: contains 'tickc' (only A-Z, 0-9, and _ allowed) + - m5stack_stickc_plus2: contains 'tickc' (only A-Z, 0-9, and _ allowed) + - m5stack_atom: contains 'tom' (only A-Z, 0-9, and _ allowed) + - m5stack_atoms3: contains 'toms' (only A-Z, 0-9, and _ allowed) + - m5stack_timer_cam: contains 'imer' (only A-Z, 0-9, and _ allowed) + - m5stack_unit_cam: contains 'nit' (only A-Z, 0-9, and _ allowed) + - m5stack_poe_cam: contains 'oe' (only A-Z, 0-9, and _ allowed) + - m5stack_coreink: contains 'oreink' (only A-Z, 0-9, and _ allowed) + - m5stack_stamp_pico: contains 'tamp' (only A-Z, 0-9, and _ allowed) + - heltec_wifi_lora_32: contains 'ifi' (only A-Z, 0-9, and _ allowed) + - CoreESP32: contains 'ore' (only A-Z, 0-9, and _ allowed) + - t-beam: contains 'eam' (only A-Z, 0-9, and _ allowed) + - d-duino-32: contains 'duino-32' (only A-Z, 0-9, and _ allowed) + - lopy: contains 'opy' (only A-Z, 0-9, and _ allowed) + - lopy4: contains 'opy' (only A-Z, 0-9, and _ allowed) + - fm-devkit: contains 'evkit' (only A-Z, 0-9, and _ allowed) + - twatch: contains 'atch' (only A-Z, 0-9, and _ allowed) + - piranha_esp-32: contains 'anha' (only A-Z, 0-9, and _ allowed) + - metro_esp-32: contains 'tro' (only A-Z, 0-9, and _ allowed) + - sensesiot_weizen: contains 'eizen' (only A-Z, 0-9, and _ allowed) + - mPython: contains 'ython' (only A-Z, 0-9, and _ allowed) + +2. PARTITION SCHEME SIZE ERRORS (Rule 3) - 2 boards: + - esp32wrover: default_8MB (8MB) exceeds 4MB flash + - pico32: custom upload size (16MB) exceeds 4MB flash + +3. DUPLICATE LINES (Rule 6) - 4 boards: + - esp32s3-octal: duplicate esp32s3-octal.menu.FlashSize.16M + - lolin_s2_mini: duplicate lolin_s2_mini.build.defines + - lolin_s2_pico: duplicate lolin_s2_pico.build.defines + - heltec_wifi_lora_32: duplicate heltec_wifi_lora_32.menu.CPUFreq.160.build.f_cpu + +4. MISSING REQUIRED PROPERTIES (Rule 2) - 2 boards: + - Bee_Data_Logger: Missing upload.flags, upload.extra_flags + - Bee_Motion_S3: Missing upload.flags, upload.extra_flags + +=== SUMMARY === +- 37 boards have invalid build.board format (contains lowercase letters, hyphens, or special characters) +- 2 boards have partition schemes that exceed their available flash memory +- 4 boards have duplicate property definitions +- 2 boards are missing required upload properties +- Most common issue: build.board values contain lowercase letters instead of uppercase + +=== RECOMMENDATIONS === +1. Fix build.board values to use only uppercase letters, numbers, and underscores +2. Remove or adjust partition schemes that don't fit the board's flash capacity +3. Remove duplicate entries from boards.txt +4. Add missing upload properties for affected boards + From d1cc5114297dfd95806c58b1774f9636d9d3da04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Proch=C3=A1zka?= <90197375+P-R-O-C-H-Y@users.noreply.github.com> Date: Mon, 6 Oct 2025 17:51:29 +0200 Subject: [PATCH 09/10] fix(boards): Update boards to match new rules --- boards.txt | 319 ++++++++++------------------------------------------- 1 file changed, 59 insertions(+), 260 deletions(-) diff --git a/boards.txt b/boards.txt index f7141dd410e..4879772cdd0 100644 --- a/boards.txt +++ b/boards.txt @@ -2033,9 +2033,6 @@ esp32wrover.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5M esp32wrover.menu.PartitionScheme.default.build.partitions=default esp32wrover.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) esp32wrover.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -esp32wrover.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS) -esp32wrover.menu.PartitionScheme.default_8MB.build.partitions=default_8MB -esp32wrover.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 esp32wrover.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) esp32wrover.menu.PartitionScheme.minimal.build.partitions=minimal esp32wrover.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) @@ -2056,9 +2053,6 @@ esp32wrover.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 esp32wrover.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) esp32wrover.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs esp32wrover.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -esp32wrover.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) -esp32wrover.menu.PartitionScheme.fatflash.build.partitions=ffat -esp32wrover.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 esp32wrover.menu.PartitionScheme.rainmaker=RainMaker 4MB esp32wrover.menu.PartitionScheme.rainmaker.build.partitions=rainmaker esp32wrover.menu.PartitionScheme.rainmaker.upload.maximum_size=1966080 @@ -2067,7 +2061,7 @@ esp32wrover.menu.PartitionScheme.rainmaker_4MB.build.partitions=rainmaker_4MB_no esp32wrover.menu.PartitionScheme.rainmaker_4MB.upload.maximum_size=4038656 esp32wrover.menu.PartitionScheme.custom=Custom esp32wrover.menu.PartitionScheme.custom.build.partitions= -esp32wrover.menu.PartitionScheme.custom.upload.maximum_size=16777216 +esp32wrover.menu.PartitionScheme.custom.upload.maximum_size=4194304 esp32wrover.menu.FlashMode.qio=QIO esp32wrover.menu.FlashMode.qio.build.flash_mode=dio @@ -2159,7 +2153,7 @@ pico32.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs pico32.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 pico32.menu.PartitionScheme.custom=Custom pico32.menu.PartitionScheme.custom.build.partitions= -pico32.menu.PartitionScheme.custom.upload.maximum_size=16777216 +pico32.menu.PartitionScheme.custom.upload.maximum_size=4194304 pico32.menu.UploadSpeed.921600=921600 pico32.menu.UploadSpeed.921600.upload.speed=921600 @@ -2284,12 +2278,11 @@ esp32s3-octal.menu.FlashMode.dio.build.boot_freq=80m esp32s3-octal.menu.FlashMode.dio.build.flash_freq=80m esp32s3-octal.menu.FlashSize.16M=16MB (128Mb) +esp32s3-octal.menu.FlashSize.16M.build.flash_size=16MB esp32s3-octal.menu.FlashSize.4M=4MB (32Mb) esp32s3-octal.menu.FlashSize.4M.build.flash_size=4MB esp32s3-octal.menu.FlashSize.8M=8MB (64Mb) esp32s3-octal.menu.FlashSize.8M.build.flash_size=8MB -esp32s3-octal.menu.FlashSize.16M=16MB (128Mb) -esp32s3-octal.menu.FlashSize.16M.build.flash_size=16MB esp32s3-octal.menu.FlashSize.32M=32MB (256Mb) esp32s3-octal.menu.FlashSize.32M.build.flash_size=32MB @@ -2331,6 +2324,8 @@ esp32s3-octal.menu.UploadMode.cdc.upload.use_1200bps_touch=true esp32s3-octal.menu.UploadMode.cdc.upload.wait_for_upload_port=true esp32s3-octal.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) +esp32s3-octal.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB +esp32s3-octal.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 esp32s3-octal.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) esp32s3-octal.menu.PartitionScheme.default.build.partitions=default esp32s3-octal.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -2361,9 +2356,6 @@ esp32s3-octal.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 esp32s3-octal.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) esp32s3-octal.menu.PartitionScheme.fatflash.build.partitions=ffat esp32s3-octal.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 -esp32s3-octal.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -esp32s3-octal.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -esp32s3-octal.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 esp32s3-octal.menu.PartitionScheme.rainmaker=RainMaker 4MB esp32s3-octal.menu.PartitionScheme.rainmaker.build.partitions=rainmaker esp32s3-octal.menu.PartitionScheme.rainmaker.upload.maximum_size=1966080 @@ -2612,15 +2604,9 @@ esp32s3usbotg.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 esp32s3usbotg.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) esp32s3usbotg.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs esp32s3usbotg.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -esp32s3usbotg.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) -esp32s3usbotg.menu.PartitionScheme.fatflash.build.partitions=ffat -esp32s3usbotg.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 -esp32s3usbotg.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -esp32s3usbotg.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -esp32s3usbotg.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 esp32s3usbotg.menu.PartitionScheme.custom=Custom esp32s3usbotg.menu.PartitionScheme.custom.build.partitions= -esp32s3usbotg.menu.PartitionScheme.custom.upload.maximum_size=16777216 +esp32s3usbotg.menu.PartitionScheme.custom.upload.maximum_size=8388608 esp32s3usbotg.menu.DebugLevel.none=None esp32s3usbotg.menu.DebugLevel.none.build.code_debug=0 @@ -2698,9 +2684,6 @@ esp32s3camlcd.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1. esp32s3camlcd.menu.PartitionScheme.default.build.partitions=default esp32s3camlcd.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) esp32s3camlcd.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -esp32s3camlcd.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS) -esp32s3camlcd.menu.PartitionScheme.default_8MB.build.partitions=default_8MB -esp32s3camlcd.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 esp32s3camlcd.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) esp32s3camlcd.menu.PartitionScheme.minimal.build.partitions=minimal esp32s3camlcd.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) @@ -2721,12 +2704,6 @@ esp32s3camlcd.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 esp32s3camlcd.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) esp32s3camlcd.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs esp32s3camlcd.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -esp32s3camlcd.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) -esp32s3camlcd.menu.PartitionScheme.fatflash.build.partitions=ffat -esp32s3camlcd.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 -esp32s3camlcd.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -esp32s3camlcd.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -esp32s3camlcd.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 esp32s3camlcd.menu.UploadSpeed.921600=921600 esp32s3camlcd.menu.UploadSpeed.921600.upload.speed=921600 @@ -5394,7 +5371,7 @@ um_tinyc6.build.bootloader_addr=0x0 um_tinyc6.build.cdc_on_boot=1 um_tinyc6.build.f_cpu=160000000L -um_tinyc6.build.flash_size=4MB +um_tinyc6.build.flash_size=8MB um_tinyc6.build.flash_freq=80m um_tinyc6.build.flash_mode=qio um_tinyc6.build.boot=qio @@ -5439,7 +5416,7 @@ um_tinyc6.menu.PartitionScheme.zigbee_zczr.build.partitions=zigbee_zczr um_tinyc6.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720 um_tinyc6.menu.PartitionScheme.custom=Custom um_tinyc6.menu.PartitionScheme.custom.build.partitions= -um_tinyc6.menu.PartitionScheme.custom.upload.maximum_size=16777216 +um_tinyc6.menu.PartitionScheme.custom.upload.maximum_size=8388608 um_tinyc6.menu.CPUFreq.160=160MHz (WiFi) um_tinyc6.menu.CPUFreq.160.build.f_cpu=160000000L @@ -8452,7 +8429,7 @@ sparkfun_esp32s3_thing_plus.menu.PartitionScheme.zigbee_zczr.build.partitions=zi sparkfun_esp32s3_thing_plus.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720 sparkfun_esp32s3_thing_plus.menu.PartitionScheme.custom=Custom sparkfun_esp32s3_thing_plus.menu.PartitionScheme.custom.build.partitions= -sparkfun_esp32s3_thing_plus.menu.PartitionScheme.custom.upload.maximum_size=16777216 +sparkfun_esp32s3_thing_plus.menu.PartitionScheme.custom.upload.maximum_size=4194304 sparkfun_esp32s3_thing_plus.menu.CPUFreq.240=240MHz (WiFi) sparkfun_esp32s3_thing_plus.menu.CPUFreq.240.build.f_cpu=240000000L @@ -10448,8 +10425,6 @@ lolin_s2_mini.build.flash_freq=80m lolin_s2_mini.build.flash_mode=dio lolin_s2_mini.build.boot=qio lolin_s2_mini.build.partitions=default -lolin_s2_mini.build.defines= - lolin_s2_mini.build.defines=-DBOARD_HAS_PSRAM lolin_s2_mini.menu.CDCOnBoot.default=Enabled @@ -10546,8 +10521,6 @@ lolin_s2_pico.build.flash_freq=80m lolin_s2_pico.build.flash_mode=dio lolin_s2_pico.build.boot=qio lolin_s2_pico.build.partitions=default -lolin_s2_pico.build.defines= - lolin_s2_pico.build.defines=-DBOARD_HAS_PSRAM lolin_s2_pico.menu.CDCOnBoot.default=Enabled @@ -12251,9 +12224,6 @@ dfrobot_beetle_esp32c3.menu.PartitionScheme.default=Default 4MB with spiffs (1.2 dfrobot_beetle_esp32c3.menu.PartitionScheme.default.build.partitions=default dfrobot_beetle_esp32c3.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) dfrobot_beetle_esp32c3.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -dfrobot_beetle_esp32c3.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS) -dfrobot_beetle_esp32c3.menu.PartitionScheme.default_8MB.build.partitions=default_8MB -dfrobot_beetle_esp32c3.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 dfrobot_beetle_esp32c3.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) dfrobot_beetle_esp32c3.menu.PartitionScheme.minimal.build.partitions=minimal dfrobot_beetle_esp32c3.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) @@ -12274,12 +12244,6 @@ dfrobot_beetle_esp32c3.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 dfrobot_beetle_esp32c3.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) dfrobot_beetle_esp32c3.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs dfrobot_beetle_esp32c3.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -dfrobot_beetle_esp32c3.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) -dfrobot_beetle_esp32c3.menu.PartitionScheme.fatflash.build.partitions=ffat -dfrobot_beetle_esp32c3.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 -dfrobot_beetle_esp32c3.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -dfrobot_beetle_esp32c3.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -dfrobot_beetle_esp32c3.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 dfrobot_beetle_esp32c3.menu.PartitionScheme.rainmaker=RainMaker 4MB dfrobot_beetle_esp32c3.menu.PartitionScheme.rainmaker.build.partitions=rainmaker dfrobot_beetle_esp32c3.menu.PartitionScheme.rainmaker.upload.maximum_size=1966080 @@ -12440,7 +12404,7 @@ dfrobot_beetle_esp32c6.menu.PartitionScheme.zigbee_zczr.build.partitions=zigbee_ dfrobot_beetle_esp32c6.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720 dfrobot_beetle_esp32c6.menu.PartitionScheme.custom=Custom dfrobot_beetle_esp32c6.menu.PartitionScheme.custom.build.partitions= -dfrobot_beetle_esp32c6.menu.PartitionScheme.custom.upload.maximum_size=16777216 +dfrobot_beetle_esp32c6.menu.PartitionScheme.custom.upload.maximum_size=4194304 dfrobot_beetle_esp32c6.menu.CPUFreq.160=160MHz (WiFi) dfrobot_beetle_esp32c6.menu.CPUFreq.160.build.f_cpu=160000000L @@ -12986,7 +12950,7 @@ dfrobot_firebeetle2_esp32c6.menu.PartitionScheme.zigbee_zczr.build.partitions=zi dfrobot_firebeetle2_esp32c6.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720 dfrobot_firebeetle2_esp32c6.menu.PartitionScheme.custom=Custom dfrobot_firebeetle2_esp32c6.menu.PartitionScheme.custom.build.partitions= -dfrobot_firebeetle2_esp32c6.menu.PartitionScheme.custom.upload.maximum_size=16777216 +dfrobot_firebeetle2_esp32c6.menu.PartitionScheme.custom.upload.maximum_size=4194304 dfrobot_firebeetle2_esp32c6.menu.CPUFreq.160=160MHz (WiFi) dfrobot_firebeetle2_esp32c6.menu.CPUFreq.160.build.f_cpu=160000000L @@ -16134,9 +16098,6 @@ adafruit_feather_esp32c6.menu.PartitionScheme.default=Default 4MB with spiffs (1 adafruit_feather_esp32c6.menu.PartitionScheme.default.build.partitions=default adafruit_feather_esp32c6.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) adafruit_feather_esp32c6.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -adafruit_feather_esp32c6.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS) -adafruit_feather_esp32c6.menu.PartitionScheme.default_8MB.build.partitions=default_8MB -adafruit_feather_esp32c6.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 adafruit_feather_esp32c6.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) adafruit_feather_esp32c6.menu.PartitionScheme.minimal.build.partitions=minimal adafruit_feather_esp32c6.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) @@ -16157,12 +16118,6 @@ adafruit_feather_esp32c6.menu.PartitionScheme.huge_app.upload.maximum_size=31457 adafruit_feather_esp32c6.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) adafruit_feather_esp32c6.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs adafruit_feather_esp32c6.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -adafruit_feather_esp32c6.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) -adafruit_feather_esp32c6.menu.PartitionScheme.fatflash.build.partitions=ffat -adafruit_feather_esp32c6.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 -adafruit_feather_esp32c6.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -adafruit_feather_esp32c6.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -adafruit_feather_esp32c6.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 adafruit_feather_esp32c6.menu.PartitionScheme.rainmaker=RainMaker 4MB adafruit_feather_esp32c6.menu.PartitionScheme.rainmaker.build.partitions=rainmaker adafruit_feather_esp32c6.menu.PartitionScheme.rainmaker.upload.maximum_size=1966080 @@ -16177,7 +16132,7 @@ adafruit_feather_esp32c6.menu.PartitionScheme.zigbee_zczr.build.partitions=zigbe adafruit_feather_esp32c6.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720 adafruit_feather_esp32c6.menu.PartitionScheme.custom=Custom adafruit_feather_esp32c6.menu.PartitionScheme.custom.build.partitions= -adafruit_feather_esp32c6.menu.PartitionScheme.custom.upload.maximum_size=16777216 +adafruit_feather_esp32c6.menu.PartitionScheme.custom.upload.maximum_size=4194304 adafruit_feather_esp32c6.menu.CPUFreq.160=160MHz (WiFi) adafruit_feather_esp32c6.menu.CPUFreq.160.build.f_cpu=160000000L @@ -18362,9 +18317,6 @@ nologo_esp32c3_super_mini.menu.PartitionScheme.default=Default 4MB with spiffs ( nologo_esp32c3_super_mini.menu.PartitionScheme.default.build.partitions=default nologo_esp32c3_super_mini.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) nologo_esp32c3_super_mini.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -nologo_esp32c3_super_mini.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS) -nologo_esp32c3_super_mini.menu.PartitionScheme.default_8MB.build.partitions=default_8MB -nologo_esp32c3_super_mini.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 nologo_esp32c3_super_mini.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) nologo_esp32c3_super_mini.menu.PartitionScheme.minimal.build.partitions=minimal nologo_esp32c3_super_mini.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) @@ -18613,12 +18565,6 @@ nologo_esp32s3_pico.menu.PartitionScheme.rainmaker_4MB.upload.maximum_size=40386 nologo_esp32s3_pico.menu.PartitionScheme.rainmaker_8MB=RainMaker 8MB nologo_esp32s3_pico.menu.PartitionScheme.rainmaker_8MB.build.partitions=rainmaker_8MB nologo_esp32s3_pico.menu.PartitionScheme.rainmaker_8MB.upload.maximum_size=4096000 -nologo_esp32s3_pico.menu.PartitionScheme.app5M_fat24M_32MB=32M Flash (4.8MB APP/22MB FATFS) -nologo_esp32s3_pico.menu.PartitionScheme.app5M_fat24M_32MB.build.partitions=large_fat_32MB -nologo_esp32s3_pico.menu.PartitionScheme.app5M_fat24M_32MB.upload.maximum_size=4718592 -nologo_esp32s3_pico.menu.PartitionScheme.app5M_little24M_32MB=32M Flash (4.8MB APP/22MB LittleFS) -nologo_esp32s3_pico.menu.PartitionScheme.app5M_little24M_32MB.build.partitions=large_littlefs_32MB -nologo_esp32s3_pico.menu.PartitionScheme.app5M_little24M_32MB.upload.maximum_size=4718592 nologo_esp32s3_pico.menu.PartitionScheme.esp_sr_16=ESP SR 16M (3MB APP/7MB SPIFFS/2.9MB MODEL) nologo_esp32s3_pico.menu.PartitionScheme.esp_sr_16.upload.maximum_size=3145728 nologo_esp32s3_pico.menu.PartitionScheme.esp_sr_16.upload.extra_flags=0xD10000 {build.path}/srmodels.bin @@ -19589,8 +19535,6 @@ esp32-devkitlipo.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 esp32-devkitlipo.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (Large APPS with OTA) esp32-devkitlipo.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs esp32-devkitlipo.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -esp32-devkitlipo.menu.PartitionScheme.fatflash=16M Fat -esp32-devkitlipo.menu.PartitionScheme.fatflash.build.partitions=ffat esp32-devkitlipo.menu.FlashMode.qio=QIO esp32-devkitlipo.menu.FlashMode.qio.build.flash_mode=dio @@ -21959,9 +21903,6 @@ m5stack_stickc.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1 m5stack_stickc.menu.PartitionScheme.default.build.partitions=default m5stack_stickc.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) m5stack_stickc.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -m5stack_stickc.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS) -m5stack_stickc.menu.PartitionScheme.default_8MB.build.partitions=default_8MB -m5stack_stickc.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 m5stack_stickc.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) m5stack_stickc.menu.PartitionScheme.minimal.build.partitions=minimal m5stack_stickc.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) @@ -21979,9 +21920,6 @@ m5stack_stickc.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576 m5stack_stickc.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) m5stack_stickc.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs m5stack_stickc.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -m5stack_stickc.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) -m5stack_stickc.menu.PartitionScheme.fatflash.build.partitions=ffat -m5stack_stickc.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 m5stack_stickc.menu.PartitionScheme.rainmaker=RainMaker 4MB m5stack_stickc.menu.PartitionScheme.rainmaker.build.partitions=rainmaker m5stack_stickc.menu.PartitionScheme.rainmaker.upload.maximum_size=1966080 @@ -21990,7 +21928,7 @@ m5stack_stickc.menu.PartitionScheme.rainmaker_4MB.build.partitions=rainmaker_4MB m5stack_stickc.menu.PartitionScheme.rainmaker_4MB.upload.maximum_size=4038656 m5stack_stickc.menu.PartitionScheme.custom=Custom m5stack_stickc.menu.PartitionScheme.custom.build.partitions= -m5stack_stickc.menu.PartitionScheme.custom.upload.maximum_size=16777216 +m5stack_stickc.menu.PartitionScheme.custom.upload.maximum_size=4194304 m5stack_stickc.menu.CPUFreq.240=240MHz (WiFi/BT) m5stack_stickc.menu.CPUFreq.240.build.f_cpu=240000000L @@ -22114,9 +22052,6 @@ m5stack_stickc_plus.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB m5stack_stickc_plus.menu.PartitionScheme.default.build.partitions=default m5stack_stickc_plus.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) m5stack_stickc_plus.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -m5stack_stickc_plus.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS) -m5stack_stickc_plus.menu.PartitionScheme.default_8MB.build.partitions=default_8MB -m5stack_stickc_plus.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 m5stack_stickc_plus.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) m5stack_stickc_plus.menu.PartitionScheme.minimal.build.partitions=minimal m5stack_stickc_plus.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) @@ -22134,9 +22069,6 @@ m5stack_stickc_plus.menu.PartitionScheme.noota_3gffat.upload.maximum_size=104857 m5stack_stickc_plus.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) m5stack_stickc_plus.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs m5stack_stickc_plus.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -m5stack_stickc_plus.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) -m5stack_stickc_plus.menu.PartitionScheme.fatflash.build.partitions=ffat -m5stack_stickc_plus.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 m5stack_stickc_plus.menu.PartitionScheme.rainmaker=RainMaker 4MB m5stack_stickc_plus.menu.PartitionScheme.rainmaker.build.partitions=rainmaker m5stack_stickc_plus.menu.PartitionScheme.rainmaker.upload.maximum_size=1966080 @@ -22145,7 +22077,7 @@ m5stack_stickc_plus.menu.PartitionScheme.rainmaker_4MB.build.partitions=rainmake m5stack_stickc_plus.menu.PartitionScheme.rainmaker_4MB.upload.maximum_size=4038656 m5stack_stickc_plus.menu.PartitionScheme.custom=Custom m5stack_stickc_plus.menu.PartitionScheme.custom.build.partitions= -m5stack_stickc_plus.menu.PartitionScheme.custom.upload.maximum_size=16777216 +m5stack_stickc_plus.menu.PartitionScheme.custom.upload.maximum_size=4194304 m5stack_stickc_plus.menu.CPUFreq.240=240MHz (WiFi/BT) m5stack_stickc_plus.menu.CPUFreq.240.build.f_cpu=240000000L @@ -22295,9 +22227,6 @@ m5stack_stickc_plus2.menu.PartitionScheme.noota_3gffat.upload.maximum_size=10485 m5stack_stickc_plus2.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) m5stack_stickc_plus2.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs m5stack_stickc_plus2.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -m5stack_stickc_plus2.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) -m5stack_stickc_plus2.menu.PartitionScheme.fatflash.build.partitions=ffat -m5stack_stickc_plus2.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 m5stack_stickc_plus2.menu.PartitionScheme.rainmaker=RainMaker 4MB m5stack_stickc_plus2.menu.PartitionScheme.rainmaker.build.partitions=rainmaker m5stack_stickc_plus2.menu.PartitionScheme.rainmaker.upload.maximum_size=1966080 @@ -22309,7 +22238,7 @@ m5stack_stickc_plus2.menu.PartitionScheme.rainmaker_8MB.build.partitions=rainmak m5stack_stickc_plus2.menu.PartitionScheme.rainmaker_8MB.upload.maximum_size=4096000 m5stack_stickc_plus2.menu.PartitionScheme.custom=Custom m5stack_stickc_plus2.menu.PartitionScheme.custom.build.partitions= -m5stack_stickc_plus2.menu.PartitionScheme.custom.upload.maximum_size=16777216 +m5stack_stickc_plus2.menu.PartitionScheme.custom.upload.maximum_size=8388608 m5stack_stickc_plus2.menu.CPUFreq.240=240MHz (WiFi/BT) m5stack_stickc_plus2.menu.CPUFreq.240.build.f_cpu=240000000L @@ -22432,9 +22361,6 @@ m5stack_atom.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5 m5stack_atom.menu.PartitionScheme.default.build.partitions=default m5stack_atom.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) m5stack_atom.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -m5stack_atom.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS) -m5stack_atom.menu.PartitionScheme.default_8MB.build.partitions=default_8MB -m5stack_atom.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 m5stack_atom.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) m5stack_atom.menu.PartitionScheme.minimal.build.partitions=minimal m5stack_atom.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) @@ -22452,9 +22378,6 @@ m5stack_atom.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576 m5stack_atom.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) m5stack_atom.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs m5stack_atom.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -m5stack_atom.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) -m5stack_atom.menu.PartitionScheme.fatflash.build.partitions=ffat -m5stack_atom.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 m5stack_atom.menu.PartitionScheme.rainmaker=RainMaker 4MB m5stack_atom.menu.PartitionScheme.rainmaker.build.partitions=rainmaker m5stack_atom.menu.PartitionScheme.rainmaker.upload.maximum_size=1966080 @@ -22463,7 +22386,7 @@ m5stack_atom.menu.PartitionScheme.rainmaker_4MB.build.partitions=rainmaker_4MB_n m5stack_atom.menu.PartitionScheme.rainmaker_4MB.upload.maximum_size=4038656 m5stack_atom.menu.PartitionScheme.custom=Custom m5stack_atom.menu.PartitionScheme.custom.build.partitions= -m5stack_atom.menu.PartitionScheme.custom.upload.maximum_size=16777216 +m5stack_atom.menu.PartitionScheme.custom.upload.maximum_size=4194304 m5stack_atom.menu.CPUFreq.240=240MHz (WiFi/BT) m5stack_atom.menu.CPUFreq.240.build.f_cpu=240000000L @@ -22699,12 +22622,6 @@ m5stack_atoms3.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 m5stack_atoms3.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) m5stack_atoms3.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs m5stack_atoms3.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -m5stack_atoms3.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) -m5stack_atoms3.menu.PartitionScheme.fatflash.build.partitions=ffat -m5stack_atoms3.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 -m5stack_atoms3.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -m5stack_atoms3.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -m5stack_atoms3.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 m5stack_atoms3.menu.PartitionScheme.rainmaker=RainMaker 4MB m5stack_atoms3.menu.PartitionScheme.rainmaker.build.partitions=rainmaker m5stack_atoms3.menu.PartitionScheme.rainmaker.upload.maximum_size=1966080 @@ -22714,19 +22631,9 @@ m5stack_atoms3.menu.PartitionScheme.rainmaker_4MB.upload.maximum_size=4038656 m5stack_atoms3.menu.PartitionScheme.rainmaker_8MB=RainMaker 8MB m5stack_atoms3.menu.PartitionScheme.rainmaker_8MB.build.partitions=rainmaker_8MB m5stack_atoms3.menu.PartitionScheme.rainmaker_8MB.upload.maximum_size=4096000 -m5stack_atoms3.menu.PartitionScheme.app5M_fat24M_32MB=32M Flash (4.8MB APP/22MB FATFS) -m5stack_atoms3.menu.PartitionScheme.app5M_fat24M_32MB.build.partitions=large_fat_32MB -m5stack_atoms3.menu.PartitionScheme.app5M_fat24M_32MB.upload.maximum_size=4718592 -m5stack_atoms3.menu.PartitionScheme.app5M_little24M_32MB=32M Flash (4.8MB APP/22MB LittleFS) -m5stack_atoms3.menu.PartitionScheme.app5M_little24M_32MB.build.partitions=large_littlefs_32MB -m5stack_atoms3.menu.PartitionScheme.app5M_little24M_32MB.upload.maximum_size=4718592 -m5stack_atoms3.menu.PartitionScheme.esp_sr_16=ESP SR 16M (3MB APP/7MB SPIFFS/2.9MB MODEL) -m5stack_atoms3.menu.PartitionScheme.esp_sr_16.upload.maximum_size=3145728 -m5stack_atoms3.menu.PartitionScheme.esp_sr_16.upload.extra_flags=0xD10000 {build.path}/srmodels.bin -m5stack_atoms3.menu.PartitionScheme.esp_sr_16.build.partitions=esp_sr_16 m5stack_atoms3.menu.PartitionScheme.custom=Custom m5stack_atoms3.menu.PartitionScheme.custom.build.partitions= -m5stack_atoms3.menu.PartitionScheme.custom.upload.maximum_size=16777216 +m5stack_atoms3.menu.PartitionScheme.custom.upload.maximum_size=8388608 m5stack_atoms3.menu.CPUFreq.240=240MHz (WiFi) m5stack_atoms3.menu.CPUFreq.240.build.f_cpu=240000000L @@ -23244,9 +23151,6 @@ m5stack_timer_cam.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB AP m5stack_timer_cam.menu.PartitionScheme.default.build.partitions=default m5stack_timer_cam.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) m5stack_timer_cam.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -m5stack_timer_cam.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS) -m5stack_timer_cam.menu.PartitionScheme.default_8MB.build.partitions=default_8MB -m5stack_timer_cam.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 m5stack_timer_cam.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) m5stack_timer_cam.menu.PartitionScheme.minimal.build.partitions=minimal m5stack_timer_cam.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) @@ -23395,9 +23299,6 @@ m5stack_unit_cam.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP m5stack_unit_cam.menu.PartitionScheme.default.build.partitions=default m5stack_unit_cam.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) m5stack_unit_cam.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -m5stack_unit_cam.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS) -m5stack_unit_cam.menu.PartitionScheme.default_8MB.build.partitions=default_8MB -m5stack_unit_cam.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 m5stack_unit_cam.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) m5stack_unit_cam.menu.PartitionScheme.minimal.build.partitions=minimal m5stack_unit_cam.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) @@ -23779,9 +23680,6 @@ m5stack_poe_cam.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/ m5stack_poe_cam.menu.PartitionScheme.default.build.partitions=default m5stack_poe_cam.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) m5stack_poe_cam.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -m5stack_poe_cam.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS) -m5stack_poe_cam.menu.PartitionScheme.default_8MB.build.partitions=default_8MB -m5stack_poe_cam.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 m5stack_poe_cam.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) m5stack_poe_cam.menu.PartitionScheme.minimal.build.partitions=minimal m5stack_poe_cam.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) @@ -24095,9 +23993,6 @@ m5stack_coreink.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/ m5stack_coreink.menu.PartitionScheme.default.build.partitions=default m5stack_coreink.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) m5stack_coreink.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -m5stack_coreink.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS) -m5stack_coreink.menu.PartitionScheme.default_8MB.build.partitions=default_8MB -m5stack_coreink.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 m5stack_coreink.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) m5stack_coreink.menu.PartitionScheme.minimal.build.partitions=minimal m5stack_coreink.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) @@ -24118,9 +24013,6 @@ m5stack_coreink.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 m5stack_coreink.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) m5stack_coreink.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs m5stack_coreink.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -m5stack_coreink.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) -m5stack_coreink.menu.PartitionScheme.fatflash.build.partitions=ffat -m5stack_coreink.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 m5stack_coreink.menu.PartitionScheme.rainmaker=RainMaker 4MB m5stack_coreink.menu.PartitionScheme.rainmaker.build.partitions=rainmaker m5stack_coreink.menu.PartitionScheme.rainmaker.upload.maximum_size=1966080 @@ -24129,7 +24021,7 @@ m5stack_coreink.menu.PartitionScheme.rainmaker_4MB.build.partitions=rainmaker_4M m5stack_coreink.menu.PartitionScheme.rainmaker_4MB.upload.maximum_size=4038656 m5stack_coreink.menu.PartitionScheme.custom=Custom m5stack_coreink.menu.PartitionScheme.custom.build.partitions= -m5stack_coreink.menu.PartitionScheme.custom.upload.maximum_size=16777216 +m5stack_coreink.menu.PartitionScheme.custom.upload.maximum_size=4194304 m5stack_coreink.menu.CPUFreq.240=240MHz (WiFi/BT) m5stack_coreink.menu.CPUFreq.240.build.f_cpu=240000000L @@ -24249,9 +24141,6 @@ m5stack_stamp_pico.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB A m5stack_stamp_pico.menu.PartitionScheme.default.build.partitions=default m5stack_stamp_pico.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) m5stack_stamp_pico.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -m5stack_stamp_pico.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS) -m5stack_stamp_pico.menu.PartitionScheme.default_8MB.build.partitions=default_8MB -m5stack_stamp_pico.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 m5stack_stamp_pico.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) m5stack_stamp_pico.menu.PartitionScheme.minimal.build.partitions=minimal m5stack_stamp_pico.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) @@ -24272,9 +24161,6 @@ m5stack_stamp_pico.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 m5stack_stamp_pico.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) m5stack_stamp_pico.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs m5stack_stamp_pico.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -m5stack_stamp_pico.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) -m5stack_stamp_pico.menu.PartitionScheme.fatflash.build.partitions=ffat -m5stack_stamp_pico.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 m5stack_stamp_pico.menu.PartitionScheme.rainmaker=RainMaker 4MB m5stack_stamp_pico.menu.PartitionScheme.rainmaker.build.partitions=rainmaker m5stack_stamp_pico.menu.PartitionScheme.rainmaker.upload.maximum_size=1966080 @@ -24283,7 +24169,7 @@ m5stack_stamp_pico.menu.PartitionScheme.rainmaker_4MB.build.partitions=rainmaker m5stack_stamp_pico.menu.PartitionScheme.rainmaker_4MB.upload.maximum_size=4038656 m5stack_stamp_pico.menu.PartitionScheme.custom=Custom m5stack_stamp_pico.menu.PartitionScheme.custom.build.partitions= -m5stack_stamp_pico.menu.PartitionScheme.custom.upload.maximum_size=16777216 +m5stack_stamp_pico.menu.PartitionScheme.custom.upload.maximum_size=4194304 m5stack_stamp_pico.menu.CPUFreq.240=240MHz (WiFi/BT) m5stack_stamp_pico.menu.CPUFreq.240.build.f_cpu=240000000L @@ -26195,7 +26081,7 @@ heltec_wifi_lora_32.menu.CPUFreq.240.build.f_cpu=240000000L heltec_wifi_lora_32.menu.CPUFreq.160=160MHz (WiFi/BT) heltec_wifi_lora_32.menu.CPUFreq.160.build.f_cpu=160000000L heltec_wifi_lora_32.menu.CPUFreq.80=80MHz (WiFi/BT) -heltec_wifi_lora_32.menu.CPUFreq.160.build.f_cpu=80000000L +heltec_wifi_lora_32.menu.CPUFreq.80.build.f_cpu=80000000L heltec_wifi_lora_32.menu.UploadSpeed.921600=921600 heltec_wifi_lora_32.menu.UploadSpeed.921600.upload.speed=921600 @@ -31783,8 +31669,6 @@ mPython.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576 mPython.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) mPython.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs mPython.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -mPython.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) -mPython.menu.PartitionScheme.fatflash.build.partitions=ffat mPython.menu.CPUFreq.240=240MHz (WiFi/BT) mPython.menu.CPUFreq.240.build.f_cpu=240000000L @@ -33947,7 +33831,7 @@ deneyapkartv2.menu.PartitionScheme.zigbee_zczr.build.partitions=zigbee_zczr deneyapkartv2.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720 deneyapkartv2.menu.PartitionScheme.custom=Custom deneyapkartv2.menu.PartitionScheme.custom.build.partitions= -deneyapkartv2.menu.PartitionScheme.custom.upload.maximum_size=16777216 +deneyapkartv2.menu.PartitionScheme.custom.upload.maximum_size=4194304 deneyapkartv2.menu.CPUFreq.240=240MHz (WiFi) deneyapkartv2.menu.CPUFreq.240.build.f_cpu=240000000L @@ -35750,8 +35634,6 @@ dpu_esp32.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 dpu_esp32.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) dpu_esp32.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs dpu_esp32.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -dpu_esp32.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) -dpu_esp32.menu.PartitionScheme.fatflash.build.partitions=ffat dpu_esp32.menu.FlashMode.qio=QIO dpu_esp32.menu.FlashMode.qio.build.flash_mode=dio @@ -36493,9 +36375,6 @@ XIAO_ESP32C5.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 XIAO_ESP32C5.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) XIAO_ESP32C5.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs XIAO_ESP32C5.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -XIAO_ESP32C5.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) -XIAO_ESP32C5.menu.PartitionScheme.fatflash.build.partitions=ffat -XIAO_ESP32C5.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 XIAO_ESP32C5.menu.PartitionScheme.rainmaker=RainMaker 4MB XIAO_ESP32C5.menu.PartitionScheme.rainmaker.build.partitions=rainmaker XIAO_ESP32C5.menu.PartitionScheme.rainmaker.upload.maximum_size=1966080 @@ -37520,8 +37399,6 @@ Bee_Data_Logger.build.f_cpu=240000000L Bee_Data_Logger.build.flash_size=8MB Bee_Data_Logger.build.flash_freq=80m Bee_Data_Logger.build.flash_mode=dio -Bee_Data_Logger.build.partitions=default_8MB -Bee_Data_Logger.build.defines= Bee_Data_Logger.build.loop_core=-DARDUINO_RUNNING_CORE=1 Bee_Data_Logger.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1 Bee_Data_Logger.build.boot=qio @@ -41009,7 +40886,7 @@ ioxesp32.build.board=IOXESP32 ioxesp32.build.f_cpu=240000000L ioxesp32.build.flash_mode=dio ioxesp32.build.flash_size=4MB -ioxesp32ps.build.flash_freq=40m +ioxesp32.build.flash_freq=40m ioxesp32.build.boot=dio ioxesp32.build.partitions=default ioxesp32.build.defines= @@ -41019,9 +40896,6 @@ ioxesp32.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB S ioxesp32.menu.PartitionScheme.default.build.partitions=default ioxesp32.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) ioxesp32.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -ioxesp32.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS) -ioxesp32.menu.PartitionScheme.default_8MB.build.partitions=default_8MB -ioxesp32.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 ioxesp32.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) ioxesp32.menu.PartitionScheme.minimal.build.partitions=minimal ioxesp32.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) @@ -41042,9 +40916,6 @@ ioxesp32.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 ioxesp32.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) ioxesp32.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs ioxesp32.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -ioxesp32.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) -ioxesp32.menu.PartitionScheme.fatflash.build.partitions=ffat -ioxesp32.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 ioxesp32.menu.PartitionScheme.rainmaker=RainMaker 4MB ioxesp32.menu.PartitionScheme.rainmaker.build.partitions=rainmaker ioxesp32.menu.PartitionScheme.rainmaker.upload.maximum_size=1966080 @@ -41131,9 +41002,6 @@ ioxesp32ps.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB ioxesp32ps.menu.PartitionScheme.default.build.partitions=default ioxesp32ps.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) ioxesp32ps.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -ioxesp32ps.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS) -ioxesp32ps.menu.PartitionScheme.default_8MB.build.partitions=default_8MB -ioxesp32ps.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 ioxesp32ps.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) ioxesp32ps.menu.PartitionScheme.minimal.build.partitions=minimal ioxesp32ps.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) @@ -41154,9 +41022,6 @@ ioxesp32ps.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 ioxesp32ps.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) ioxesp32ps.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs ioxesp32ps.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -ioxesp32ps.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) -ioxesp32ps.menu.PartitionScheme.fatflash.build.partitions=ffat -ioxesp32ps.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 ioxesp32ps.menu.PartitionScheme.rainmaker=RainMaker 4MB ioxesp32ps.menu.PartitionScheme.rainmaker.build.partitions=rainmaker ioxesp32ps.menu.PartitionScheme.rainmaker.upload.maximum_size=1966080 @@ -41300,7 +41165,7 @@ ioxesp32c6.menu.PartitionScheme.zigbee_zczr.build.partitions=zigbee_zczr ioxesp32c6.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720 ioxesp32c6.menu.PartitionScheme.custom=Custom ioxesp32c6.menu.PartitionScheme.custom.build.partitions= -ioxesp32c6.menu.PartitionScheme.custom.upload.maximum_size=16777216 +ioxesp32c6.menu.PartitionScheme.custom.upload.maximum_size=4194304 ioxesp32c6.menu.CPUFreq.160=160MHz (WiFi) ioxesp32c6.menu.CPUFreq.160.build.f_cpu=160000000L @@ -42681,7 +42546,7 @@ epulse_feather_c6.menu.PartitionScheme.zigbee_zczr.build.partitions=zigbee_zczr epulse_feather_c6.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720 epulse_feather_c6.menu.PartitionScheme.custom=Custom epulse_feather_c6.menu.PartitionScheme.custom.build.partitions= -epulse_feather_c6.menu.PartitionScheme.custom.upload.maximum_size=16777216 +epulse_feather_c6.menu.PartitionScheme.custom.upload.maximum_size=4194304 epulse_feather_c6.menu.CPUFreq.160=160MHz (WiFi) epulse_feather_c6.menu.CPUFreq.160.build.f_cpu=160000000L @@ -42943,7 +42808,7 @@ Geekble_Nano_ESP32S3.menu.PartitionScheme.all_app.build.custom_partitions=max_ap Geekble_Nano_ESP32S3.menu.PartitionScheme.all_app.upload.maximum_size=4063232 Geekble_Nano_ESP32S3.menu.PartitionScheme.custom=Custom Geekble_Nano_ESP32S3.menu.PartitionScheme.custom.build.partitions= -Geekble_Nano_ESP32S3.menu.PartitionScheme.custom.upload.maximum_size=16777216 +Geekble_Nano_ESP32S3.menu.PartitionScheme.custom.upload.maximum_size=4194304 Geekble_Nano_ESP32S3.menu.PSRAM.disabled=Disabled Geekble_Nano_ESP32S3.menu.PSRAM.disabled.build.defines= @@ -43104,17 +42969,15 @@ waveshare_esp32_s3_zero.menu.PartitionScheme.rainmaker.upload.maximum_size=19660 waveshare_esp32_s3_zero.menu.PartitionScheme.rainmaker_4MB=RainMaker 4MB No OTA waveshare_esp32_s3_zero.menu.PartitionScheme.rainmaker_4MB.build.partitions=rainmaker_4MB_no_ota waveshare_esp32_s3_zero.menu.PartitionScheme.rainmaker_4MB.upload.maximum_size=4038656 - waveshare_esp32_s3_zero.menu.PartitionScheme.otanofs=OTA no FS (2MB APP with OTA) waveshare_esp32_s3_zero.menu.PartitionScheme.otanofs.build.custom_partitions=ota_nofs_4MB waveshare_esp32_s3_zero.menu.PartitionScheme.otanofs.upload.maximum_size=2031616 waveshare_esp32_s3_zero.menu.PartitionScheme.all_app=Max APP (4MB APP no OTA) waveshare_esp32_s3_zero.menu.PartitionScheme.all_app.build.custom_partitions=max_app_4MB waveshare_esp32_s3_zero.menu.PartitionScheme.all_app.upload.maximum_size=4063232 - waveshare_esp32_s3_zero.menu.PartitionScheme.custom=Custom waveshare_esp32_s3_zero.menu.PartitionScheme.custom.build.partitions= -waveshare_esp32_s3_zero.menu.PartitionScheme.custom.upload.maximum_size=16777216 +waveshare_esp32_s3_zero.menu.PartitionScheme.custom.upload.maximum_size=4194304 waveshare_esp32_s3_zero.menu.CPUFreq.240=240MHz (WiFi) waveshare_esp32_s3_zero.menu.CPUFreq.240.build.f_cpu=240000000L @@ -43299,17 +43162,15 @@ ws_esp32_s3_matrix.menu.PartitionScheme.rainmaker.upload.maximum_size=1966080 ws_esp32_s3_matrix.menu.PartitionScheme.rainmaker_4MB=RainMaker 4MB No OTA ws_esp32_s3_matrix.menu.PartitionScheme.rainmaker_4MB.build.partitions=rainmaker_4MB_no_ota ws_esp32_s3_matrix.menu.PartitionScheme.rainmaker_4MB.upload.maximum_size=4038656 - ws_esp32_s3_matrix.menu.PartitionScheme.otanofs=OTA no FS (2MB APP with OTA) ws_esp32_s3_matrix.menu.PartitionScheme.otanofs.build.custom_partitions=partitions_otanofs_4MB ws_esp32_s3_matrix.menu.PartitionScheme.otanofs.upload.maximum_size=2031616 ws_esp32_s3_matrix.menu.PartitionScheme.all_app=Max APP (4MB APP no OTA) ws_esp32_s3_matrix.menu.PartitionScheme.all_app.build.custom_partitions=partitions_all_app_4MB ws_esp32_s3_matrix.menu.PartitionScheme.all_app.upload.maximum_size=4128768 - ws_esp32_s3_matrix.menu.PartitionScheme.custom=Custom ws_esp32_s3_matrix.menu.PartitionScheme.custom.build.partitions= -ws_esp32_s3_matrix.menu.PartitionScheme.custom.upload.maximum_size=16777216 +ws_esp32_s3_matrix.menu.PartitionScheme.custom.upload.maximum_size=4194304 ws_esp32_s3_matrix.menu.CPUFreq.240=240MHz (WiFi) ws_esp32_s3_matrix.menu.CPUFreq.240.build.f_cpu=240000000L @@ -43464,6 +43325,8 @@ waveshare_esp32_s3_touch_lcd_169.menu.UploadMode.cdc.upload.use_1200bps_touch=tr waveshare_esp32_s3_touch_lcd_169.menu.UploadMode.cdc.upload.wait_for_upload_port=true waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) +waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB +waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.default.build.partitions=default waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -43495,17 +43358,12 @@ waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.rainmaker_8MB.upload.maxim waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.fatflash.build.partitions=ffat waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 -waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 - waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.otanofs=OTA no FS (2MB APP with OTA) waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.otanofs.build.custom_partitions=partitions_otanofs_4MB waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.otanofs.upload.maximum_size=2031616 waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.all_app=Max APP (4MB APP no OTA) waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.all_app.build.custom_partitions=partitions_all_app_4MB waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.all_app.upload.maximum_size=4128768 - waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.custom=Custom waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.custom.build.partitions= waveshare_esp32_s3_touch_lcd_169.menu.PartitionScheme.custom.upload.maximum_size=16777216 @@ -43663,6 +43521,8 @@ waveshare_esp32_s3_touch_amoled_18.menu.UploadMode.cdc.upload.use_1200bps_touch= waveshare_esp32_s3_touch_amoled_18.menu.UploadMode.cdc.upload.wait_for_upload_port=true waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) +waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB +waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.default.build.partitions=default waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -43694,17 +43554,12 @@ waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.rainmaker_8MB.upload.max waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.fatflash.build.partitions=ffat waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 -waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 - waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.otanofs=OTA no FS (2MB APP with OTA) waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.otanofs.build.custom_partitions=partitions_otanofs_4MB waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.otanofs.upload.maximum_size=2031616 waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.all_app=Max APP (4MB APP no OTA) waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.all_app.build.custom_partitions=partitions_all_app_4MB waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.all_app.upload.maximum_size=4128768 - waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.custom=Custom waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.custom.build.partitions= waveshare_esp32_s3_touch_amoled_18.menu.PartitionScheme.custom.upload.maximum_size=16777216 @@ -43862,6 +43717,8 @@ waveshare_esp32_s3_lcd_169.menu.UploadMode.cdc.upload.use_1200bps_touch=true waveshare_esp32_s3_lcd_169.menu.UploadMode.cdc.upload.wait_for_upload_port=true waveshare_esp32_s3_lcd_169.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) +waveshare_esp32_s3_lcd_169.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB +waveshare_esp32_s3_lcd_169.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 waveshare_esp32_s3_lcd_169.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) waveshare_esp32_s3_lcd_169.menu.PartitionScheme.default.build.partitions=default waveshare_esp32_s3_lcd_169.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -43893,17 +43750,12 @@ waveshare_esp32_s3_lcd_169.menu.PartitionScheme.rainmaker_8MB.upload.maximum_siz waveshare_esp32_s3_lcd_169.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) waveshare_esp32_s3_lcd_169.menu.PartitionScheme.fatflash.build.partitions=ffat waveshare_esp32_s3_lcd_169.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 -waveshare_esp32_s3_lcd_169.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -waveshare_esp32_s3_lcd_169.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -waveshare_esp32_s3_lcd_169.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 - waveshare_esp32_s3_lcd_169.menu.PartitionScheme.otanofs=OTA no FS (2MB APP with OTA) waveshare_esp32_s3_lcd_169.menu.PartitionScheme.otanofs.build.custom_partitions=partitions_otanofs_4MB waveshare_esp32_s3_lcd_169.menu.PartitionScheme.otanofs.upload.maximum_size=2031616 waveshare_esp32_s3_lcd_169.menu.PartitionScheme.all_app=Max APP (4MB APP no OTA) waveshare_esp32_s3_lcd_169.menu.PartitionScheme.all_app.build.custom_partitions=partitions_all_app_4MB waveshare_esp32_s3_lcd_169.menu.PartitionScheme.all_app.upload.maximum_size=4128768 - waveshare_esp32_s3_lcd_169.menu.PartitionScheme.custom=Custom waveshare_esp32_s3_lcd_169.menu.PartitionScheme.custom.build.partitions= waveshare_esp32_s3_lcd_169.menu.PartitionScheme.custom.upload.maximum_size=16777216 @@ -44167,9 +44019,6 @@ weact_studio_esp32c3.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB weact_studio_esp32c3.menu.PartitionScheme.default.build.partitions=default weact_studio_esp32c3.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) weact_studio_esp32c3.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -weact_studio_esp32c3.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS) -weact_studio_esp32c3.menu.PartitionScheme.default_8MB.build.partitions=default_8MB -weact_studio_esp32c3.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 weact_studio_esp32c3.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) weact_studio_esp32c3.menu.PartitionScheme.minimal.build.partitions=minimal weact_studio_esp32c3.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) @@ -45178,30 +45027,18 @@ codecell.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 codecell.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) codecell.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs codecell.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -codecell.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) -codecell.menu.PartitionScheme.fatflash.build.partitions=ffat -codecell.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 -codecell.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -codecell.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -codecell.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 codecell.menu.PartitionScheme.rainmaker=RainMaker 4MB codecell.menu.PartitionScheme.rainmaker.build.partitions=rainmaker codecell.menu.PartitionScheme.rainmaker.upload.maximum_size=1966080 codecell.menu.PartitionScheme.rainmaker_4MB=RainMaker 4MB No OTA codecell.menu.PartitionScheme.rainmaker_4MB.build.partitions=rainmaker_4MB_no_ota codecell.menu.PartitionScheme.rainmaker_4MB.upload.maximum_size=4038656 -codecell.menu.PartitionScheme.rainmaker_8MB=RainMaker 8MB -codecell.menu.PartitionScheme.rainmaker_8MB.build.partitions=rainmaker_8MB -codecell.menu.PartitionScheme.rainmaker_8MB.upload.maximum_size=4096000 codecell.menu.PartitionScheme.zigbee_zczr=Zigbee ZCZR 4MB with spiffs codecell.menu.PartitionScheme.zigbee_zczr.build.partitions=zigbee_zczr codecell.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720 -codecell.menu.PartitionScheme.zigbee_zczr_8MB=Zigbee ZCZR 8MB with spiffs -codecell.menu.PartitionScheme.zigbee_zczr_8MB.build.partitions=zigbee_zczr_8MB -codecell.menu.PartitionScheme.zigbee_zczr_8MB.upload.maximum_size=3407872 codecell.menu.PartitionScheme.custom=Custom codecell.menu.PartitionScheme.custom.build.partitions= -codecell.menu.PartitionScheme.custom.upload.maximum_size=16777216 +codecell.menu.PartitionScheme.custom.upload.maximum_size=4194304 codecell.menu.CPUFreq.160=160MHz (WiFi) codecell.menu.CPUFreq.160.build.f_cpu=160000000L @@ -45541,10 +45378,11 @@ waveshare_esp32_s3_touch_amoled_241.menu.UploadMode.cdc.upload.use_1200bps_touch waveshare_esp32_s3_touch_amoled_241.menu.UploadMode.cdc.upload.wait_for_upload_port=true waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) +waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB +waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.default.build.partitions=default waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) - waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.defaultffat.build.partitions=default_ffat waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.no_ota.build.partitions=no_ota @@ -45573,18 +45411,12 @@ waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.rainmaker_8MB.upload.ma waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.fatflash.build.partitions=ffat waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 - -waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 - waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.otanofs=OTA no FS (2MB APP with OTA) waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.otanofs.build.custom_partitions=partitions_otanofs_4MB waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.otanofs.upload.maximum_size=2031616 waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.all_app=Max APP (4MB APP no OTA) waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.all_app.build.custom_partitions=partitions_all_app_4MB waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.all_app.upload.maximum_size=4128768 - waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.custom=Custom waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.custom.build.partitions= waveshare_esp32_s3_touch_amoled_241.menu.PartitionScheme.custom.upload.maximum_size=16777216 @@ -45747,6 +45579,8 @@ waveshare_esp32_s3_touch_lcd_43.menu.UploadMode.cdc.upload.use_1200bps_touch=tru waveshare_esp32_s3_touch_lcd_43.menu.UploadMode.cdc.upload.wait_for_upload_port=true waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) +waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB +waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.default.build.partitions=default waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -45778,17 +45612,12 @@ waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.rainmaker_8MB.upload.maximu waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.fatflash.build.partitions=ffat waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 -waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 - waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.otanofs=OTA no FS (2MB APP with OTA) waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.otanofs.build.custom_partitions=partitions_otanofs_4MB waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.otanofs.upload.maximum_size=2031616 waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.all_app=Max APP (4MB APP no OTA) waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.all_app.build.custom_partitions=partitions_all_app_4MB waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.all_app.upload.maximum_size=4128768 - waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.custom=Custom waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.custom.build.partitions= waveshare_esp32_s3_touch_lcd_43.menu.PartitionScheme.custom.upload.maximum_size=16777216 @@ -45946,6 +45775,8 @@ waveshare_esp32_s3_touch_lcd_43B.menu.UploadMode.cdc.upload.use_1200bps_touch=tr waveshare_esp32_s3_touch_lcd_43B.menu.UploadMode.cdc.upload.wait_for_upload_port=true waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) +waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB +waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.default.build.partitions=default waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -45977,17 +45808,12 @@ waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.rainmaker_8MB.upload.maxim waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.fatflash.build.partitions=ffat waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 -waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 - waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.otanofs=OTA no FS (2MB APP with OTA) waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.otanofs.build.custom_partitions=partitions_otanofs_4MB waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.otanofs.upload.maximum_size=2031616 waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.all_app=Max APP (4MB APP no OTA) waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.all_app.build.custom_partitions=partitions_all_app_4MB waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.all_app.upload.maximum_size=4128768 - waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.custom=Custom waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.custom.build.partitions= waveshare_esp32_s3_touch_lcd_43B.menu.PartitionScheme.custom.upload.maximum_size=16777216 @@ -46150,6 +45976,8 @@ waveshare_esp32_s3_touch_lcd_7.menu.UploadMode.cdc.upload.use_1200bps_touch=true waveshare_esp32_s3_touch_lcd_7.menu.UploadMode.cdc.upload.wait_for_upload_port=true waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) +waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB +waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.default.build.partitions=default waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -46181,17 +46009,12 @@ waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.rainmaker_8MB.upload.maximum waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.fatflash.build.partitions=ffat waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 -waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 - waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.otanofs=OTA no FS (2MB APP with OTA) waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.otanofs.build.custom_partitions=partitions_otanofs_4MB waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.otanofs.upload.maximum_size=2031616 waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.all_app=Max APP (4MB APP no OTA) waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.all_app.build.custom_partitions=partitions_all_app_4MB waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.all_app.upload.maximum_size=4128768 - waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.custom=Custom waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.custom.build.partitions= waveshare_esp32_s3_touch_lcd_7.menu.PartitionScheme.custom.upload.maximum_size=16777216 @@ -46349,6 +46172,8 @@ waveshare_esp32_s3_touch_lcd_5.menu.UploadMode.cdc.upload.use_1200bps_touch=true waveshare_esp32_s3_touch_lcd_5.menu.UploadMode.cdc.upload.wait_for_upload_port=true waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) +waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB +waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.default.build.partitions=default waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -46380,17 +46205,12 @@ waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.rainmaker_8MB.upload.maximum waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.fatflash.build.partitions=ffat waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 -waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 - waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.otanofs=OTA no FS (2MB APP with OTA) waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.otanofs.build.custom_partitions=partitions_otanofs_4MB waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.otanofs.upload.maximum_size=2031616 waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.all_app=Max APP (4MB APP no OTA) waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.all_app.build.custom_partitions=partitions_all_app_4MB waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.all_app.upload.maximum_size=4128768 - waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.custom=Custom waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.custom.build.partitions= waveshare_esp32_s3_touch_lcd_5.menu.PartitionScheme.custom.upload.maximum_size=16777216 @@ -46548,6 +46368,8 @@ waveshare_esp32_s3_touch_lcd_5B.menu.UploadMode.cdc.upload.use_1200bps_touch=tru waveshare_esp32_s3_touch_lcd_5B.menu.UploadMode.cdc.upload.wait_for_upload_port=true waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) +waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB +waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.default.build.partitions=default waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -46579,17 +46401,12 @@ waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.rainmaker_8MB.upload.maximu waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.fatflash.build.partitions=ffat waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 -waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 - waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.otanofs=OTA no FS (2MB APP with OTA) waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.otanofs.build.custom_partitions=partitions_otanofs_4MB waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.otanofs.upload.maximum_size=2031616 waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.all_app=Max APP (4MB APP no OTA) waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.all_app.build.custom_partitions=partitions_all_app_4MB waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.all_app.upload.maximum_size=4128768 - waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.custom=Custom waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.custom.build.partitions= waveshare_esp32_s3_touch_lcd_5B.menu.PartitionScheme.custom.upload.maximum_size=16777216 @@ -46747,6 +46564,8 @@ waveshare_esp32_s3_touch_lcd_4.menu.UploadMode.cdc.upload.use_1200bps_touch=true waveshare_esp32_s3_touch_lcd_4.menu.UploadMode.cdc.upload.wait_for_upload_port=true waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) +waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB +waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.default.build.partitions=default waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -46778,17 +46597,12 @@ waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.rainmaker_8MB.upload.maximum waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.fatflash.build.partitions=ffat waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 -waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 - waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.otanofs=OTA no FS (2MB APP with OTA) waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.otanofs.build.custom_partitions=partitions_otanofs_4MB waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.otanofs.upload.maximum_size=2031616 waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.all_app=Max APP (4MB APP no OTA) waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.all_app.build.custom_partitions=partitions_all_app_4MB waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.all_app.upload.maximum_size=4128768 - waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.custom=Custom waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.custom.build.partitions= waveshare_esp32_s3_touch_lcd_4.menu.PartitionScheme.custom.upload.maximum_size=16777216 @@ -47173,7 +46987,7 @@ cezerio_dev_esp32c6.menu.PartitionScheme.zigbee_zczr.build.partitions=zigbee_zcz cezerio_dev_esp32c6.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720 cezerio_dev_esp32c6.menu.PartitionScheme.custom=Custom cezerio_dev_esp32c6.menu.PartitionScheme.custom.build.partitions= -cezerio_dev_esp32c6.menu.PartitionScheme.custom.upload.maximum_size=16777216 +cezerio_dev_esp32c6.menu.PartitionScheme.custom.upload.maximum_size=4194304 cezerio_dev_esp32c6.menu.CPUFreq.160=160MHz (WiFi) cezerio_dev_esp32c6.menu.CPUFreq.160.build.f_cpu=160000000L @@ -47343,7 +47157,7 @@ cezerio_mini_dev_esp32c6.menu.PartitionScheme.zigbee_zczr.build.partitions=zigbe cezerio_mini_dev_esp32c6.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720 cezerio_mini_dev_esp32c6.menu.PartitionScheme.custom=Custom cezerio_mini_dev_esp32c6.menu.PartitionScheme.custom.build.partitions= -cezerio_mini_dev_esp32c6.menu.PartitionScheme.custom.upload.maximum_size=16777216 +cezerio_mini_dev_esp32c6.menu.PartitionScheme.custom.upload.maximum_size=4194304 cezerio_mini_dev_esp32c6.menu.CPUFreq.160=160MHz (WiFi) cezerio_mini_dev_esp32c6.menu.CPUFreq.160.build.f_cpu=160000000L @@ -49423,10 +49237,11 @@ waveshare_esp32_s3_touch_amoled_164.menu.UploadMode.cdc.upload.use_1200bps_touch waveshare_esp32_s3_touch_amoled_164.menu.UploadMode.cdc.upload.wait_for_upload_port=true waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) +waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB +waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.default.build.partitions=default waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) - waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.defaultffat.build.partitions=default_ffat waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.no_ota.build.partitions=no_ota @@ -49455,18 +49270,12 @@ waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.rainmaker_8MB.upload.ma waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.fatflash.build.partitions=ffat waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 - -waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 - waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.otanofs=OTA no FS (2MB APP with OTA) waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.otanofs.build.custom_partitions=partitions_otanofs_4MB waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.otanofs.upload.maximum_size=2031616 waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.all_app=Max APP (4MB APP no OTA) waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.all_app.build.custom_partitions=partitions_all_app_4MB waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.all_app.upload.maximum_size=4128768 - waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.custom=Custom waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.custom.build.partitions= waveshare_esp32_s3_touch_amoled_164.menu.PartitionScheme.custom.upload.maximum_size=16777216 @@ -49625,10 +49434,11 @@ waveshare_esp32_s3_touch_amoled_143.menu.UploadMode.cdc.upload.use_1200bps_touch waveshare_esp32_s3_touch_amoled_143.menu.UploadMode.cdc.upload.wait_for_upload_port=true waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) +waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB +waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.default.build.partitions=default waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) - waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.defaultffat.build.partitions=default_ffat waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.no_ota.build.partitions=no_ota @@ -49657,18 +49467,12 @@ waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.rainmaker_8MB.upload.ma waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.fatflash.build.partitions=ffat waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 - -waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 - waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.otanofs=OTA no FS (2MB APP with OTA) waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.otanofs.build.custom_partitions=partitions_otanofs_4MB waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.otanofs.upload.maximum_size=2031616 waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.all_app=Max APP (4MB APP no OTA) waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.all_app.build.custom_partitions=partitions_all_app_4MB waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.all_app.upload.maximum_size=4128768 - waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.custom=Custom waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.custom.build.partitions= waveshare_esp32_s3_touch_amoled_143.menu.PartitionScheme.custom.upload.maximum_size=16777216 @@ -49827,10 +49631,11 @@ waveshare_esp32_s3_touch_amoled_191.menu.UploadMode.cdc.upload.use_1200bps_touch waveshare_esp32_s3_touch_amoled_191.menu.UploadMode.cdc.upload.wait_for_upload_port=true waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) +waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB +waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.default.build.partitions=default waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) - waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.defaultffat.build.partitions=default_ffat waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.no_ota.build.partitions=no_ota @@ -49859,18 +49664,12 @@ waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.rainmaker_8MB.upload.ma waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.fatflash.build.partitions=ffat waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 - -waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS) -waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB -waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 - waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.otanofs=OTA no FS (2MB APP with OTA) waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.otanofs.build.custom_partitions=partitions_otanofs_4MB waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.otanofs.upload.maximum_size=2031616 waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.all_app=Max APP (4MB APP no OTA) waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.all_app.build.custom_partitions=partitions_all_app_4MB waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.all_app.upload.maximum_size=4128768 - waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.custom=Custom waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.custom.build.partitions= waveshare_esp32_s3_touch_amoled_191.menu.PartitionScheme.custom.upload.maximum_size=16777216 @@ -50150,7 +49949,7 @@ Pcbcupid_GLYPH_H2.menu.PartitionScheme.zigbee_zczr.build.partitions=zigbee_zczr Pcbcupid_GLYPH_H2.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720 Pcbcupid_GLYPH_H2.menu.PartitionScheme.custom=Custom Pcbcupid_GLYPH_H2.menu.PartitionScheme.custom.build.partitions= -Pcbcupid_GLYPH_H2.menu.PartitionScheme.custom.upload.maximum_size=16777216 +Pcbcupid_GLYPH_H2.menu.PartitionScheme.custom.upload.maximum_size=4194304 Pcbcupid_GLYPH_H2.menu.FlashMode.qio=QIO Pcbcupid_GLYPH_H2.menu.FlashMode.qio.build.flash_mode=dio @@ -52523,7 +52322,7 @@ twinaiot.menu.PartitionScheme.zigbee_zczr.build.partitions=zigbee_zczr twinaiot.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720 twinaiot.menu.PartitionScheme.custom=Custom twinaiot.menu.PartitionScheme.custom.build.partitions= -twinaiot.menu.PartitionScheme.custom.upload.maximum_size=16777216 +twinaiot.menu.PartitionScheme.custom.upload.maximum_size=4194304 twinaiot.menu.LoopCore.1=Core 1 twinaiot.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1 @@ -53067,7 +52866,7 @@ soldered_nula_mini_esp32c6.menu.PartitionScheme.zigbee_zczr.build.partitions=zig soldered_nula_mini_esp32c6.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720 soldered_nula_mini_esp32c6.menu.PartitionScheme.custom=Custom soldered_nula_mini_esp32c6.menu.PartitionScheme.custom.build.partitions= -soldered_nula_mini_esp32c6.menu.PartitionScheme.custom.upload.maximum_size=16777216 +soldered_nula_mini_esp32c6.menu.PartitionScheme.custom.upload.maximum_size=4194304 soldered_nula_mini_esp32c6.menu.CPUFreq.160=160MHz (WiFi) soldered_nula_mini_esp32c6.menu.CPUFreq.160.build.f_cpu=160000000L From a2eaf1d7457136114977ce2d1aab0b5b13af6e8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Proch=C3=A1zka?= <90197375+P-R-O-C-H-Y@users.noreply.github.com> Date: Tue, 7 Oct 2025 11:21:28 +0200 Subject: [PATCH 10/10] ci(boards): Move variable to global and clear logs --- .github/scripts/validate_board.sh | 6 +- validation_summary_20251006_164352.txt | 1 - validation_summary_20251006_164403.txt | 78 -------------------------- 3 files changed, 4 insertions(+), 81 deletions(-) delete mode 100644 validation_summary_20251006_164352.txt delete mode 100644 validation_summary_20251006_164403.txt diff --git a/.github/scripts/validate_board.sh b/.github/scripts/validate_board.sh index 23b8cddcd20..5c142ca8c19 100755 --- a/.github/scripts/validate_board.sh +++ b/.github/scripts/validate_board.sh @@ -5,6 +5,9 @@ set -e +# Required properties for all boards +REQUIRED_PROPERTIES=("upload.flags" "upload.extra_flags") + # Function to print output print_error() { echo "Error: $1" @@ -100,10 +103,9 @@ validate_required_properties() { local board_name="$1" local boards_file="$2" - local required_props=("upload.flags" "upload.extra_flags") local missing_props=() - for prop in "${required_props[@]}"; do + for prop in "${REQUIRED_PROPERTIES[@]}"; do if ! grep -q "^$board_name.$prop=" "$boards_file"; then missing_props+=("$prop") fi diff --git a/validation_summary_20251006_164352.txt b/validation_summary_20251006_164352.txt deleted file mode 100644 index d9a93a437c0..00000000000 --- a/validation_summary_20251006_164352.txt +++ /dev/null @@ -1 +0,0 @@ -=== BOARD VALIDATION ERROR SUMMARY === diff --git a/validation_summary_20251006_164403.txt b/validation_summary_20251006_164403.txt deleted file mode 100644 index dbce08fbb54..00000000000 --- a/validation_summary_20251006_164403.txt +++ /dev/null @@ -1,78 +0,0 @@ -=== BOARD VALIDATION ERROR SUMMARY === -Generated on: $(date) - -=== OVERALL STATISTICS === -Total boards tested: 354 -Failed boards: 45 -Passed boards: 309 - -=== ERROR CATEGORIES === - -1. BUILD.BOARD FORMAT ERRORS (Rule 1) - 37 boards: - - ttgo-lora32: contains 'ao' (only A-Z, 0-9, and _ allowed) - - ttgo-t7-v13-mini32: contains 'in' (only A-Z, 0-9, and _ allowed) - - ttgo-t7-v14-mini32: contains 'in' (only A-Z, 0-9, and _ allowed) - - ttgo-t-oi-plus: contains '-' (only A-Z, 0-9, and _ allowed) - - pocket_32: contains 'cekot' (only A-Z, 0-9, and _ allowed) - - WeMosBat: contains 'cekot' (only A-Z, 0-9, and _ allowed) - - espea32: contains 'ae' (only A-Z, 0-9, and _ allowed) - - node32s: contains 'deos' (only A-Z, 0-9, and _ allowed) - - dfrobot_beetle_esp32c3: contains 'eetle' (only A-Z, 0-9, and _ allowed) - - dfrobot_beetle_esp32c6: contains 'eetle' (only A-Z, 0-9, and _ allowed) - - dfrobot_firebeetle2_esp32c6: contains 'eetle' (only A-Z, 0-9, and _ allowed) - - adafruit_feather_esp32c6: contains 'eather' (only A-Z, 0-9, and _ allowed) - - nologo_esp32c3_super_mini: contains 'uper' (only A-Z, 0-9, and _ allowed) - - nologo_esp32s3_pico: contains 'ico' (only A-Z, 0-9, and _ allowed) - - esp32vn-iot-uno: contains 'n-iot-uno' (only A-Z, 0-9, and _ allowed) - - esp32-devkitlipo: contains 'evkitlipo' (only A-Z, 0-9, and _ allowed) - - espino32: contains 'pino' (only A-Z, 0-9, and _ allowed) - - m5stack_stickc: contains 'tickc' (only A-Z, 0-9, and _ allowed) - - m5stack_stickc_plus: contains 'tickc' (only A-Z, 0-9, and _ allowed) - - m5stack_stickc_plus2: contains 'tickc' (only A-Z, 0-9, and _ allowed) - - m5stack_atom: contains 'tom' (only A-Z, 0-9, and _ allowed) - - m5stack_atoms3: contains 'toms' (only A-Z, 0-9, and _ allowed) - - m5stack_timer_cam: contains 'imer' (only A-Z, 0-9, and _ allowed) - - m5stack_unit_cam: contains 'nit' (only A-Z, 0-9, and _ allowed) - - m5stack_poe_cam: contains 'oe' (only A-Z, 0-9, and _ allowed) - - m5stack_coreink: contains 'oreink' (only A-Z, 0-9, and _ allowed) - - m5stack_stamp_pico: contains 'tamp' (only A-Z, 0-9, and _ allowed) - - heltec_wifi_lora_32: contains 'ifi' (only A-Z, 0-9, and _ allowed) - - CoreESP32: contains 'ore' (only A-Z, 0-9, and _ allowed) - - t-beam: contains 'eam' (only A-Z, 0-9, and _ allowed) - - d-duino-32: contains 'duino-32' (only A-Z, 0-9, and _ allowed) - - lopy: contains 'opy' (only A-Z, 0-9, and _ allowed) - - lopy4: contains 'opy' (only A-Z, 0-9, and _ allowed) - - fm-devkit: contains 'evkit' (only A-Z, 0-9, and _ allowed) - - twatch: contains 'atch' (only A-Z, 0-9, and _ allowed) - - piranha_esp-32: contains 'anha' (only A-Z, 0-9, and _ allowed) - - metro_esp-32: contains 'tro' (only A-Z, 0-9, and _ allowed) - - sensesiot_weizen: contains 'eizen' (only A-Z, 0-9, and _ allowed) - - mPython: contains 'ython' (only A-Z, 0-9, and _ allowed) - -2. PARTITION SCHEME SIZE ERRORS (Rule 3) - 2 boards: - - esp32wrover: default_8MB (8MB) exceeds 4MB flash - - pico32: custom upload size (16MB) exceeds 4MB flash - -3. DUPLICATE LINES (Rule 6) - 4 boards: - - esp32s3-octal: duplicate esp32s3-octal.menu.FlashSize.16M - - lolin_s2_mini: duplicate lolin_s2_mini.build.defines - - lolin_s2_pico: duplicate lolin_s2_pico.build.defines - - heltec_wifi_lora_32: duplicate heltec_wifi_lora_32.menu.CPUFreq.160.build.f_cpu - -4. MISSING REQUIRED PROPERTIES (Rule 2) - 2 boards: - - Bee_Data_Logger: Missing upload.flags, upload.extra_flags - - Bee_Motion_S3: Missing upload.flags, upload.extra_flags - -=== SUMMARY === -- 37 boards have invalid build.board format (contains lowercase letters, hyphens, or special characters) -- 2 boards have partition schemes that exceed their available flash memory -- 4 boards have duplicate property definitions -- 2 boards are missing required upload properties -- Most common issue: build.board values contain lowercase letters instead of uppercase - -=== RECOMMENDATIONS === -1. Fix build.board values to use only uppercase letters, numbers, and underscores -2. Remove or adjust partition schemes that don't fit the board's flash capacity -3. Remove duplicate entries from boards.txt -4. Add missing upload properties for affected boards -