Repository navigation
Conversation
The Arduino Nano ESP32 is an ESP32-S3 (NORA-W106) with 16 MB flash and 8 MB Octal PSRAM, so the chip matches ports/esp32s3. What differs is the console: the board has no USB-UART bridge chip. Its USB-C connector is wired to the ESP32-S3's own USB Serial/JTAG peripheral, so this port takes the link from the C6 (main/link_usj.c) rather than the UART that ports/esp32s3 uses. UART0 (D0/D1) is left free. The port brings its own partitions.csv (the esp32s3 layout, so offsets match), sdkconfig.defaults (Octal PSRAM, 16 MB flash, 240 MHz, console off), board.example.conf (GPIO numbers with the Arduino pin names spelled out, since TinyDesk drives the SoC directly), and a README recording the two traps this board sets: the partition table replaces the Arduino one and destroys a 9 MB spiffs volume at 0x610000, and a USB-JTAG reset is not a UART reset, so --before no_reset leaves the chip unresponsive until esptool --before usb_reset --after watchdog_reset or a power cycle. ota_esp.c gains TD_UPDATE_BOARD so a port can name its own update feed. This target is chip-identical to esp32s3, and without the override it would inherit that board's feed and offer the UART image from Software Update: a working firmware the board cannot display. The port passes "nanoesp32", which has no feed, so the check fails cleanly. The other ports are unchanged and still compile their own names. Tested on hardware (serial 206EF131675C, ESP-IDF v5.3.1) at 110x40 and 120x45: desktop and window manager (drag, resize, minimise), LittleFS file write/read/list/remove, the Editor saving to the Desktop, MicroPython (py -c, machine Pin/ADC, a tdui window with a label and a button), Network/MQTT/Modbus opening without a crash, a long paste arriving whole with no size reply, and ota official failing safe. A 13 minute soak held 40 samples with 0 dropped frames, 9 ms frame time and identical free RAM in every sample. Not covered: the Shell edition is not built for this board (USB-C belongs to the desktop, so it would need UART0 through an adapter), the network apps open but were not exercised against peers, and no OTA image was installed. Release packaging (tools/make_release.py, the web installer manifest) is left alone for the maintainer to decide. Adds ports/nanoesp32 to the CI build, the two target tables, and CONTRIBUTORS.md.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Arduino Nano ESP32 is an ESP32-S3 (NORA-W106) with 16 MB flash and 8 MB Octal PSRAM, so the chip matches ports/esp32s3. What differs is the console: the board has no USB-UART bridge chip. Its USB-C connector is wired to the ESP32-S3's own USB Serial/JTAG peripheral, so this port takes the link from the C6 (main/link_usj.c) rather than the UART that ports/esp32s3 uses. UART0 (D0/D1) is left free.
The port brings its own partitions.csv (the esp32s3 layout, so offsets match), sdkconfig.defaults (Octal PSRAM, 16 MB flash, 240 MHz, console off), board.example.conf (GPIO numbers with the Arduino pin names spelled out, since TinyDesk drives the SoC directly), and a README recording the two traps this board sets: the partition table replaces the Arduino one and destroys a 9 MB spiffs volume at 0x610000, and a USB-JTAG reset is not a UART reset, so --before no_reset leaves the chip unresponsive until esptool --before usb_reset --after watchdog_reset or a power cycle.
ota_esp.c gains TD_UPDATE_BOARD so a port can name its own update feed. This target is chip-identical to esp32s3, and without the override it would inherit that board's feed and offer the UART image from Software Update: a working firmware the board cannot display. The port passes "nanoesp32", which has no feed, so the check fails cleanly. The other ports are unchanged and still compile their own names.
Tested on hardware (serial 206EF131675C, ESP-IDF v5.3.1) at 110x40 and 120x45: desktop and window manager (drag, resize, minimise), LittleFS file write/read/list/remove, the Editor saving to the Desktop, MicroPython (py -c, machine Pin/ADC, a tdui window with a label and a button), Network/MQTT/Modbus opening without a crash, a long paste arriving whole with no size reply, and ota official failing safe. A 13 minute soak held 40 samples with 0 dropped frames, 9 ms frame time and identical free RAM in every sample.
Not covered: the Shell edition is not built for this board (USB-C belongs to the desktop, so it would need UART0 through an adapter), the network apps open but were not exercised against peers, and no OTA image was installed. Release packaging (tools/make_release.py, the web installer manifest) is left alone for the maintainer to decide.
Adds ports/nanoesp32 to the CI build, the two target tables, and CONTRIBUTORS.md.