Skip to content

Arduino Matrix Portal ESP32-s3 support added#127

Open
haeberle wants to merge 2 commits intoPPUC:mainfrom
haeberle:ADAFRUIT_MATRIXPORTAL_ESP32S3
Open

Arduino Matrix Portal ESP32-s3 support added#127
haeberle wants to merge 2 commits intoPPUC:mainfrom
haeberle:ADAFRUIT_MATRIXPORTAL_ESP32S3

Conversation

@haeberle
Copy link

@haeberle haeberle commented Mar 9, 2026

Summary

Add support for the Adafruit Matrix Portal ESP32-S3 board.

Changes

  • Added configuration for the Adafruit Matrix Portal ESP32-S3 board
  • Integrated board definitions and settings required for building and running on this hardware
  • Ensured compatibility with the existing build configuration

Motivation

This allows the project to run on the Adafruit Matrix Portal ESP32-S3, enabling users to use this board with the existing functionality.

Testing

  • Built the project targeting the Adafruit Matrix Portal ESP32-S3
  • Verified that the firmware compiles successfully

Notes

During testing, filesystem uploads to ESP32 repeatedly failed with the default partitions configuration. Decreasing the partitions size to 6 MB resolved the issue.

If maintainers prefer a different naming convention or configuration structure for new boards, I am happy to adjust the implementation.

@haeberle haeberle closed this Mar 9, 2026
@haeberle haeberle reopened this Mar 9, 2026
@haeberle haeberle closed this Mar 9, 2026
@haeberle haeberle deleted the ADAFRUIT_MATRIXPORTAL_ESP32S3 branch March 9, 2026 17:30
@haeberle haeberle restored the ADAFRUIT_MATRIXPORTAL_ESP32S3 branch March 9, 2026 19:06
@haeberle haeberle reopened this Mar 9, 2026
Copy link
Member

@mkalkbrenner mkalkbrenner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

format the code with clang

#else
Serial.setRxBufferSize(usbPackageSize + 128);
Serial.setTxBufferSize(64);
Serial.setRxBufferSize(64);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't overwrite the previous line

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed, pls. review

GetDisplayDriver()->DisplayText("zedmd-wifi.local", 0, TOTAL_HEIGHT - 5, 0, 0,
0, true);

Serial.print("Start webserver ");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't print debug messages over the serial interface.
Same for following Serial.print commands.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed, followings too

src/main.cpp Outdated
return 0;
}

void PrintFileSystem(fs::FS &fs, const char * dirname, uint8_t depth) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove that function.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

platformio.ini Outdated
;debug_tool = esp-builtin
;debug_init_break = tbreak setup
;build_type = debug
monitor_port = COM8
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

platformio.ini Outdated
;debug_init_break = tbreak setup
;build_type = debug
monitor_port = COM8
upload_port = COM9
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

platformio.ini Outdated
;build_type = debug
monitor_port = COM8
upload_port = COM9
monitor_speed = 115200
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

platformio.ini Outdated
-DDISPLAY_LED_MATRIX=1
-DARDUINO_ADAFRUIT_MATRIXPORTAL_ESP32S3=1
-DPIXEL_COLOR_DEPTH_BITS=8
-DZEDMD_WIFI_ONLY=1 No newline at end of file
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it really WiFi only? Why is USB not supported?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wrong setting, USB support is now included.

Copy link
Member

@mkalkbrenner mkalkbrenner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your work on this. We are close.


[platformio]
default_envs = S3-N16R8_128x32
default_envs = MatrixPortalS3_128x32
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't change the default

framework = arduino
platform = https://github.com/pioarduino/platform-espressif32/releases/download/stable/platform-espressif32.zip
;platform = https://github.com/pioarduino/platform-espressif32/releases/download/stable/platform-espressif32.zip
platform = https://github.com/pioarduino/platform-espressif32/releases/download/55.03.37/platform-espressif32.zip
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is that really required?
We build on github and it doesn't cache, so stable will always pull the latest stable.

#ifdef BOARD_HAS_PSRAM
buffers[i] = (uint8_t *)heap_caps_malloc(
BUFFER_SIZE, MALLOC_CAP_SPIRAM | MALLOC_CAP_32BIT);

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove

#endif

pinMode(FORWARD_BUTTON_PIN, INPUT_PULLUP);

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove


// Serve index.html
server->on("/", HTTP_GET, [](AsyncWebServerRequest* request) {

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove

#if defined(DISPLAY_LED_MATRIX) && defined(ESP_BUILD)

#include "Esp32LedMatrix.h"
#include <HardwareSerial.h>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that this include could be removed.

@mkalkbrenner
Copy link
Member

#131 seems to achieve the same with less code changes. Actually, the only real change beside using a different pinout is to deactivate Serial.setTxBufferSize(64);.
@haeberle can you test the version of the other PR?
From my maintainer perspective, the other PR better fits in our existing system.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants