Updated scripts and boards

This commit is contained in:
Ken Van Hoeylandt 2025-11-12 18:08:57 +01:00
parent 7f34126224
commit 191ffc569b
42 changed files with 50 additions and 267 deletions

View File

@ -1,7 +1,6 @@
[general]
vendor=BigTreeTech
name=Panda Touch,K Touch
incubating=false
[hardware]
target=ESP32S3
@ -9,7 +8,6 @@ flashSize=16MB
spiRam=true
spiRamMode=OCT
spiRamSpeed=120M
tinyUsb=false
esptoolFlashFreq=120M
fixRgbDisplayGlitch=true
@ -18,10 +16,5 @@ size=2.4"
shape=rectangle
dpi=139
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,23 +1,16 @@
[general]
vendor=CYD
name=2432S024C
incubating=false
[hardware]
target=ESP32
flashSize=4MB
spiRam=false
tinyUsb=false
[display]
size=2.4"
shape=rectangle
dpi=167
[cdn]
infoMessage=
warningMessage=There currently is a known issue with the display driver.<br/>It will likely show artifacts.
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,13 +1,11 @@
[general]
vendor=CYD
name=2432S028R
incubating=false
[hardware]
target=ESP32
flashSize=4MB
spiRam=false
tinyUsb=false
[display]
size=2.8"
@ -15,9 +13,7 @@ shape=rectangle
dpi=143
[cdn]
infoMessage=
warningMessage=There are 3 hardware variants of this board. This build works on the original variant only ("v1").
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,13 +1,11 @@
[general]
vendor=CYD
name=2432S028R v3
incubating=false
[hardware]
target=ESP32
flashSize=4MB
spiRam=false
tinyUsb=false
[display]
size=2.8"
@ -15,9 +13,7 @@ shape=rectangle
dpi=143
[cdn]
infoMessage=
warningMessage=There are 3 hardware variants of this board. This build only supports board version 3.
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,23 +1,16 @@
[general]
vendor=CYD
name=2432S032C
incubating=false
[hardware]
target=ESP32
flashSize=4MB
spiRam=false
tinyUsb=false
[display]
size=3.2"
shape=rectangle
dpi=125
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,7 +1,6 @@
[general]
vendor=CYD
name=4848S040C
incubating=false
[hardware]
target=ESP32S3
@ -9,7 +8,6 @@ flashSize=16MB
spiRam=true
spiRamMode=OCT
spiRamSpeed=80M
tinyUsb=false
fixRgbDisplayGlitch=true
[display]
@ -17,17 +15,5 @@ size=4"
shape=rectangle
dpi=170
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16
# Fixes glitches in the display driver when rendering new screens/apps
[sdkconfig]
CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
CONFIG_SPIRAM_RODATA=y
CONFIG_SPIRAM_XIP_FROM_PSRAM=y
CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y

View File

@ -9,7 +9,6 @@ flashSize=16MB
spiRam=true
spiRamMode=OCT
spiRamSpeed=80M
tinyUsb=false
fixRgbDisplayGlitch=true
esptoolFlashFreq=80M

View File

@ -1,23 +1,16 @@
[general]
vendor=CYD
name=E32R28T
incubating=false
[hardware]
target=ESP32
flashSize=4MB
spiRam=false
tinyUsb=false
[display]
size=2.8"
shape=rectangle
dpi=143
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,23 +1,16 @@
[general]
vendor=CYD
name=E32R32P
incubating=false
[hardware]
target=ESP32
flashSize=4MB
spiRam=false
tinyUsb=false
[display]
size=2.8"
shape=rectangle
dpi=125
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,23 +1,16 @@
[general]
vendor=CYD
name=JC2432W328C
incubating=false
[hardware]
target=ESP32
flashSize=4MB
spiRam=false
tinyUsb=false
[display]
size=2.8"
shape=rectangle
dpi=143
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,7 +1,6 @@
[general]
vendor=CYD
name=JC8048W550C
incubating=false
[hardware]
target=ESP32S3
@ -9,7 +8,6 @@ flashSize=16MB
spiRam=true
spiRamMode=OCT
spiRamSpeed=80M
tinyUsb=false
esptoolFlashFreq=80M
[display]
@ -17,10 +15,5 @@ size=5"
shape=rectangle
dpi=187
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,7 +1,6 @@
[general]
vendor=Elecrow
name=CrowPanel Advance 2.8"
incubating=false
[hardware]
target=ESP32S3
@ -17,10 +16,5 @@ size=2.8"
shape=rectangle
dpi=143
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,7 +1,6 @@
[general]
vendor=Elecrow
name=CrowPanel Advance 3.5"
incubating=false
[hardware]
target=ESP32S3
@ -17,10 +16,5 @@ size=3.5"
shape=rectangle
dpi=165
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,7 +1,6 @@
[general]
vendor=Elecrow
name=CrowPanel Advance 5.0"
incubating=false
[hardware]
target=ESP32S3
@ -17,10 +16,5 @@ size=5"
shape=rectangle
dpi=187
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,23 +1,16 @@
[general]
vendor=Elecrow
name=CrowPanel Basic 2.8"
incubating=false
[hardware]
target=ESP32
flashSize=4MB
spiRam=false
tinyUsb=false
[display]
size=2.8"
shape=rectangle
dpi=143
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,23 +1,16 @@
[general]
vendor=Elecrow
name=CrowPanel Basic 3.5"
incubating=false
[hardware]
target=ESP32
flashSize=4MB
spiRam=false
tinyUsb=false
[display]
size=3.5"
shape=rectangle
dpi=165
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,7 +1,6 @@
[general]
vendor=Elecrow
name=CrowPanel Basic 5.0"
incubating=false
[hardware]
target=ESP32S3
@ -17,10 +16,5 @@ size=5.0"
shape=rectangle
dpi=187
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -17,7 +17,6 @@ dpi=149
[cdn]
infoMessage=Due to the small size of the screen, the icons don't render properly.
warningMessage=
[lvgl]
theme=Mono

View File

@ -1,7 +1,6 @@
[general]
vendor=LilyGO
name=T-Deck,T-Deck Plus
incubating=false
[hardware]
target=ESP32S3
@ -19,8 +18,6 @@ dpi=143
[cdn]
infoMessage=To put the device into bootloader mode: <br/>1. Press the trackball and then the reset button at the same time,<br/>2. Let go of the reset button, then the trackball.<br/><br/>When this website reports that flashing is finished, you likely have to press the reset button.
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,7 +1,6 @@
[general]
vendor=LilyGO
name=T-Display S3
incubating=false
[hardware]
target=ESP32S3
@ -17,10 +16,5 @@ size=1.9"
shape=rectangle
dpi=191
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -7,7 +7,6 @@ incubating=true
target=ESP32
flashSize=16MB
spiRam=false
tinyUsb=false
esptoolFlashFreq=80M
[display]
@ -15,11 +14,6 @@ size=1.14"
shape=rectangle
dpi=242
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -15,10 +15,5 @@ size=0.96"
shape=rectangle
dpi=186
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,7 +1,6 @@
[general]
vendor=LilyGO
name=T-Lora Pager
incubating=false
[hardware]
target=ESP32S3
@ -18,10 +17,5 @@ size=2.33"
shape=rectangle
dpi=227
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,7 +1,6 @@
[general]
vendor=M5Stack
name=Cardputer Adv
incubating=false
[hardware]
target=ESP32S3
@ -16,10 +15,5 @@ shape=rectangle
# TODO: dps is actually 242, but this breaks UI (button selection becomes invisible and switch visibility is reduced)
dpi=139
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,7 +1,6 @@
[general]
vendor=M5Stack
name=Cardputer,Cardputer v1.1
incubating=false
[hardware]
target=ESP32S3
@ -16,10 +15,5 @@ shape=rectangle
# TODO: dps is actually 242, but this breaks UI (button selection becomes invisible and switch visibility is reduced)
dpi=139
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,9 +0,0 @@
# M5Stack Core2
This board implementation concerns the original Core2 hardware and **not** the v1.1 variant.
Reference implementations:
- [ESP-BSP](https://github.com/espressif/esp-bsp/tree/master/bsp/m5stack_core_2)
Docs:
- [M5Stack.com](https://docs.m5stack.com/en/core/Core2)

View File

@ -1,7 +1,6 @@
[general]
vendor=M5Stack
name=Core2
incubating=false
[hardware]
target=ESP32
@ -9,7 +8,6 @@ flashSize=16MB
spiRam=true
spiRamMode=QUAD
spiRamSpeed=80M
tinyUsb=false
esptoolFlashFreq=80M
[display]
@ -18,9 +16,7 @@ shape=rectangle
dpi=200
[cdn]
infoMessage=
warningMessage=
warningMessage=This board implementation concerns the original Core2 hardware and **not** the v1.1 variant
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,7 +0,0 @@
# M5Stack CoreS3
Reference implementations:
- [ESP-BSP](https://github.com/espressif/esp-bsp/tree/master/bsp/m5stack_core_s3)
Docs:
- [M5Stack.com](https://docs.m5stack.com/en/core/CoreS3)

View File

@ -1,7 +1,6 @@
[general]
vendor=M5Stack
name=CoreS3
incubating=false
[hardware]
target=ESP32S3
@ -17,10 +16,5 @@ size=2"
shape=rectangle
dpi=200
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,5 +0,0 @@
# M5Stack StickC Plus
Docs:
- [M5Stack.com](https://docs.m5stack.com/en/core/m5stickc_plus)

View File

@ -7,7 +7,6 @@ incubating=true
target=ESP32
flashSize=4MB
spiRam=false
tinyUsb=false
esptoolFlashFreq=80M
[display]
@ -15,10 +14,5 @@ size=1.14"
shape=rectangle
dpi=242
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,5 +0,0 @@
# M5Stack StickC Plus2
Docs:
- [M5Stack.com](https://docs.m5stack.com/en/core/M5StickC%20PLUS2)

View File

@ -9,7 +9,6 @@ flashSize=8MB
spiRam=true
spiRamMode=QUAD
spiRamSpeed=80M
tinyUsb=false
esptoolFlashFreq=80M
[display]
@ -17,10 +16,5 @@ size=1.14"
shape=rectangle
dpi=242
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,7 +1,6 @@
[general]
vendor=unPhone
name=unPhone
incubating=false
[hardware]
target=ESP32S3
@ -9,8 +8,6 @@ flashSize=8MB
spiRam=true
spiRamMode=OCT
spiRamSpeed=80M
# Disabled due to hardware design error (has extra USB chip in front of default one)
tinyUsb=false
[display]
size=3.5"
@ -18,9 +15,7 @@ shape=rectangle
dpi=165
[cdn]
infoMessage=
warningMessage=Put the device into bootloader mode by pressing the center nav button and reset for 2-3 seconds, then release reset, then release the nav button.<br/>After flashing is finished, press the reset button to reboot.
[lvgl]
theme=DefaultDark
colorDepth=24

View File

@ -17,10 +17,5 @@ size=1.3"
shape=rectangle
dpi=261
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -17,10 +17,5 @@ size=1.28"
shape=circle
dpi=265
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -17,10 +17,5 @@ size=1.47"
shape=rectangle
dpi=247
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -1,7 +1,6 @@
[general]
vendor=WaveShare
name=S3 Touch LCD 4.3"
incubating=false
[hardware]
target=ESP32S3
@ -17,10 +16,5 @@ size=4.3"
shape=rectangle
dpi=217
[cdn]
infoMessage=
warningMessage=
[lvgl]
theme=DefaultDark
colorDepth=16

View File

@ -5,8 +5,8 @@ from dataclasses import dataclass, asdict
import json
import shutil
verbose = False
devices_folder = "Boards"
VERBOSE = False
DEVICES_FOLDER = "Boards"
@dataclass
class IndexEntry:
@ -73,7 +73,7 @@ def read_properties_file(path):
return config
def read_device_properties(device_id):
mapping_file_path = os.path.join(devices_folder, device_id, "device.properties")
mapping_file_path = os.path.join(DEVICES_FOLDER, device_id, "device.properties")
if not os.path.isfile(mapping_file_path):
exit_with_error(f"Mapping file not found: {mapping_file_path}")
return read_properties_file(mapping_file_path)
@ -85,12 +85,20 @@ def to_manifest_chip_name(name):
return "ESP32-S2"
elif name == "esp32s3":
return "ESP32-S3"
elif name == "esp32c2":
return "ESP32-C2"
elif name == "esp32c3":
return "ESP32-C3"
elif name == "esp32c5":
return "ESP32-C5"
elif name == "esp32c6":
return "ESP32-C6"
elif name == "esp32c61":
return "ESP32-C61"
elif name == "esp32h2":
return "ESP32-H2"
elif name == "esp32h4":
return "ESP32-H4"
elif name == "esp32p4":
return "ESP32-P4"
else:
@ -126,7 +134,7 @@ def process_device(in_path: str, out_path: str, device_directory: str, device_id
in_flash_file_path = os.path.join(in_device_binaries_path, flash_file_entry)
out_flash_file_name = f"{device_id}-{flash_file_entry_name}"
out_flash_file_path = os.path.join(out_path, out_flash_file_name)
if verbose:
if VERBOSE:
print(f"Copying {in_flash_file_path} -> {out_flash_file_path}")
shutil.copy(in_flash_file_path, out_flash_file_path)
manifest.builds[0].parts.append(
@ -154,16 +162,17 @@ def main(in_path: str, out_path: str, version: str):
device_id = device_directory[10:]
device_properties = read_device_properties(device_id)
device_properties_general = device_properties["general"]
device_properties_cdn = device_properties["cdn"]
process_device(in_path, out_path, device_directory, device_id, device_properties, version)
if "warningMessage" in device_properties_cdn.keys():
warning_message = device_properties_cdn["warningMessage"]
else:
warning_message = None
if "infoMessage" in device_properties_cdn.keys():
info_message = device_properties_cdn["infoMessage"]
else:
info_message = None
if device_properties.has_section("cdn"):
device_properties_cdn = device_properties["cdn"]
if "warningMessage" in device_properties_cdn.keys():
warning_message = device_properties_cdn["warningMessage"]
else:
warning_message = None
if "infoMessage" in device_properties_cdn.keys():
info_message = device_properties_cdn["infoMessage"]
else:
info_message = None
if "incubating" in device_properties_general.keys():
incubating = device_properties_general["incubating"].lower() == 'true'
else:
@ -193,6 +202,6 @@ if __name__ == "__main__":
print_help()
sys.exit()
if "--verbose" in sys.argv:
verbose = True
VERBOSE = True
sys.argv.remove("--verbose")
main(in_path=sys.argv[1], out_path=sys.argv[2], version=sys.argv[3])

View File

@ -2,28 +2,25 @@ import os
import sys
import boto3
verbose = False
if sys.platform == "win32":
shell_color_red = ""
shell_color_orange = ""
shell_color_reset = ""
SHELL_COLOR_RED = ""
SHELL_COLOR_ORANGE = ""
SHELL_COLOR_RESET = ""
else:
shell_color_red = "\033[91m"
shell_color_orange = "\033[93m"
shell_color_reset = "\033[m"
SHELL_COLOR_RED = "\033[91m"
SHELL_COLOR_ORANGE = "\033[93m"
SHELL_COLOR_RESET = "\033[m"
def print_warning(message):
print(f"{shell_color_orange}WARNING: {message}{shell_color_reset}")
print(f"{SHELL_COLOR_ORANGE}WARNING: {message}{SHELL_COLOR_RESET}")
def print_error(message):
print(f"{shell_color_red}ERROR: {message}{shell_color_reset}")
print(f"{SHELL_COLOR_RED}ERROR: {message}{SHELL_COLOR_RESET}")
def print_help():
print("Usage: python upload-files.py [path] [version] [cloudflareAccountId] [cloudflareTokenName] [cloudflareTokenValue]")
print("")
print("Options:")
print(" --verbose Show extra console output")
print(" --index-only Upload only index.json")
def exit_with_error(message):
@ -63,9 +60,6 @@ if __name__ == "__main__":
if len(sys.argv) < 6:
print_help()
sys.exit()
if "--verbose" in sys.argv:
verbose = True
sys.argv.remove("--verbose")
main(
path=sys.argv[1],
version=sys.argv[2],

View File

@ -10,6 +10,9 @@ endif ()
function(INIT_TACTILITY_GLOBALS SDKCONFIG_FILE)
get_filename_component(SDKCONFIG_FILE_ABS ${SDKCONFIG_FILE} ABSOLUTE)
# Find the board identifier in the sdkconfig file
if (NOT EXISTS ${SDKCONFIG_FILE_ABS})
message(FATAL_ERROR "sdkconfig file not found:\nMake sure you select a device by running \"python device.py [device-id]\"\n")
endif ()
file(READ ${SDKCONFIG_FILE_ABS} sdkconfig_text)
string(REGEX MATCH "(CONFIG_TT_BOARD_ID\=\"[a-z0-9_\-]*\")" sdkconfig_board_id "${sdkconfig_text}")
if (sdkconfig_board_id STREQUAL "")

View File

@ -4,21 +4,21 @@ import sys
from configparser import ConfigParser
if sys.platform == "win32":
shell_color_red = ""
shell_color_orange = ""
shell_color_reset = ""
SHELL_COLOR_RED = ""
SHELL_COLOR_ORANGE = ""
SHELL_COLOR_RESET = ""
else:
shell_color_red = "\033[91m"
shell_color_orange = "\033[93m"
shell_color_reset = "\033[m"
SHELL_COLOR_RED = "\033[91m"
SHELL_COLOR_ORANGE = "\033[93m"
SHELL_COLOR_RESET = "\033[m"
devices_directory = "Boards"
DEVICES_DIRECTORY = "Boards"
def print_warning(message):
print(f"{shell_color_orange}WARNING: {message}{shell_color_reset}")
print(f"{SHELL_COLOR_ORANGE}WARNING: {message}{SHELL_COLOR_RESET}")
def print_error(message):
print(f"{shell_color_red}ERROR: {message}{shell_color_reset}")
print(f"{SHELL_COLOR_RED}ERROR: {message}{SHELL_COLOR_RESET}")
def exit_with_error(message):
print_error(message)
@ -26,13 +26,13 @@ def exit_with_error(message):
def print_help():
print("Usage: python device.py [device_id] [arguments]\n\n")
print(f"\t[device_id] the device identifier (folder name in {devices_directory}/)")
print(f"\t[device_id] the device identifier (folder name in {DEVICES_DIRECTORY}/)")
print("\n")
print("Optional arguments:\n")
print("\t--dev developer options (limit to 4MB partition table)")
def get_properties_file_path(device_id: str):
return os.path.join(devices_directory, device_id, "device.properties")
return os.path.join(DEVICES_DIRECTORY, device_id, "device.properties")
def read_file(path: str):
with open(path, "r") as file:
@ -169,8 +169,8 @@ def write_lvgl_variables(output_file, device_properties: ConfigParser):
color_depth = get_property_or_exit(device_properties, "lvgl", "colorDepth")
output_file.write(f"CONFIG_LV_COLOR_DEPTH={color_depth}\n")
output_file.write(f"CONFIG_LV_COLOR_DEPTH_{color_depth}=y\n")
theme = get_property_or_exit(device_properties, "lvgl", "theme")
if theme == "DefaultDark":
theme = get_property_or_none(device_properties, "lvgl", "theme")
if theme is None or theme == "DefaultDark":
output_file.write("CONFIG_LV_THEME_DEFAULT_DARK=y\n")
elif theme == "DefaultLight":
output_file.write("CONFIG_LV_THEME_DEFAULT_LIGHT=y\n")
@ -191,8 +191,8 @@ def write_iram_fix(output_file, device_properties: ConfigParser):
output_file.write("CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH=y\n")
def write_usb_variables(output_file, device_properties: ConfigParser):
has_tiny_usb = get_property_or_exit(device_properties, "hardware", "tinyUsb")
if has_tiny_usb == "true":
has_tiny_usb = get_boolean_property_or_false(device_properties, "hardware", "tinyUsb")
if has_tiny_usb:
output_file.write("# TinyUSB\n")
output_file.write("CONFIG_TINYUSB_MSC_ENABLED=y\n")
output_file.write("CONFIG_TINYUSB_MSC_MOUNT_PATH=\"/sdcard\"\n")