{"id":43176407,"url":"https://github.com/pibsas/micropython_lilygo_tdisplay_s3_smartconfig","last_synced_at":"2026-05-01T04:02:56.155Z","repository":{"id":268140733,"uuid":"903439079","full_name":"PIBSAS/MicroPython_LiLyGo_TDisplay_S3_SmartConfig","owner":"PIBSAS","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-01T16:11:41.000Z","size":13061,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-01T22:54:23.143Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PIBSAS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-12-14T15:55:21.000Z","updated_at":"2026-04-01T16:03:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"1dde10e5-e57f-4e48-9f93-51e0bf153dd1","html_url":"https://github.com/PIBSAS/MicroPython_LiLyGo_TDisplay_S3_SmartConfig","commit_stats":null,"previous_names":["pibsas/micropython_lilygo_tdisplay_s3_smartconfig"],"tags_count":56,"template":false,"template_full_name":"PIBSAS/MicroPython_LilyGO_T_Display_S3_with_S3LCD","purl":"pkg:github/PIBSAS/MicroPython_LiLyGo_TDisplay_S3_SmartConfig","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PIBSAS%2FMicroPython_LiLyGo_TDisplay_S3_SmartConfig","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PIBSAS%2FMicroPython_LiLyGo_TDisplay_S3_SmartConfig/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PIBSAS%2FMicroPython_LiLyGo_TDisplay_S3_SmartConfig/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PIBSAS%2FMicroPython_LiLyGo_TDisplay_S3_SmartConfig/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PIBSAS","download_url":"https://codeload.github.com/PIBSAS/MicroPython_LiLyGo_TDisplay_S3_SmartConfig/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PIBSAS%2FMicroPython_LiLyGo_TDisplay_S3_SmartConfig/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32484353,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-01T03:06:39.477Z","updated_at":"2026-05-01T04:02:56.148Z","avatar_url":"https://github.com/PIBSAS.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MicroPython + S3LCD para LilyGo T-Display S3 ESP32-S3-WROOM-1-N16R8\n\n## Datasheet:\n\n- [ESP-S3-WROOM-1/1U](https://www.espressif.com/sites/default/files/documentation/esp32-s3-wroom-1_wroom-1u_datasheet_en.pdf)\n\n## Docs:\n- [ESP-S3 User Guide DevKitC v1.1](https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32s3/user-guide-devkitc-1.html)\n\n![LilyGO T-Display S3](T-DISPLAY-S3.jpg)\n\n## ESP-IDF:\n- [ESP-IDF](https://docs.espressif.com/projects/esp-idf/en/stable/esp32s3/get-started/linux-macos-setup.html)\n  \n## MicroPython\n- [MicroPython](https://github.com/micropython/micropython/blob/master/ports/esp32/README.md)\n\n\n# MicroPython LilyGO T-Display S3 + S3LCD Driver\n\n# Probado en -- Tested on Ubuntu WSL 2024:\n\n- ```bash\n  wsl --install Ubuntu\n  ```\n![Wsl](media/Wsl.png)\n\n### Una vez instalado Ubuntu -- Once Installed Ubuntu:\n\n#### Actualizar e instalar requerimientos -- Update and Install Requirements:\n\n- ```bash\n  sudo apt update \u0026\u0026 sudo apt upgrade -y\n  ```\n  ![Update](media/Update.png)\n  \n- ```bash\n  sudo apt install -y build-essential git wget flex bison gperf pkg-config python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0\n  ```\n  ![Dependencias](media/Dependencies.png)\n\n\n### Clonar ésta repo -- Clone this repo, MicroPython y ESP-IDF compatible con MicroPython(En la actualidad \"Micropython 1.24\" 5.04 a 5.2.2):\n\n- ```bash\n  git clone https://github.com/PIBSAS/MicroPython_LilyGO_T_Display_S3.git\n  ```\n  ![Clone Repo](media/Clone_Repo.png)\n  \n- ```bash\n  git clone https://github.com/micropython/micropython.git\n  ```\n  ![Clone Micropython](media/Clone_Micropython.png)\n\n\n### ESP-IDF v5.0.4:\n- ```bash\n  mkdir esp\n  cd esp\n  git clone -b v5.0.4 --recursive https://github.com/espressif/esp-idf.git\n  ```\n  ![Clone ESP-IDF](media/Clone_ESP-IDF.png)\n\n\n### ESP-IDF v5.2:\n- ```bash\n  mkdir esp\n  cd esp\n  git clone -b v5.2 --recursive https://github.com/espressif/esp-idf.git\n  ```\n\n\n### ESP-IDF v5.2.2:\n- ```bash\n  mkdir esp\n  cd esp\n  git clone -b v5.2.2 --recursive https://github.com/espressif/esp-idf.git\n  ```\n\n\n### Instalar CMake mediante -- Install CMake with ``idf_tools.py``:\n\n- ```bash\n  cd esp-idf/tools\n  ```\n  \n- ```bash\n  python3 idf_tools.py install cmake\n  ```\n  ![CMAKE Install](media/CMAKE_Install.png)\n\n### Regresar un directorio y ejecutar el script para ESP32S3 -- Back a directory and execute the Script for ESP32S3:\n\n- ```bash\n  cd ..\n  ./install.sh esp32s3\n  ```\n  ![Install](media/Install.png)\n  \n### Ejecutar -- Run:\n- ```bash\n  . ./export.sh\n  ```\n![Export Script](media/Export.png)\n\n### Copiar el directorio ``ESP32_GENERIC_S3_N16R8`` y su contenido al directorio boards -- Copy recursively ``ESP32_GENERIC_S3_N16R8`` folder and his content to boards folder:\n\n- ```bash\n  cd\n  cp -r ESP32-S3-WROOM-1-N16R8/ESP32_GENERIC_S3_N16R8 micropython/ports/esp32/boards\n  ```\n![Copy](media/Copy_Repo.png)\n\n### Dirigirnos al directorio MicroPython y ejecutar mpy-cross -- Go to MicroPython folder and run mpy-cross:\n\n- ```bash\n  cd\n  cd micropython/\n  make -C mpy-cross\n  ```\n![Make Mpy](media/Make.png)\n\n### Indicar el ``IDF_TARGET`` -- Indicate ``IDF_TARGET``:\n\n- ```bash\n  export IDF_TARGET=esp32s3\n  ```\n![IDF-Target](media/IDF_Target.png)\n\n### Movernos a -- Move to ```ports/esp32```:\n\n- ```bash\n  cd ports/esp32/\n  ```\n\n### Compilar MicroPython para ESP32 S3 -- Compile MicroPython for ESP32 S3:\n\n- ```bash\n  make BOARD=ESP32_GENERIC_S3_N16R8 submodules\n  ```\n- ```bash\n  make BOARD=ESP32_GENERIC_S3_N16R8\n  ```\n![Makes](media/Makes.png)\n\n#### Al final con ESP-IDF v5.0.4 nos indica -- At the end show us with ESP-IDF v5.0.4:\n\n- Project build complete. To flash, run this command:\n- ```bash\n  $HOME/.espressif/python_env/idf5.0_py3.10_env/bin/python ../../../esp/esp-idf/components/esptool_py/esptool/esptool.py -p (PORT) -b 460800 --before default_reset --after no_reset --chip esp32s3  write_flash --flash_mode dio --flash_size 16MB --flash_freq 80m 0x0 build-ESP32_GENERIC_S3_N16R8/bootloader/bootloader.bin 0x8000 build-ESP32_GENERIC_S3_N16R8/partition_table/partition-table.bin 0x10000 build-ESP32_GENERIC_S3_N16R8/micropython.bin\n  ```\n![Success-Changed to new name folder](media/Success.png)\n\n#### Or run 'idf.py -p (PORT) flash':\n\n| bootloader  |  @0x000000  |  18672  (   14096 remaining)  |\n|-------------|-------------|-------------------------------|\n| partitions  | @0x008000   |   3072  (    1024 remaining)  |\n| application | @0x010000   | 1396208  (  635408 remaining) |\n| total       |             | 1461744                       |\n\n- Se debe cambiar ``(PORT)`` por ``COM29`` por ejemplo o en linux ``/dev/ttyACM0``\n\n\n#### Al final con ESP-IDF v5.2 nos indica -- At the end show us with ESP-IDF v5.2:\n\n- Project build complete. To flash, run this command:\n- ```bash\n  python -m esptool --chip esp32s3 -b 460800 --before default_reset --after no_reset write_flash --flash_mode dio --flash_size 16MB --flash_freq 80m 0x0 build-ESP32_GENERIC_S3_N16R8/bootloader/bootloader.bin 0x8000 build-ESP32_GENERIC_S3_N16R8/partition_table/partition-table.bin 0x10000 build-ESP32_GENERIC_S3_N16R8/micropython.bin\n  ```\n![Success](media/Success_ESP-IDFv5.2.png)\n\n#### Al final con ESP-IDF v5.2.2 nos indica -- At the end show us with ESP-IDF v5.2.2:\n\n- Project build complete. To flash, run this command:\n- ```bash\n  python -m esptool --chip esp32s3 -b 460800 --before default_reset --after no_reset write_flash --flash_mode dio --flash_size 16MB --flash_freq 80m 0x0 build-ESP32_GENERIC_S3_N16R8/bootloader/bootloader.bin 0x8000 build-ESP32_GENERIC_S3_N16R8/partition_table/partition-table.bin 0x10000 build-ESP32_GENERIC_S3_N16R8/micropython.bin\n  ```\n  \n# Windows:\n\n## ESP-IDF v5.0.4:\n### Borramos la flash -- Erase flash:\n- ```bash\n  $HOME/.espressif/python_env/idf5.0_py3.10_env/bin/python ../../../esp/esp-idf/components/esptool_py/esptool/esptool.py -p /dev/ttyACM0 erase_flash\n  ```\n![Erase Flash](media/Erase.png)\n\n### Luego flasheamos -- Then flash:\n- ```bash\n  $HOME/.espressif/python_env/idf5.0_py3.10_env/bin/python ../../../esp/esp-idf/components/esptool_py/esptool/esptool.py -p COM29 -b 460800 --before default_reset --after no_reset --chip esp32s3  write_flash --flash_mode dio --flash_size 16MB --flash_freq 80m 0x0 build-ESP32_GENERIC_S3_N16R8/bootloader/bootloader.bin 0x8000 build-ESP32_GENERIC_S3_N16R8/partition_table/partition-table.bin 0x10000 build-ESP32_GENERIC_S3_N16R8/micropython.bin\n  ```\n![Flash](media/Flash.png)\n\n## ESP-IDF v5.2:\n\n- ```bash\n  python -m esptool --chip esp32s3 -b 460800 --before default_reset --after no_reset write_flash --flash_mode dio --flash_size 16MB --flash_freq 80m 0x0 build-ESP32_GENERIC_S3_N16R8/bootloader/bootloader.bin 0x8000 build-ESP32_GENERIC_S3_N16R8/partition_table/partition-table.bin 0x10000 build-ESP32_GENERIC_S3_N16R8/micropython.bin\n  ```\n\n## ESP-IDF v5.2.2:\n\n- ```bash\n  python -m esptool --chip esp32s3 -b 460800 --before default_reset --after no_reset write_flash --flash_mode dio --flash_size 16MB --flash_freq 80m 0x0 build-ESP32_GENERIC_S3_N16R8/bootloader/bootloader.bin 0x8000 build-ESP32_GENERIC_S3_N16R8/partition_table/partition-table.bin 0x10000 build-ESP32_GENERIC_S3_N16R8/micropython.bin\n  ```\n\n# WSL:\n\n## Instalar -- Install USBIPD:\n\n- ```bash\n  winget install --interactive --exact dorssel.usbipd-win\n  ```\n\n### Abrir Terminal(Administrador) conectar el ESP32 y escribir -- Open Terminasl(Admin) plug ESP32 and type:\n\n- ```bash\n  usbipd list\n  ```\n- Observar el -- See ``BUSID`` del -- of esp ``(USB-Enhanced-SERIAL CH343 (COM29)``. Ej: ``2-1``\n\n### Escribir -- Type:\n\n- ```bash\n  usbipd bind --busid 2-1\n  ```\n\n- ```bash\n  usbipd attach --wsl --busid 2-1\n  ```\n\n### En WSL Ubuntu(Distro) agregar el usuario al grupo ``dialout`` -- On WSL Ubuntu add user to ``dialout`` group:\n\n- ```bash\n  sudo adduser $USER dialout\n  ```\n\n### En Terminal(Administrador) Comprobar que figure ``Attached`` en la columna ``STATE`` con -- On Teminal(Admin) Verify ``Attached`` on ``STATE`` column with:\n\n- ```bash\n  usbipd list\n  ```\n## ESP-IDF v5.0.4:\n### Luego en WSL borramos la flash -- Then on WSL erase the flash:\n\n- ```bash\n  $HOME/.espressif/python_env/idf5.0_py3.10_env/bin/python ../../../esp/esp-idf/components/esptool_py/esptool/esptool.py -p /dev/ttyACM0 erase_flash\n  ```\n  \n### Luego flasheamos -- Then flash:\n- ```bash\n  $HOME/.espressif/python_env/idf5.0_py3.10_env/bin/python ../../../esp/esp-idf/components/esptool_py/esptool/esptool.py -p /dev/ttyACM0 -b 460800 --before default_reset --after no_reset --chip esp32s3  write_flash --flash_mode dio --flash_size 16MB --flash_freq 80m 0x0 build-ESP32_GENERIC_S3_N16R8/bootloader/bootloader.bin 0x8000 build-ESP32_GENERIC_S3_N16R8/partition_table/partition-table.bin 0x10000 build-ESP32_GENERIC_S3_N16R8/micropython.bin\n  ```\n\n## ESP-IDF v5.2:\n- ```bash\n  python -m esptool --chip esp32s3 -b 460800 --before default_reset --after no_reset write_flash --flash_mode dio --flash_size 16MB --flash_freq 80m 0x0 build-ESP32_GENERIC_S3_N16R8/bootloader/bootloader.bin 0x8000 build-ESP32_GENERIC_S3_N16R8/partition_table/partition-table.bin 0x10000 build-ESP32_GENERIC_S3_N16R8/micropython.bin\n  ```  \n\n## ESP-IDF v5.2.2:\n- ```bash\n  python -m esptool --chip esp32s3 -b 460800 --before default_reset --after no_reset write_flash --flash_mode dio --flash_size 16MB --flash_freq 80m 0x0 build-ESP32_GENERIC_S3_N16R8/bootloader/bootloader.bin 0x8000 build-ESP32_GENERIC_S3_N16R8/partition_table/partition-table.bin 0x10000 build-ESP32_GENERIC_S3_N16R8/micropython.bin\n  ```  \n\n#### After flash detach the board with usbipd so is available for Windows:\n- ```bash\n  usbipd detach --busid 2-1\n  ```  \n\n# Linux:\n\n- ```bash\n  $HOME/.espressif/python_env/idf5.0_py3.10_env/bin/python ../../../esp/esp-idf/components/esptool_py/esptool/esptool.py -p /dev/ttyACM0 erase_flash\n  ```\n- ```bash\n  $HOME/.espressif/python_env/idf5.0_py3.10_env/bin/python ../../../esp/esp-idf/components/esptool_py/esptool/esptool.py -p /dev/ttyACM0 -b 460800 --before default_reset --after no_reset --chip esp32s3  write_flash --flash_mode dio --flash_size 16MB --flash_freq 80m 0x0 build-ESP32_GENERIC_S3_N16R8/bootloader/bootloader.bin 0x8000 build-ESP32_GENERIC_S3_N16R8/partition_table/partition-table.bin 0x10000 build-ESP32_GENERIC_S3_N16R8/micropython.bin\n  ```\n\n## Reference\n\n- [micropython/micropython/issues/8635](https://github.com/micropython/micropython/issues/8635#issuecomment-1129218506)\n\n# The Lazy way:\n- Just Download the bin Firmware files.\n\n\u003e :warning: Files need to be where is esptool or type full path of files ⚠️\n\n## Install ESPtool:\n- ```bash\n  pip install esptool\n  ```\n\n### Replace (PORT)\"Doesn't need port\", with yours Linux: /dev/ttyACM0 Windows: COM12 (After com goes the number detected on your pc)\n\n### Erase flash:\n- Linux(On Ubuntu python3 instead just python): ````python -m esptool erase_flash````\n- Windows: ````python -m esptool erase_flash````\n- Windows with Virtual Environment: ````esptool erase_flash````\n\n\n### Flash:\n- ```bash\n  python -m esptool -b 460800 --before default_reset --after no_reset --chip esp32s3  write_flash --flash_mode dio --flash_size 16MB --flash_freq 80m 0x0 bootloader/bootloader.bin 0x8000 partition_table/partition-table.bin 0x10000 micropython.bin\n  ```\n\n#### Windows with Virtual Environment:\n- ```bash\n  esptool -b 460800 --before default_reset --after no_reset --chip esp32s3  write_flash --flash_mode dio --flash_size 16MB --flash_freq 80m 0x0 bootloader/bootloader.bin 0x8000 partition_table/partition-table.bin 0x10000 micropython.bin\n  ```\n\n\n\u003e :warning: For pip on newest OSes you need to make virtual environment:\n\n### Windows:\n- ```bash\n  python -m venv esp-env\n  ```\nor\n- ```bash\n  py -m venv esp-env\n  .\\esp-env\\Scripts\\activate\nOnce activated install esptool:\n- (esp-env)PS C:....\u003e ```pip install esptool```\n\n### NOTE IN WINDOWS:\n- If you get a PowerShell Scripts Policy Execution Exception that don't let you activate the Virtual Environment:\n\n ````bash\n.\\esp-env\\Scripts\\activate\n````\n\n- Then open a Terminal like Administrator and type:\n\n````bash\nSet-ExecutionPolicy Unrestricted\n````\n- Close the Terminal now you can activate the Python Virtual Environment.\n\n---\n\n\n### Linux:\n- ```bash\n  python .m venv esp-env\n  source esp-env/bin/activate\n  ```\nOnce activated install esptool:\n- (esp-env) ...$: ```pip install esptool```\n\n### ESP Tool Docs:\n- [ESP Tool Documentation](https://docs.espressif.com/projects/esptool/en/latest/esp32s3/esptool/index.html#esptool)\n\n### If you want add Libraries to your build, then copy them to ``micropython/ports/esp32/modules/`` folder all ``*.py`` you want, look the space left, becarefull.\n\n# Smartconfig Apps from:\n- [ESP-Touch for Android](https://www.espressif.com/en/support/download/apps)\n- [ESP-Touch for iOS](https://www.espressif.com/en/support/download/apps)\n- Smartconfig example in [examples](examples/smart.py) folder in this repo.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpibsas%2Fmicropython_lilygo_tdisplay_s3_smartconfig","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpibsas%2Fmicropython_lilygo_tdisplay_s3_smartconfig","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpibsas%2Fmicropython_lilygo_tdisplay_s3_smartconfig/lists"}