Skip to main content

Supported boards

JARU runs on boards with one of these four Espressif chips: ESP32, ESP32-S3, ESP32-P4 and ESP32-S31. JARU IDE comes with the JARU VM for each of them, the firmware that Flash Firmware writes, and 14 board profiles: those of 13 boards and a template.

A board profile says how a board is built: the chip, the display and its pins, the sound, the SD card and the I2C bus. To use one, open ESP32 Tools (Build › Target › Manage boards...), choose it in the Hardware Profiles list and click Apply. Step by step, in Your program on a board; what a profile holds and how to change it, in Board profiles.

The profiles are named after the board's brand and model. The tables say what each one has:

  • Display: the controller and the bus.
  • Size: the width and height of the display for your program, the ones Display.width and Display.height give after Display.open. If the profile turns the display a quarter turn (Offset Rotation 1 or 3, on the Display page), they are the other way round from Width and Height: a 240 × 320 panel is seen as 320 × 240.
  • Sound: I2S, if the profile turns it on.
  • Gamepad or keyboard: the pins of the I2C bus, the one the scene editor's I2C gamepad and the I2C drivers use, and the ESP32-S31's USB keyboard.

ESP32​

ProfileDisplaySizeSoundGamepad or keyboard
LILYGO_T4_v1.3ILI9341, SPI320 × 240——
Diymore_ESP32_2.8ILI9341, SPI240 × 320——
Binghe_ESP32_1.96ST7789, SPI170 × 320——

ESP32-S3​

ProfileDisplaySizeSoundGamepad or keyboard
JARU_JaruCadeST7789, SPI320 × 240I2SI2C bus: SDA 11, SCL 10
Waveshare_ESP32-S3-Touch-LCD-2.8ST7789, SPI320 × 240I2SI2C bus: SDA 11, SCL 10
Waveshare_ESP32-S3-Touch-AMOLED-1.8SH8601Z, QSPI368 × 448I2S—
Freenove_FNK0086ST7789, SPI240 × 320——
Freenove_FNK0104ILI9341, SPI320 × 240I2S—
LILYGO_T-Watch_S3ST7789, SPI240 × 240——
Wireless-Tag_WT32-SC01_PlusST7796, i80480 × 320——
Generic_SH8601Z_QSPI_(template)SH8601Z, QSPI368 × 448——
  • JARU_JaruCade is the JaruCade arcade: a Waveshare ESP32-S3-Touch-LCD-2.8, with or without touch, with the Adafruit Mini I2C Gamepad on its bus. Its profile is the same as the Waveshare's.
    • The examples that come with JARU IDE carry this board in the project, as JARU JaruCade. If yours is another one, open ESP32 Tools in the example, choose your board's profile, click Apply, change its name in Name and click Save Device: the example's board becomes yours. Then choose it in Build › Target.
  • Wireless-Tag_WT32-SC01_Plus has its display on an 8-bit parallel bus (i80).
  • Generic_SH8601Z_QSPI_(template) is not a board: it is a template for AMOLED displays with the SH8601Z controller over QSPI. It has the controller, the bus and the size, but no pins (see A board that is not listed).
  • Among the ESP32-S3 profiles, only the JaruCade's and the Waveshare 2.8's have an I2C bus. With the others, the scene editor's I2C gamepad doesn't start: if your board has an I2C bus, enter its pins in Storage › I2C Bus.
On the Waveshare 2.8, Power.sleep() leaves the board without USB

The Waveshare ESP32-S3-Touch-LCD-2.8, and with it the JaruCade, connects through the chip's own USB. After the first Power.sleep(), Windows reports the device as broken: the serial monitor receives nothing else and the IDE can't write to the board. Don't use Power.sleep() on this board. To recover it, start it in download mode, holding its BOOT button while you restart it, and send it another program with Run.

ESP32-P4​

ProfileDisplaySizeSoundGamepad or keyboard
Waveshare_ESP32-P4-WIFI6-Touch-LCD-4.3ST7701, MIPI-DSI480 × 800—I2C bus: SDA 7, SCL 8
Waveshare_ESP32-P4-WIFI6-Touch-LCD-4BST7703, MIPI-DSI720 × 720—I2C bus: SDA 7, SCL 8
On the ESP32-P4 and the ESP32-S31, an output pin can't be read

With GPIO.pinmode(pin, GPIO.OUTPUT), GPIO.read() of that pin always returns 0, and GPIO.onInterrupt() doesn't fire with what you write to it. On the ESP32 and the ESP32-S3 it works. If you need to know what you wrote to a pin, keep it in a variable.

All the known issues of JARU, together, are in Known issues.

ESP32-S31​

ProfileDisplaySizeSoundGamepad or keyboard
Espressif_ESP32-S31-Korvo-1ST7262, RGB800 × 480—USB keyboard
  • The USB keyboard goes in the board's USB-A port. The USB keyboard checkbox, on the Hardware page, turns it on, and the profile has it checked. Input.map uses the same key names as on Windows (see Buttons, pins and gamepad).
  • The SD card reader: the profile has its pins (MISO 20, MOSI 25, SCLK 24 and CS 23) and the one that powers it (GPIO 39, which turns it on with LOW), but has the card turned off.
  • The warning about output pins of the ESP32-P4, above, applies to the ESP32-S31 too.

What the profile does not say​

  • The SD card: every profile has it turned off (Storage page, SD Card group). If your board has a reader, turn it on there and check its pins (see Display, sound, SD and network).
  • The buttons: they are not in the profile. You map them in the program, with Input.map, or in the scene editor's controls (see Buttons, pins and gamepad).
  • Touch: the "Touch" boards have a touch screen, but JARU doesn't use it: the API has no touch functions.
  • Memory: the profile doesn't say how much RAM, PSRAM or flash the board has. The IDE reads the flash size from the board every time it writes to it; memory, in Memory and limits.

A board that is not listed​

You can make a profile for your board if its chip is one of the four (the ones in MCU model, on the Hardware page) and its display is one that the VM for that chip drives:

ChipController (Controller field)Bus
ESP32 and ESP32-S3ILI9341, ST7789, ST7796, SH8601 and SH8601ZSPI, QSPI or i80 (8-bit parallel). With any other, the VM uses SPI.
ESP32-P4ILI9341, ST7789 and ST7796 over SPI; ST7701, ST7703 and JD9365 over MIPI-DSISPI or MIPI-DSI. With any other, the VM uses SPI.
ESP32-S31A parallel RGB panel, like the Korvo-1's ST7262RGB only

ESP32 Tools offers every controller and every bus with any chip: choosing a combination the VM drives is up to you. The summary on the Deploy page warns about some that don't work: the RGB bus outside the ESP32-S31, the ESP32-S31 without the RGB bus, the MIPI-DSI bus with a controller that is not MIPI-DSI, and the SH8601 or SH8601Z without QSPI.

To make it:

  1. In ESP32 Tools, click New. If your recent projects have saved boards, New offers to copy one (From and the project's name); if not, or with Empty profile, you start a new one.
  2. In Hardware Profiles, choose the profile of a board like yours, with the same chip and, better, the same display controller, and click Apply. For an SH8601Z AMOLED display over QSPI, start from the Generic_SH8601Z_QSPI_(template) template.
  3. Enter your board's pins on the Display, Audio and Storage pages. They come from its schematic or the maker's documentation. A pin your board doesn't have stays at -1.
  4. Give it a name in Name and click Save Device.
  5. Choose it in Build › Target and click Run.

If the display stays black, open the serial monitor (Open Serial). With a controller the VM for its chip doesn't know, an ESP32-S31 without the RGB bus or, on the ESP32 and the ESP32-S3, a QSPI bus with a missing pin, the program gives the error "Display: Invalid panel/bus configuration from boot.cfg." when it opens the display. If it doesn't show up, check the bus, the pins, Invert Color and the offsets (Offset x and Offset y).

When it works, save its hardware as one more profile with Export: it will be in Hardware Profiles in all your projects, and you can give the file to others (see Choose, import and export).